diff --git a/docs/_advanced/ja_receiver.md b/docs/_advanced/ja_receiver.md
index 18dfabaf1..bb54a3629 100644
--- a/docs/_advanced/ja_receiver.md
+++ b/docs/_advanced/ja_receiver.md
@@ -14,13 +14,12 @@ order: 8
| `start()` | None | `Promise` |
| `stop()` | None | `Promise` |
-Bolt アプリでは `init()` が 2 回呼び出されます。
-* `await app.processEvent(event)` は、解析されたすべての着信リクエストを `onIncomingEvent()` にルーティングする必要があります。これは、Bolt アプリでは `this.receiver.on('message', message => this.onIncomingEvent(message))` として呼び出されます。
-* `await app.handleError` は、エラーをグローバルエラーハンドラーにルーティングする必要があります。これは、Bolt アプリでは `this.receiver.on('error', error => this.onGlobalError(error))` として呼び出されます。
+Bolt アプリでは `init()` が 2 回呼び出されます。このメソッドはレシーバーに `App` の参照を付与するため、これにより以下の呼び出しが可能になります。
+* `await app.processEvent(event)` は Slack から送信されてくるイベントを受け取るたびに呼び出されます。ハンドリングされなかったエラーが発生した場合はそれを throw します。
Bolt アプリを初期化するときにカスタムレシーバーをコンストラクタに渡すことで、そのカスタムレシーバーを使用できます。ここで紹介するのは、基本的なカスタムレシーバーです。
-レシーバーについて詳しくは、[組み込み Express レシーバーのソースコード](https://github.com/slackapi/bolt/blob/master/src/ExpressReceiver.ts)をお読みください。
+レシーバーについて詳しくは、[組み込み `ExpressReceiver` のソースコード](https://github.com/slackapi/bolt/blob/master/src/ExpressReceiver.ts)をお読みください。
```javascript
diff --git a/docs/_basic/ja_ listening_responding_shortcuts.md b/docs/_basic/ja_ listening_responding_shortcuts.md
deleted file mode 100644
index 2e9581085..000000000
--- a/docs/_basic/ja_ listening_responding_shortcuts.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-title: グローバルショートカットのリスニング
-lang: ja-jp
-slug: shortcuts
-order: 8
----
-
-
-[グローバルショートカット](https://api.slack.com/interactivity/shortcuts/using#global_shortcuts)は、テキスト入力エリアや検索バーから起動できる Slack クライアント内の UI エレメントです。`shortcut()` メソッドを使って、グローバルショートカットのイベントをリスニングすることができます。このメソッドには `callback_id` を文字列または正規表現のデータ型で設定します。
-
-グローバルショートカットのイベントは Slack へイベントを受信したことを知らせるために `ack()` メソッドで確認する必要があります。
-
-グローバルショートカットのペイロードは、ユーザーの実行アクションの確認のために[モーダルを開く](#creating-modals)などの用途に使用できる `trigger_id` を含んでいます。グローバルショートカットのペイロードは **チャンネル ID は含んでいない** ことに注意してください。もしあなたのアプリがチャンネル ID を知る必要があれば、モーダル内で [`conversations_select`](https://api.slack.com/reference/block-kit/block-elements#conversation_select) エレメントを使用できます。
-
-⚠️ [メッセージショートカット](https://api.slack.com/interactivity/shortcuts/using#message_shortcuts)は引き続き[`action()` メソッド](#action-listening)を使用するので注意してください。**Bolt の次のメジャーバージョンからはグローバルショートカットもメッセージショートカットも両方とも `shortcut()` メソッドを使用します。**
-
-
-```javascript
-// open_modal というグローバルショートカットはシンプルなモーダルを開く
-app.shortcut('open_modal', async ({ payload, ack, context }) => {
- // グローバルショートカットリクエストの確認
- ack();
- try {
- // 組み込みの WebClient を使って views.open API メソッドを呼び出す
- const result = await app.client.views.open({
- // `context` オブジェクトに保持されたトークンを使用
- token: context.botToken,
- trigger_id: payload.trigger_id,
- view: {
- "type": "modal",
- "title": {
- "type": "plain_text",
- "text": "My App"
- },
- "close": {
- "type": "plain_text",
- "text": "Close"
- },
- "blocks": [
- {
- "type": "section",
- "text": {
- "type": "mrkdwn",
- "text": "About the simplest modal you could conceive of :smile:\n\nMaybe or ."
- }
- },
- {
- "type": "context",
- "elements": [
- {
- "type": "mrkdwn",
- "text": "Psssst this modal was designed using "
- }
- ]
- }
- ]
- }
- });
- console.log(result);
- }
- catch (error) {
- console.error(error);
- }
-});
-```
diff --git a/docs/_basic/ja_listening_responding_shortcuts.md b/docs/_basic/ja_listening_responding_shortcuts.md
new file mode 100644
index 000000000..0d02fbf6b
--- /dev/null
+++ b/docs/_basic/ja_listening_responding_shortcuts.md
@@ -0,0 +1,133 @@
+---
+title: ショートカットのリスニング
+lang: ja-jp
+slug: shortcuts
+order: 8
+---
+
+
+`shortcut()` メソッドは、[グローバルショートカット](https://api.slack.com/interactivity/shortcuts/using#global_shortcuts)と[メッセージショートカット](https://api.slack.com/interactivity/shortcuts/using#message_shortcuts)の両方をサポートします。
+
+ショートカットは、テキスト入力エリアや検索バーから起動できる Slack クライアント内の UI エレメントです。グローバルショートカットは、コンポーザーメニューまたは検索メニューから呼び出すことができます。メッセージショートカットは、メッセージのコンテキストメニュー内にあります。`shortcut()` メソッドを使って、これらのショートカットのイベントをリスニングすることができます。このメソッドには `callback_id` を文字列または正規表現のデータ型で設定します。
+
+グローバルショートカットのイベントは Slack へイベントを受信したことを知らせるために `ack()` メソッドで確認する必要があります。
+
+グローバルショートカットのペイロードは、ユーザーの実行アクションの確認のために[モーダルを開く](#creating-modals)などの用途に使用できる `trigger_id` を含んでいます。
+
+⚠️ グローバルショートカットのペイロードは **チャンネル ID は含んでいない** ことに注意してください。もしあなたのアプリがチャンネル ID を知る必要があれば、モーダル内で [`conversations_select`](https://api.slack.com/reference/block-kit/block-elements#conversation_select) エレメントを使用できます。
+メッセージショートカットのペイロードはチャンネル ID を含みます。
+
+
+```javascript
+// open_modal というグローバルショートカットはシンプルなモーダルを開く
+app.shortcut('open_modal', async ({ shortcut, ack, context }) => {
+ // グローバルショートカットリクエストの確認
+ ack();
+
+ try {
+ // 組み込みの WebClient を使って views.open API メソッドを呼び出す
+ const result = await app.client.views.open({
+ // `context` オブジェクトに保持されたトークンを使用
+ token: context.botToken,
+ trigger_id: shortcut.trigger_id,
+ view: {
+ "type": "modal",
+ "title": {
+ "type": "plain_text",
+ "text": "My App"
+ },
+ "close": {
+ "type": "plain_text",
+ "text": "Close"
+ },
+ "blocks": [
+ {
+ "type": "section",
+ "text": {
+ "type": "mrkdwn",
+ "text": "About the simplest modal you could conceive of :smile:\n\nMaybe or ."
+ }
+ },
+ {
+ "type": "context",
+ "elements": [
+ {
+ "type": "mrkdwn",
+ "text": "Psssst this modal was designed using "
+ }
+ ]
+ }
+ ]
+ }
+ });
+
+ console.log(result);
+ }
+ catch (error) {
+ console.error(error);
+ }
+});
+```
+
+
+
+ 制約付きオブジェクトを使用したショートカットのリスニング
+
+
+
+ 制約付きオブジェクトを使って `callback_id` や `type` によるリスニングをすることができます。オブジェクト内の制約は文字列型または RegExp オブジェクトを使用できます。
+
+
+
+ ```javascript
+ // callback_id が 'open_modal' と一致し type が 'message_action' と一致する場合のみミドルウェアが呼び出される
+ app.shortcut({ callback_id: 'open_modal', type: 'message_action' }, async ({ shortcut, ack, context, client }) => {
+ try {
+ // ショートカットリクエストの確認
+ await ack();
+
+ // 組み込みの WebClient を使って views.open API メソッドを呼び出す
+ const result = await app.client.views.open({
+ // `context` オブジェクトに保持されたトークンを使用
+ token: context.botToken,
+ trigger_id: shortcut.trigger_id,
+ view: {
+ type: "modal",
+ title: {
+ type: "plain_text",
+ text: "My App"
+ },
+ close: {
+ type: "plain_text",
+ text: "Close"
+ },
+ blocks: [
+ {
+ type: "section",
+ text: {
+ type: "mrkdwn",
+ text: "About the simplest modal you could conceive of :smile:\n\nMaybe or ."
+ }
+ },
+ {
+ type: "context",
+ elements: [
+ {
+ type: "mrkdwn",
+ text: "Psssst this modal was designed using "
+ }
+ ]
+ }
+ ]
+ }
+ });
+
+ console.log(result);
+ }
+ catch (error) {
+ console.error(error);
+ }
+ });
+ ```
+
+
\ No newline at end of file
diff --git a/docs/_tutorials/ja_getting_started.md b/docs/_tutorials/ja_getting_started.md
index 2a137e80c..738ef479d 100644
--- a/docs/_tutorials/ja_getting_started.md
+++ b/docs/_tutorials/ja_getting_started.md
@@ -191,7 +191,7 @@ app.message('hello', async ({ message, say }) => {
### アクションの送信と応答
-ボタン、選択メニュー、日付ピッカー、ダイアログ、メッセージショートカットなどの機能を使用するには、インタラクティブ性を有効にする必要があります。イベントと同様に、Slack の URL を指定してアクション ( 「ボタン・クリック」など) を送信する必要があります。
+ボタン、選択メニュー、日付ピッカー、ダイアログなどの機能を使用するには、インタラクティブ性を有効にする必要があります。イベントと同様に、Slack の URL を指定してアクション ( 「ボタン・クリック」など) を送信する必要があります。
アプリ設定ページに戻り、左側の **Interactive Components** をクリックします。**Request URL** ボックスがもう 1 つあることがわかります。