-
Notifications
You must be signed in to change notification settings - Fork 395
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #445 from seratch/migration-guide-ja
Add Japanese version to PR #442
- Loading branch information
Showing
6 changed files
with
128 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
--- | ||
title: Hubot のアプリを Bolt に移行する方法 | ||
order: 1 | ||
order: 2 | ||
slug: hubot-migration | ||
lang: ja-jp | ||
layout: tutorial | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
--- | ||
title: 2.x マイグレーションガイド | ||
order: 1 | ||
slug: migration-v2 | ||
lang: ja-jp | ||
layout: tutorial | ||
permalink: /ja-jp/tutorial/migration-v2 | ||
--- | ||
# 2.x マイグレーションガイド | ||
|
||
<div class="section-content"> | ||
このガイドは Bolt 1.x を利用しているアプリを 2.x にアップグレードするための手順について説明します。いくつかの変更が必要とはなりますが、ほとんどのアプリの場合で、おそらく対応に必要な時間は 5 〜 15 分程度です。 | ||
</div> | ||
|
||
--- | ||
|
||
## リスナー関数を `async` 関数に変更 | ||
|
||
Bolt アプリ内のリスナー関数は、全て `async` 関数に変更する必要があります。そして、そのリスナー関数内の `say()`、`respond()`、`ack()` メソッドの呼び出しも全て `await` を呼び出しの前につける必要があります。 | ||
|
||
これまで: | ||
|
||
```javascript | ||
app.action('some-action-id', ({action, ack, say}) => { | ||
ack(); | ||
say('hello world'); | ||
}) | ||
``` | ||
|
||
これから: | ||
|
||
```javascript | ||
app.action('some-action-id', async ({action, ack, say}) => { | ||
await ack(); | ||
await say('hello world'); | ||
}) | ||
``` | ||
|
||
|
||
## エラーハンドリング | ||
|
||
Bolt for JavaScript 2.x では、より多くのユースケースで、必要に応じてエラーをキャッチし、グローバルエラーハンドラーにそれを送るかを制御できるよう改善されました。これまでと同様、グローバルエラーハンドラーに全て任せるよりは、可能な限り、リスナー関数の内部でエラーに対処することをおすすめします。 | ||
|
||
### リスナー関数内で `try`/`catch` 節を用いたエラーハンドリング | ||
|
||
```javascript | ||
app.action('some-action-id', async ({action, ack, say, logger}) => { | ||
try { | ||
await ack(); | ||
await say('hello world'); | ||
} catch (error) { | ||
// ここでエラーに対処 | ||
logger.error(error); | ||
} | ||
}) | ||
``` | ||
|
||
### グローバルエラーハンドラーによるエラーハンドリング | ||
|
||
```javascript | ||
app.error((error) => { | ||
// エラーの詳細をチェックして、メッセージ送信のリトライやアプリの停止などの対処を行う | ||
console.error(error); | ||
}); | ||
``` | ||
|
||
その他のエラーに関する変更: | ||
|
||
- リスナー関数が `ack()` メソッドを 3 秒間のうちに呼び出さなかった場合、これまでのように例外を投げるのではなくログを出力するようになりました | ||
- もし一つのイベントに対して複数のリスナー関数を実行中に複数のエラーが発生した場合、Bolt for JavaScript は `ErrorCode.MultipleListenerError` の値での `code` と、発生した個々のエラーの配列を含む `originals` というパラメーターをラップしたエラーを返します | ||
|
||
## メッセージショートカット | ||
|
||
[メッセージショートカット](https://api.slack.com/interactivity/shortcuts/using#message_shortcuts) (以前はメッセージアクションと呼ばれていました)は、これまで `action()` メソッドでハンドリングしていましたが `shortcut()` メソッドを使うようになりました。 | ||
|
||
これまで: | ||
|
||
```javascript | ||
app.action({ callback_id: 'message-action-callback' }, ({action, ack, context}) => { | ||
ack(); | ||
// ここで処理を行う | ||
}) | ||
``` | ||
|
||
これから: | ||
|
||
```javascript | ||
app.shortcut('message-action-callback', async ({shortcut, ack, context}) => { | ||
await ack(); | ||
// Do stuff | ||
}) | ||
``` | ||
|
||
## ミドルウェアに関する変更 | ||
|
||
もしカスタムのミドルウェアを書いている場合は、その関数を `async` に変更し、さらに `next()` の呼び出しを `await next()` に変更してください。もし後続の処理がある場合は、関数右を `next()` に渡す代わりに、その後続の処理を `await next()` の後に実行してください。 | ||
|
||
これまで: | ||
|
||
```javascript | ||
function noBotMessages({message, next }) { | ||
function doAfter() { | ||
// 後続の処理をここでやる | ||
} | ||
if (!message.subtype || message.subtype !== 'bot_message') { | ||
next(doAfter); | ||
} | ||
} | ||
``` | ||
|
||
これから: | ||
|
||
```javascript | ||
async function noBotMessages({message, next }) { | ||
if (!message.subtype || message.subtype !== 'bot_message') { | ||
await next(); | ||
// 後続の処理をここでやる | ||
} | ||
} | ||
``` |