サブスクライバーは、さまざまな理由でメッセージを処理できない場合があります。たとえば、メッセージの処理に必要なデータを取得する際に一時的な問題が発生している可能性があります。サブスクライバーが想定していない形式のメッセージが含まれている場合もあります。
このページでは、サブスクリプションの再試行ポリシーを使用するか、未配信のメッセージをデッドレター トピック(デッドレター キュー)に転送することで、処理障害を処理する方法について説明します。
これらの機能は Dataflow ではサポートされていません。詳細については、Dataflow ドキュメントのサポートされていない Pub/Sub 機能をご覧ください。
サブスクリプションの再試行ポリシー
Pub/Sub がメッセージの配信を試みてもサブスクライバーによるメッセージの確認応答ができない場合、Pub/Sub はメッセージを自動的に再送信しようとします。この再配信の試みは、サブスクリプションの再試行ポリシーと呼ばれます。これは、オンまたはオフにできる機能ではありません。ただし、使用する再試行ポリシーのタイプは選択できます。
サブスクリプションを最初に作成して構成するときに、2 つの再試行ポリシー(即時再配信または指数バックオフ)のいずれかを選択できます。デフォルトでは、即時再配信が使用されます。
即時再配信
デフォルトでは、Pub/Sub はメッセージの再送信(同じサブスクライバー クライアントへの場合もあります)を直ちに試行します。ただし、メッセージの確認応答を防止する条件が変更されていない場合、すぐに再配信を行うと問題が発生する可能性があります。この場合、確認応答できない複数のメッセージを Pub/Sub が再送信する可能性があります。
即時再配信の問題に対処するため、Pub/Sub では指数バックオフ ポリシーを構成できます。
指数バックオフ
指数バックオフを使用すると、再試行の間の遅延を徐々に長くすることができます。最初の配信が失敗すると、Pub/Sub は最小バックオフ時間だけ待機してから再試行します。メッセージが連続して失敗するたびに、最大遅延時間(0~600 秒)に達するまで遅延時間が長くなります。
最大と最小の遅延間隔は固定されておらず、アプリケーションに対するローカル要因に基づいて構成する必要があります。
指数バックオフについては、次の点を考慮してください。
- 次のアクションによって指数バックオフがトリガーされます。
- 否定確認応答を受け取った場合。
- メッセージの確認応答期限が切れた場合。
- 指数バックオフは、サブスクリプション内のすべてのメッセージ(グローバル)ではなく、メッセージ単位でのみ適用されます。
- 指数バックオフの使用中は、以前のメッセージが否定確認応答を受信しても、Pub/Sub は引き続き他のメッセージを配信します(順序付きメッセージ配信を使用している場合を除きます)。
再試行ポリシーを使用して、メッセージのサブセットの配信と処理を遅らせ、配信時に一部のメッセージを一時的に処理できないことに対処します。この機能はベスト エフォート方式で適用され、各メッセージが個々の再試行ポリシーに対して評価されます。
この機能を使用して、メッセージの配信を意図的に遅らせることはおすすめしません。再試行ポリシーで構成されているサブスクリプションで多数のメッセージを否定応答した場合、それらのメッセージの一部は、少ないバックオフまたはバックオフなしで配信される可能性があります。また、多数のメッセージを否定応答した場合、Pub/Sub によってすべてのメッセージの配信速度が遅くなることがあります。
配信をスケジュールする必要がある場合は、Cloud Tasks の使用を検討してください。
指数バックオフを構成する
Console
新しいサブスクリプションを作成する際に、次の手順に沿って指数バックオフ再試行ポリシーを構成できます。
Google Cloud コンソールで、[Pub/Sub サブスクリプション] ページに移動します。
[サブスクリプションを作成] をクリックします。
[サブスクリプション ID] フィールドに名前を入力します。
サブスクリプションの指定方法については、トピックまたはサブスクリプションの指定方法のガイドラインをご覧ください。
プルダウン メニューからトピックを選択するか、作成します。
サブスクリプションがトピックからメッセージを受信します。
[配信タイプ] を選択します。
[再試行ポリシー] で、[指数バックオフ後の再試行] を選択します。
[最小バックオフ] と [最大バックオフ] に 0~600 秒の値を入力します。
デフォルト値は最小バックオフでは 10 秒、最大バックオフでは 600 秒です。
[作成] をクリックします。
gcloud
指数バックオフの再試行ポリシーを使用して新しいサブスクリプションを作成するには、以下に示すフラグを指定して gcloud pubsub create
コマンドを実行します。
gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --min-retry-delay=MIN_RETRY_DELAY \ --max-retry-delay=MAX_RETRY_DELAY
デッドレター トピック
Pub/Sub サービスがメッセージの配信を試みても、サブスクライバーが確認応答できない場合、Pub/Sub は配信不能メッセージをデッドレター トピックに転送できます。
Pub/Sub でのデッドレター トピックの仕組み
デッドレター トピックは、トピック プロパティではなく、サブスクリプション プロパティになります。つまり、トピックの作成時ではなく、サブスクリプションの作成時にデッドレター トピックを設定します。
デッドレター トピックを作成する場合、次のサブスクリプション プロパティを設定できます。
配信試行回数の上限: Pub/Sub が特定のメッセージに対して行う配信の試行回数を示す数値。構成された配信試行回数内にサブスクライバー クライアントがメッセージを確認応答できない場合、メッセージはデッドレター トピックに転送されます。
- デフォルト値 = 5
- 最大値 = 100
- 最小値 = 5
デッドレター トピックを含むプロジェクト: デッドレター トピックがサブスクリプションとは異なるプロジェクトにある場合、そのデッドレター トピックがあるプロジェクトを指定する必要があります。サブスクリプションが接続されているトピックとは異なるトピックに、デッドレター トピックを設定します。
配達の最大試行回数の算出方法
Pub/Sub は、デッドレター トピックが正しく構成され、正しい IAM 権限が含まれている場合にのみ、配信の試行回数をカウントします。
Pub/Sub では、ベスト エフォート方式でメッセージが転送されるため、配信の最大試行回数には誤差が生じる場合があります。
特に、非アクティブなサブスクライバーを持つ pull サブスクリプションの場合、メッセージの配信試行回数はゼロにリセットされることもあります。その結果、構成された最大配信試行回数を超えて、サブスクライバー クライアントにメッセージが配信される可能性があります。
デッドレター トピックを構成する
デッドレター トピックを構成するには、まずソーストピックにサブスクリプションが必要です。デッドレター トピックは、サブスクリプションの作成時に指定できます。また、デッドレター トピックが存在するように既存のサブスクリプションを更新することもできます。
サブスクリプションでデッド レタリングを有効にするワークフローは次のとおりです。
デッドレター トピックを作成します。このトピックはソーストピックとは別のものです。
ソーストピックのサブスクリプションにデッドレター トピックを設定します。
デッドレター トピックからメッセージが失われないようにするには、少なくとも 1 つのサブスクリプションをデッドレター トピックに接続します。セカンダリ サブスクリプションは、デッドレター トピックからメッセージを受信します。
Pub/Sub サービス アカウントにパブリッシャーとサブスクライバーのロールを付与します。詳細については、転送権限を付与するをご覧ください。
新しいサブスクリプションにデッドレター トピックを設定する
Google Cloud コンソール、Google Cloud CLI、クライアント ライブラリ、または Pub/Sub API を使用して、サブスクリプションを作成してデッドレター トピックを設定できます。
Console
サブスクリプションを作成してデッドレター トピックを設定するには、次の手順を実行します。
Google Cloud コンソールで、[サブスクリプション] ページに移動します。
[サブスクリプションを作成] をクリックします。
[サブスクリプション ID] を入力します。
プルダウン メニューからトピックを選択するか、作成します。
サブスクリプションがトピックからメッセージを受信します。
[配信エラー]セクションで、[配信エラーを有効にする]を選択します。
デッドレター トピックをプルダウン メニューから選択または作成します。
選択したデッドレター トピックにサブスクリプションがない場合は、作成するよう求められます。
[配信の最大試行回数] フィールドで、5〜100 の整数を指定します。
[作成] をクリックします。
詳細パネルには、実行可能なアクション アイテムのリストが表示されます。いずれかの項目にエラーアイコン
が表示されている場合は、操作項目をクリックして問題を解決します。
gcloud
サブスクリプションを作成してデッドレター トピックを設定するには、gcloud pubsub subscriptions create
コマンドを使用します。
gcloud pubsub subscriptions create subscription-id \ --topic=topic-id \ --dead-letter-topic=dead-letter-topic-name \ [--max-delivery-attempts=max-delivery-attempts] \ [--dead-letter-topic-project=dead-letter-topic-project]
C++
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C++ の設定手順を実施してください。詳細については、Pub/Sub C++ API リファレンス ドキュメントをご覧ください。
C#
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、Pub/Sub C# API リファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Go の設定手順を実施してください。詳細については、Pub/Sub Go API リファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、Pub/Sub Java API リファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API リファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API リファレンス ドキュメントをご覧ください。
PHP
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の PHP の設定手順を実施してください。詳細については、Pub/Sub PHP API リファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Python の設定手順を実施してください。詳細については、Pub/Sub Python API リファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Ruby の設定手順を実施してください。詳細については、Pub/Sub Ruby API リファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Ruby 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Ruby API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
既存のサブスクリプションのデッドレター トピックを設定する
Google Cloud コンソール、Google Cloud CLI、クライアント ライブラリ、または Pub/Sub API を使用して、サブスクリプションを更新してデッドレター トピックを設定できます。
Console
サブスクリプションを更新してデッドレター トピックを設定するには、次の手順を実行します。
Google Cloud コンソールで、[サブスクリプション] ページに移動します。
更新するサブスクリプションの横にある [その他の操作] アイコン more_vert をクリックします。
コンテキスト メニューで [編集] を選択します。
[配信エラー]セクションで、[配信エラーを有効にする]を選択します。
プルダウン メニューからトピックを選択するか、作成します。
選択したトピックにサブスクリプションがない場合は、サブスクリプションを作成するよう求められます。
[配信の最大試行回数] フィールドで、5〜100 の整数を指定します。
[更新] をクリックします。
詳細パネルには、実行可能なアクション アイテムのリストが表示されます。いずれかの項目にエラーアイコン
が表示されている場合は、操作項目をクリックして問題を解決します。
gcloud
サブスクリプションを更新してデッドレター トピックを設定するには、gcloud pubsub subscriptions update
コマンドを使用します。
gcloud pubsub subscriptions update subscription-id \ --dead-letter-topic=dead-letter-topic-name \ [--max-delivery-attempts=max-delivery-attempts] \ [--dead-letter-topic-project=dead-letter-topic-project]
C++
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C++ の設定手順を実施してください。詳細については、Pub/Sub C++ API リファレンス ドキュメントをご覧ください。
C#
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、Pub/Sub C# API リファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Go の設定手順を実施してください。詳細については、Pub/Sub Go API リファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、Pub/Sub Java API リファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API リファレンス ドキュメントをご覧ください。
PHP
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の PHP の設定手順を実施してください。詳細については、Pub/Sub PHP API リファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Python の設定手順を実施してください。詳細については、Pub/Sub Python API リファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Ruby の設定手順を実施してください。詳細については、Pub/Sub Ruby API リファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Ruby 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Ruby API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
デッドレター トピックを使用するための IAM ロールを付与する
配信不能メッセージをデッドレター トピックに転送するには、Pub/Sub に次の権限が付与されている必要があります。
- トピックにメッセージをパブリッシュする。
- メッセージに確認応答することにより、メッセージをサブスクリプションから削除します。
Pub/Sub は、プロジェクト service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com
ごとにサービス アカウントを作成して維持します。このサービス アカウントにパブリッシャーとサブスクライバーのロールを割り当てることで、転送権限を付与できます。
Console
デッドレター トピックにメッセージをパブリッシュする権限を Pub/Sub に付与するには、次の手順を行います。
Google Cloud コンソールで、[サブスクリプション] ページに移動します。
デッドレター トピックを含むサブスクリプションの名前をクリックします。
[デッド レタリング] タブをクリックします。
パブリッシャーのロールを割り当てるには、[パブリッシャーのロールを付与する] をクリックします。パブリッシャー ロールが正常に割り当てられていると、青いチェックマーク
が表示されます。サブスクライバーのロールを割り当てるには、[サブスクライバーのロールを付与する] をクリックします。パブリッシャー ロールが正常に割り当てられていると、青いチェックマーク
が表示されます。
gcloud
デッドレター トピックにメッセージをパブリッシュする権限を Pub/Sub に付与するには、次のコマンドを実行します。
PUBSUB_SERVICE_ACCOUNT="service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com" gcloud pubsub topics add-iam-policy-binding dead-letter-topic-name \ --member="serviceAccount:$PUBSUB_SERVICE_ACCOUNT"\ --role="roles/pubsub.publisher"
転送された配信不能メッセージに確認応答する権限を Pub/Sub に付与するには、次のコマンドを実行します。
PUBSUB_SERVICE_ACCOUNT="service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com" gcloud pubsub subscriptions add-iam-policy-binding subscription-id \ --member="serviceAccount:$PUBSUB_SERVICE_ACCOUNT"\ --role="roles/pubsub.subscriber"
配信試行の確認
サブスクリプションのデッドレター トピックを有効にすると、そのサブスクリプションのすべてのメッセージに配信試行回数を指定するフィールドが表示されます。
pull サブスクリプションから受信したメッセージには、
delivery_attempt
フィールドが含まれます。push サブスクリプションから受信したメッセージには、
deliveryAttempt
フィールドが含まれます。
次のサンプルは、配信の試行回数を取得する方法を示しています。
C++
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C++ の設定手順を実施してください。詳細については、Pub/Sub C++ API リファレンス ドキュメントをご覧ください。
C#
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある C# 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub C# API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Go
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Go 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Go API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Java 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Node.js
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Node.js 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Node.js API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
PHP
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある PHP 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub PHP API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Python 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Ruby
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Ruby 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Ruby API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Pub/Sub が配信不能メッセージをデッドレター トピックに転送すると、次の属性がメッセージに追加されます。
CloudPubSubDeadLetterSourceDeliveryCount
: ソース サブスクリプションへの配信試行回数。CloudPubSubDeadLetterSourceSubscription
: ソース サブスクリプションの名前。CloudPubSubDeadLetterSourceSubscriptionProject
: ソース サブスクリプションを含むプロジェクトの名前。CloudPubSubDeadLetterSourceTopicPublishTime
: メッセージが最初にパブリッシュされたときのタイムスタンプ。CloudPubSubDeadLetterSourceDeliveryErrorMessage
: 元の宛先にメッセージを配信できなかった理由。この属性は、サブスクリプションのエクスポートでのみ使用できます。
転送されたメッセージのモニタリング
配信不能メッセージを転送すると、Pub/Sub サービスは、サブスクリプションからメッセージを削除します。転送されるメッセージは、Cloud Monitoring を使用してモニタリングできます。
サブスクリプションをデッドレター トピックに接続すると、メッセージには、デッドレター トピック プロパティの有効期限ではなく、接続したサブスクリプションの有効期限ポリシーが使用されます。
subscription/dead_letter_message_count
指標には、Pub/Sub が転送するサブスクリプションの配信不能メッセージの数が記録されます。
詳細については、転送された配信不能メッセージのモニタリングをご覧ください。
デッドレター トピックを削除する
配信不能メッセージの転送を停止するには、サブスクリプションからデッドレター トピックを削除します。
サブスクリプションからデッドレター トピックを削除するには、Google Cloud コンソール、Google Cloud CLI、または Pub/Sub API を使用できます。
Console
サブスクリプションからデッドレター トピックを削除するには、次の手順を行います。
Google Cloud コンソールで、[サブスクリプション] ページに移動します。
サブスクリプションのリストで、更新するサブスクリプションの横にある more_vert をクリックします。
コンテキスト メニューから [編集] を選択します。
[配信エラー]セクションで、[配信エラーを有効にする]をオフにします。
[更新] をクリックします。
gcloud
サブスクリプションからデッドレター トピックを削除するには、--clear-dead-letter-policy
フラグを付けた gcloud pubsub subscriptions update
コマンドを使用します。
gcloud pubsub subscriptions update subscription-id \ --clear-dead-letter-policy
C++
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C++ の設定手順を実施してください。詳細については、Pub/Sub C++ API リファレンス ドキュメントをご覧ください。
C#
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、Pub/Sub C# API リファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Go の設定手順を実施してください。詳細については、Pub/Sub Go API リファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、Pub/Sub Java API リファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API リファレンス ドキュメントをご覧ください。
PHP
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の PHP の設定手順を実施してください。詳細については、Pub/Sub PHP API リファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Python の設定手順を実施してください。詳細については、Pub/Sub Python API リファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Ruby の設定手順を実施してください。詳細については、Pub/Sub Ruby API リファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Ruby 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Ruby API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
料金
Pub/Sub サービスが配信不能メッセージを転送すると、次の料金が適用されます。
- デッドレター トピックを含むプロジェクトの請求先アカウントに対して、パブリッシュ手数料。
- デッドレター トピック プロパティのあるサブスクリプションを含むプロジェクトに関連付けられた請求先アカウントに対して請求される送信メッセージの利用料金。
サブスクリプションのデッドレター トピック プロパティは設定しているが、デッドレター トピックのメッセージ ストレージ ロケーション ポリシーを設定しておらず、トピックでサブスクリプションを含むリージョンが許可されていな場合は、送信メッセージのパブリッシュ料金も適用されます。
送信メッセージのパブリッシュ料金は、デッドレター トピックを含むプロジェクトに対して請求されます。詳細については、料金をご覧ください。