REST Resource: projects.messages

リソース: メッセージ

Firebase Cloud Messaging Service によって送信されるメッセージ。

JSON表現
{
  "name": string,
  "data": {
    string: string,
    ...
  },
  "notification": {
    object (Notification)
  },
  "android": {
    object (AndroidConfig)
  },
  "webpush": {
    object (WebpushConfig)
  },
  "apns": {
    object (ApnsConfig)
  },
  "fcm_options": {
    object (FcmOptions)
  },

  // Union field target can be only one of the following:
  "token": string,
  "topic": string,
  "condition": string
  // End of list of possible types for union field target.
}
田畑
name

string

出力のみ。送信されたメッセージの識別子projects/*/messages/{message_id}の形式)。

data

map (key: string, value: string)

入力のみ。任意のキー/値ペイロード。UTF-8 でエンコードする必要があります。キーは予​​約語 (「from」、「message_type」、または「google」または「gcm」で始まる単語) であってはなりません。データ フィールドのみを含むペイロードを iOS デバイスに送信する場合、 ApnsConfigでは通常の優先度 ( "apns-priority": "5" ) のみが許可されます。

"key": valueペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

notification

object ( Notification )

入力のみ。すべてのプラットフォームで使用できる基本的な通知テンプレート。

android

object ( AndroidConfig )

入力のみ。 FCM 接続サーバー経由で送信されるメッセージの Android 固有のオプション。

webpush

object ( WebpushConfig )

入力のみ。 Webpush プロトコルのオプション。

apns

object ( ApnsConfig )

入力のみ。 Apple プッシュ通知サービス固有のオプション。

fcm_options

object ( FcmOptions )

入力のみ。すべてのプラットフォームで使用する FCM SDK 機能オプションのテンプレート。

ユニオンフィールドtarget 。必須。入力のみ。メッセージを送信するターゲット。 target次のいずれか 1 つだけです。
token

string

メッセージの送信先の登録トークン。

topic

string

メッセージの送信先のトピック名 (例: 「天気」)。注: 「/topics/」プレフィックスを指定しないでください。

condition

string

メッセージの送信先の条件。たとえば、「トピック内の 'foo' && トピック内の 'bar'」。

通知

すべてのプラットフォームで使用できる基本的な通知テンプレート。

JSON表現
{
  "title": string,
  "body": string,
  "image": string
}
田畑
title

string

通知のタイトル。

body

string

通知の本文。

image

string

デバイスにダウンロードされて通知に表示される画像の URL が含まれます。 JPEG、PNG、BMP はプラットフォーム間で完全にサポートされています。アニメーション GIF とビデオは iOS でのみ動作します。 WebP と HEIF は、プラットフォームおよびプラットフォームのバージョンごとにさまざまなレベルのサポートを提供します。 Android には 1MB の画像サイズ制限があります。 Firebase Storage でイメージをホスティングする場合のクォータの使用量と影響/コスト: https://firebase.google.com/pricing

AndroidConfig

FCM 接続サーバー経由で送信されるメッセージの Android 固有のオプション。

JSON表現
{
  "collapse_key": string,
  "priority": enum (AndroidMessagePriority),
  "ttl": string,
  "restricted_package_name": string,
  "data": {
    string: string,
    ...
  },
  "notification": {
    object (AndroidNotification)
  },
  "fcm_options": {
    object (AndroidFcmOptions)
  },
  "direct_boot_ok": boolean
}
田畑
collapse_key

string

配信を再開できるときに最後のメッセージのみが送信されるように、折りたたむことができるメッセージのグループの識別子。いつでも最大 4 つの異なる折りたたみキーを使用できます。

priority

enum ( AndroidMessagePriority )

メッセージの優先度。 「標準」値と「高」値を取ることができます。詳細については、 「メッセージの優先度の設定」を参照してください。

ttl

string ( Duration format)

デバイスがオフラインの場合にメッセージを FCM ストレージに保持する期間 (秒単位)。サポートされる最大生存期間は 4 週間で、設定されていない場合のデフォルト値は 4 週間です。メッセージをすぐに送信したい場合は、0 に設定します。 JSON 形式では、Duration タイプはオブジェクトではなく文字列としてエンコードされます。文字列は接尾語 "s" (秒を示す) で終わり、その前に秒数が続きます (ナノ秒は小数秒として表されます)。たとえば、0 ナノ秒の 3 秒は「3s」として JSON 形式でエンコードする必要があり、3 秒と 1 ナノ秒は JSON 形式で「3.000000001s」として表現する必要があります。 ttl は秒単位で切り捨てられます。

s 」で終わる最大 9 桁の小数点以下の秒単位の期間。例: "3.5s"

restricted_package_name

string

メッセージを受信するために登録トークンが一致する必要があるアプリケーションのパッケージ名。

data

map (key: string, value: string)

任意のキー/値ペイロード。存在する場合、 google.firebase.fcm.v1.Message.dataをオーバーライドします。

"key": valueペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

notification

object ( AndroidNotification )

Android デバイスに送信する通知。

fcm_options

object ( AndroidFcmOptions )

FCM SDK for Android によって提供される機能のオプション。

direct_boot_ok

boolean

true に設定すると、デバイスがダイレクト ブート モードにあるときに、メッセージをアプリに配信することが許可されます。 「ダイレクト ブート モードのサポート」を参照してください。

Androidメッセージ優先度

Android デバイスに送信するメッセージの優先順位。この優先順位は、メッセージがいつ配信されるかを制御する FCM の概念であることに注意してください。 FCM ガイドを参照してください。さらに、 AndroidNotification.NotificationPriorityを使用して、対象の Android デバイスでの通知表示の優先順位を決定できます。

列挙型
NORMALデータメッセージのデフォルトの優先度。通常の優先度のメッセージは、スリープ状態のデバイスではネットワーク接続を開かず、バッテリーを節約するために配信が遅れる可能性があります。新しい電子メールや同期するその他のデータの通知など、時間に依存しないメッセージの場合は、通常の配信優先順位を選択します。
HIGH通知メッセージのデフォルトの優先度。 FCM は優先度の高いメッセージをすぐに配信しようとし、FCM サービスが可能な場合にスリープ状態のデバイスを起動し、アプリ サーバーへのネットワーク接続を開くことができるようにします。たとえば、インスタント メッセージング、チャット、または音声通話アラートを備えたアプリでは、通常、ネットワーク接続を開き、FCM がメッセージを遅延なくデバイスに配信することを確認する必要があります。メッセージがタイムクリティカルであり、ユーザーの即時操作が必要な場合は、優先度を高く設定します。ただし、メッセージの優先度を高に設定すると、通常の優先度のメッセージに比べてバッテリーの消耗が大きくなることに注意してください。

Android通知

Android デバイスに送信する通知。

JSON表現
{
  "title": string,
  "body": string,
  "icon": string,
  "color": string,
  "sound": string,
  "tag": string,
  "click_action": string,
  "body_loc_key": string,
  "body_loc_args": [
    string
  ],
  "title_loc_key": string,
  "title_loc_args": [
    string
  ],
  "channel_id": string,
  "ticker": string,
  "sticky": boolean,
  "event_time": string,
  "local_only": boolean,
  "notification_priority": enum (NotificationPriority),
  "default_sound": boolean,
  "default_vibrate_timings": boolean,
  "default_light_settings": boolean,
  "vibrate_timings": [
    string
  ],
  "visibility": enum (Visibility),
  "notification_count": integer,
  "light_settings": {
    object (LightSettings)
  },
  "image": string,
}
田畑
title

string

通知のタイトル。存在する場合、 google.firebase.fcm.v1.Notification.titleをオーバーライドします。

body

string

通知の本文。存在する場合、 google.firebase.fcm.v1.Notification.bodyをオーバーライドします。

icon

string

通知のアイコン。通知アイコンをドローアブル リソース myicon の myicon に設定します。リクエストでこのキーを送信しない場合、FCM はアプリ マニフェストで指定されたランチャー アイコンを表示します。

color

string

通知のアイコンの色。#rrggbb 形式で表されます。

sound

string

デバイスが通知を受信したときに再生される音。 「デフォルト」またはアプリにバンドルされているサウンドリソースのファイル名をサポートします。サウンド ファイルは /res/raw/ に存在する必要があります。

tag

string

通知ドロワー内の既存の通知を置き換えるために使用される識別子。指定しない場合、リクエストごとに新しい通知が作成されます。指定した場合、同じタグを持つ通知がすでに表示されている場合、通知ドロワー内の既存の通知が新しい通知に置き換えられます。

click_action

string

ユーザーが通知をクリックすることに関連付けられたアクション。指定した場合、ユーザーが通知をクリックすると、一致するインテント フィルターを持つアクティビティが起動されます。

body_loc_key

string

本文テキストをユーザーの現在のローカライズにローカライズするために使用する、アプリの文字列リソース内の本文文字列へのキー。詳細については、 「文字列リソース」を参照してください。

body_loc_args[]

string

body_loc_key の形式指定子の代わりに使用され、本文テキストをユーザーの現在のローカライズにローカライズするために使用される変数文字列値。詳細については、 「書式設定とスタイル設定」を参照してください。

title_loc_key

string

タイトル テキストをユーザーの現在のローカライズにローカライズするために使用する、アプリの文字列リソース内のタイトル文字列へのキー。詳細については、 「文字列リソース」を参照してください。

title_loc_args[]

string

タイトル テキストをユーザーの現在のローカライズにローカライズするために使用する、title_loc_key の形式指定子の代わりに使用される変数文字列値。詳細については、 「書式設定とスタイル設定」を参照してください。

channel_id

string

通知のチャネル ID (Android O の新機能)。このチャネル ID を持つ通知を受信する前に、アプリはこのチャネル ID を持つチャネルを作成する必要があります。リクエストでこのチャネル ID を送信しない場合、または指定されたチャネル ID がアプリによってまだ作成されていない場合、FCM はアプリのマニフェストで指定されたチャネル ID を使用します。

ticker

string

ユーザー補助サービスに送信される「ティッカー」テキストを設定します。 API レベル 21 ( Lollipop ) より前では、通知が最初に到着したときにステータス バーに表示されるテキストを設定します。

sticky

boolean

false に設定するか未設定の場合、ユーザーがパネル内で通知をクリックすると、通知は自動的に閉じられます。 true に設定すると、ユーザーが通知をクリックしても通知が維持されます。

event_time

string ( Timestamp format)

通知内のイベントが発生した時刻を設定します。パネル内の通知はこの時間で並べ替えられます。時点はprotobuf.Timestampを使用して表されます。

RFC3339 UTC「Zulu」形式のタイムスタンプ。ナノ秒の分解能と最大 9 桁の小数点以下を備えています。例: "2014-10-02T15:01:23Z"および"2014-10-02T15:01:23.045123456Z"

local_only

boolean

この通知が現在のデバイスのみに関連するかどうかを設定します。一部の通知は、Wear OS ウォッチなどのリモート表示用に他のデバイスにブリッジできます。このヒントは、この通知をブリッジしないことを推奨するように設定できます。 Wear OS ガイドを参照

notification_priority

enum ( NotificationPriority )

この通知の相対的な優先度を設定します。優先度は、この通知によってユーザーの注意がどの程度消費されるべきかを示します。特定の状況では、優先度の低い通知がユーザーに表示されなくなり、優先度の高い通知のためにユーザーが中断される場合があります。同じ優先順位を設定した場合の効果は、プラットフォームが異なると若干異なる場合があります。この優先順位はAndroidMessagePriorityとは異なることに注意してください。この優先度はメッセージの配信後にクライアントによって処理されますが、 AndroidMessagePriority はメッセージがいつ配信されるかを制御する FCM の概念です。

default_sound

boolean

true に設定すると、Android フレームワークのデフォルトのサウンドが通知に使用されます。デフォルト値はconfig.xmlで指定されます。

default_vibrate_timings

boolean

true に設定すると、Android フレームワークのデフォルトの振動パターンが通知に使用されます。デフォルト値はconfig.xmlで指定されます。 default_vibrate_timingsが true に設定され、 vibrate_timingsも設定されている場合、ユーザー指定のvibrate_timingsの代わりにデフォルト値が使用されます。

default_light_settings

boolean

true に設定すると、Android フレームワークのデフォルトの LED ライト設定が通知に使用されます。デフォルト値はconfig.xmlで指定されます。 default_light_settingsが true に設定され、 light_settingsも設定されている場合、デフォルト値の代わりにユーザー指定のlight_settingsが使用されます。

vibrate_timings[]

string ( Duration format)

使用する振動パターンを設定します。 protobuf.Durationの配列を渡して、バイブレーターをオンまたはオフにします。最初の値は、バイブレーターをオンにするまでの待機Durationを示します。次の値は、バイブレーターをオンにし続けるDurationを示します。後続の値は、バイブレーターをオフにするDurationとバイブレーターをオンにする期間を交互に切り替えます。 vibrate_timingsが設定され、 default_vibrate_timingstrueに設定されている場合、ユーザー指定のvibrate_timingsの代わりにデフォルト値が使用されます。

s 」で終わる最大 9 桁の小数点以下の秒単位の期間。例: "3.5s"

visibility

enum ( Visibility )

通知のNotice.visibilityを設定します。

notification_count

integer

この通知が表すアイテムの数を設定します。バッジをサポートするランチャーのバッジ数として表示される場合があります。 「 通知バッジ 」を参照してください。たとえば、これは、複数の新しいメッセージを表すために 1 つの通知だけを使用しているが、ここでのカウントで新しいメッセージの合計数を表す必要がある場合に便利です。ゼロまたは指定されていない場合、バッジをサポートするシステムはデフォルトを使用します。これは、新しい通知が到着するたびに長押しメニューに表示される数値を増加させます。

light_settings

object ( LightSettings )

デバイスで LED が利用可能な場合、通知の LED の点滅速度と色を制御する設定。合計の点滅時間は OS によって制御されます。

image

string

通知に表示される画像の URL が含まれます。存在する場合、 google.firebase.fcm.v1.Notification.imageをオーバーライドします。

通知の優先度

通知の優先度レベル。

列挙型
PRIORITY_UNSPECIFIED優先度が指定されていない場合、通知の優先度はPRIORITY_DEFAULTに設定されます。
PRIORITY_MIN最も低い通知優先度。このPRIORITY_MINを持つ通知は、詳細な通知ログなどの特別な状況を除いて、ユーザーに表示されない場合があります。
PRIORITY_LOW通知の優先度が低くなります。 UI は、 PRIORITY_DEFAULTを使用した通知と比較して、通知を小さく表示したり、リスト内の別の位置に表示したりすることを選択できます。
PRIORITY_DEFAULTデフォルトの通知優先度。アプリケーションが独自の通知を優先しない場合は、すべての通知にこの値を使用します。
PRIORITY_HIGH通知の優先度が高くなります。より重要な通知やアラートにこれを使用します。 UI は、 PRIORITY_DEFAULTを使用した通知と比較して、これらの通知をより大きく表示したり、通知リスト内の別の位置に表示したりすることを選択できます。
PRIORITY_MAX通知の優先順位が最も高くなります。これは、ユーザーの迅速な注意や入力が必要なアプリケーションの最も重要な項目に使用します。

可視性

通知のさまざまな可視性レベル。

列挙型
VISIBILITY_UNSPECIFIED指定しない場合、デフォルトでVisibility.PRIVATEになります。
PRIVATEこの通知はすべてのロック画面に表示されますが、機密情報や個人情報は安全なロック画面では非表示になります。
PUBLICすべてのロック画面にこの通知全体を表示します。
SECRET安全なロック画面では、この通知のいかなる部分も公開しないでください。

ライト設定

通知LEDを制御するための設定。

JSON表現
{
  "color": {
    object (Color)
  },
  "light_on_duration": string,
  "light_off_duration": string
}
田畑
color

object ( Color )

必須。 LEDのcolor google.type.Colorで設定します。

light_on_duration

string ( Duration format)

必須。 light_off_durationとともに、LED フラッシュの点滅速度を定義します。 proto.Durationによって定義される解像度

s 」で終わる最大 9 桁の小数点以下の秒単位の期間。例: "3.5s"

light_off_duration

string ( Duration format)

必須。 light_on_durationとともに、LED フラッシュの点滅速度を定義します。 proto.Durationによって定義される解像度

s 」で終わる最大 9 桁の小数点以下の秒単位の期間。例: "3.5s"

RGBA色空間の色を表します。この表現は、コンパクトさよりも、さまざまな言語のカラー表現への、またはカラー表現からの変換を簡単にするために設計されています。たとえば、この表現のフィールドは、Java のjava.awt.Colorのコンストラクターに簡単に提供できます。 iOS の UIColor の+colorWithRed:green:blue:alphaメソッドに簡単に提供することもできます。また、少し作業するだけで、JavaScript の CSS rgba()文字列に簡単にフォーマットできます。

このリファレンス ページには、RGB 値を解釈するために使用する必要がある絶対色空間 (sRGB、Adobe RGB、DCI-P3、BT.2020 など) に関する情報は含まれていません。デフォルトでは、アプリケーションは sRGB カラースペースを想定する必要があります。

色の同等性を決定する必要がある場合、実装では、特に文書化されていない限り、赤、緑、青、およびアルファ値のすべてがそれぞれ最大 1e-5 だけ異なっている場合に 2 つの色を等しいものとして扱います。

例 (Java):

 import com.google.type.Color;

 // ...
 public static java.awt.Color fromProto(Color protocolor) {
   float alpha = protocolor.hasAlpha()
       ? protocolor.getAlpha().getValue()
       : 1.0;

   return new java.awt.Color(
       protocolor.getRed(),
       protocolor.getGreen(),
       protocolor.getBlue(),
       alpha);
 }

 public static Color toProto(java.awt.Color color) {
   float red = (float) color.getRed();
   float green = (float) color.getGreen();
   float blue = (float) color.getBlue();
   float denominator = 255.0;
   Color.Builder resultBuilder =
       Color
           .newBuilder()
           .setRed(red / denominator)
           .setGreen(green / denominator)
           .setBlue(blue / denominator);
   int alpha = color.getAlpha();
   if (alpha != 255) {
     result.setAlpha(
         FloatValue
             .newBuilder()
             .setValue(((float) alpha) / denominator)
             .build());
   }
   return resultBuilder.build();
 }
 // ...

例 (iOS / Obj-C):

 // ...
 static UIColor* fromProto(Color* protocolor) {
    float red = [protocolor red];
    float green = [protocolor green];
    float blue = [protocolor blue];
    FloatValue* alpha_wrapper = [protocolor alpha];
    float alpha = 1.0;
    if (alpha_wrapper != nil) {
      alpha = [alpha_wrapper value];
    }
    return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
 }

 static Color* toProto(UIColor* color) {
     CGFloat red, green, blue, alpha;
     if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
       return nil;
     }
     Color* result = [[Color alloc] init];
     [result setRed:red];
     [result setGreen:green];
     [result setBlue:blue];
     if (alpha <= 0.9999) {
       [result setAlpha:floatWrapperWithValue(alpha)];
     }
     [result autorelease];
     return result;
}
// ...

例 (JavaScript):

// ...

var protoToCssColor = function(rgb_color) {
   var redFrac = rgb_color.red || 0.0;
   var greenFrac = rgb_color.green || 0.0;
   var blueFrac = rgb_color.blue || 0.0;
   var red = Math.floor(redFrac * 255);
   var green = Math.floor(greenFrac * 255);
   var blue = Math.floor(blueFrac * 255);

   if (!('alpha' in rgb_color)) {
      return rgbToCssColor(red, green, blue);
   }

   var alphaFrac = rgb_color.alpha.value || 0.0;
   var rgbParams = [red, green, blue].join(',');
   return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
};

var rgbToCssColor = function(red, green, blue) {
  var rgbNumber = new Number((red << 16) | (green << 8) | blue);
  var hexString = rgbNumber.toString(16);
  var missingZeros = 6 - hexString.length;
  var resultBuilder = ['#'];
  for (var i = 0; i < missingZeros; i++) {
     resultBuilder.push('0');
  }
  resultBuilder.push(hexString);
  return resultBuilder.join('');
};

// ...
JSON表現
{
  "red": number,
  "green": number,
  "blue": number,
  "alpha": number
}
田畑
red

number

[0, 1] の範囲の値としての色の赤の量。

green

number

[0, 1] の範囲の値としての色の緑の量。

blue

number

[0, 1] の範囲の値としての色の青の量。

alpha

number

ピクセルに適用する必要があるこの色の割合。つまり、最終的なピクセルの色は次の方程式で定義されます。

pixel color = alpha * (this color) + (1.0 - alpha) * (background color)

これは、値 1.0 は単色に対応し、値 0.0 は完全な透明色に対応することを意味します。これは、デフォルト値と設定解除される値を区別できるように、単純な浮動スカラーではなくラッパー メッセージを使用します。省略した場合、このカラー オブジェクトは単色としてレンダリングされます (アルファ値に明示的に値 1.0 が与えられているかのように)。

AndroidFcmオプション

FCM SDK for Android によって提供される機能のオプション。

JSON表現
{
  "analytics_label": string
}
田畑
analytics_label

string

メッセージの分析データに関連付けられたラベル。

WebpushConfig

Webpush プロトコルのオプション。

JSON表現
{
  "headers": {
    string: string,
    ...
  },
  "data": {
    string: string,
    ...
  },
  "notification": {
    object
  },
  "fcm_options": {
    object (WebpushFcmOptions)
  }
}
田畑
headers

map (key: string, value: string)

Webpush プロトコルで定義された HTTP ヘッダー。サポートされているヘッダーについては、 Webpush プロトコルを参照してください (例: "TTL": "15")。

"key": valueペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

data

map (key: string, value: string)

任意のキー/値ペイロード。存在する場合、 google.firebase.fcm.v1.Message.dataをオーバーライドします。

"key": valueペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

notification

object ( Struct format)

JSON オブジェクトとしての Web 通知オプション。 Web 通知 APIで定義されている通知インスタンス プロパティをサポートします。存在する場合、「title」フィールドと「body」フィールドはgoogle.firebase.fcm.v1.Notification.titlegoogle.firebase.fcm.v1.Notification.bodyをオーバーライドします。

fcm_options

object ( WebpushFcmOptions )

FCM SDK for Web によって提供される機能のオプション。

WebpushFcmオプション

FCM SDK for Web によって提供される機能のオプション。

JSON表現
{
  "link": string,
  "analytics_label": string
}
田畑
analytics_label

string

メッセージの分析データに関連付けられたラベル。

ApnsConfig

Apple プッシュ通知サービス固有のオプション。

JSON表現
{
  "headers": {
    string: string,
    ...
  },
  "payload": {
    object
  },
  "fcm_options": {
    object (ApnsFcmOptions)
  }
}
田畑
headers

map (key: string, value: string)

Apple Push Notification Service で定義された HTTP リクエスト ヘッダー。 apns-expirationapns-priorityなど、サポートされているヘッダーについては、APN リクエスト ヘッダーを参照してください。

バックエンドは、明示的に設定されていない場合、 apns-expirationのデフォルト値 30 日とapns-priorityのデフォルト値 10 を設定します。

"key": valueペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

payload

object ( Struct format)

APN ペイロードは、 apsディクショナリとカスタム ペイロードの両方を含む、JSON オブジェクトとして格納されます。 「ペイロード キーのリファレンス」を参照してください。存在する場合、 google.firebase.fcm.v1.Notification.titlegoogle.firebase.fcm.v1.Notification.bodyをオーバーライドします。

fcm_options

object ( ApnsFcmOptions )

iOS 用 FCM SDK によって提供される機能のオプション。

ApnsFcmオプション

iOS 用 FCM SDK によって提供される機能のオプション。

JSON表現
{
  "analytics_label": string,
  "image": string
}
田畑
analytics_label

string

メッセージの分析データに関連付けられたラベル。

image

string

通知に表示される画像の URL が含まれます。存在する場合、 google.firebase.fcm.v1.Notification.imageをオーバーライドします。

Fcmオプション

FCM SDK によって提供される機能のプラットフォームに依存しないオプション。

JSON表現
{
  "analytics_label": string
}
田畑
analytics_label

string

メッセージの分析データに関連付けられたラベル。

メソッド

send

指定されたターゲット (登録トークン、トピック、または条件) にメッセージを送信します。