0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WorkatoAdvent Calendar 2024

Day 9

Slackにインスタントな翻訳機能を提供する-機能拡張編-

Last updated at Posted at 2024-12-09

はじめに

少し前に、1クリックでSlackの投稿を日本語訳してくれるボットを作りました。

今回は、上記で作成したレシピを拡張します。

多言語に翻訳したい

ユーザーに「日本語だけじゃなくて、他の言語にも翻訳できたら嬉しいな!5か国語くらい。それで今後も増やしていきたいかも。できる?」と言われた場合を想像してください。
分岐が大変なことになるのでは? 対応言語を増やすたびにレシピを改修しなきゃいけないの?と身構えてしまいませんか。
安心してください。
If文を乱用せず、今後はレシピメンテ不要でオンタイムに対応言語を増やしていけるようなレシピに仕上げていきましょう。

レシピのビフォーアフター

image.png

アクションは増えていませんが、トリガーが少しだけ複雑になっているように見えます。
種明かしをすると、LookupTableを導入して、Workatoの関数(Formulaモード)を使って参照し動的に値を求めることで、レシピの構造を変えずに1ロジックで実現しています。

ここからは細かい改修手順のお話をします。

手順1) LookupTableを用意

絵文字リアクション名と、それに対応するDeepLの言語コードをマッピングします。

image.png

・「Slack_reaction」カラム

各国旗の絵文字リアクション名です。
reaction_addedイベントを受信した際に取得される値をセットします。

・「DeepL_languageCode」カラム

DeepLの対象言語コード の値をセットします。

・「memo」カラム

任意(処理では使用せず、備忘用です)

テーブルの用途

このLookupTableには、次の用途を期待します。

  • 辞書的に使う
    アクションでは、絵文字リクション名からDeepLの言語コードに変換して翻訳する
  • ホワイトリスト的に使う
    トリガーでは、テーブルに登録されている絵文字のどれかと一致するリアクションだけに反応する

手順2) トリガーの条件を編集

レシピを開いて、トリガーの条件を編集します。

以前は、付けられた絵文字リアクションがjp(日本)なら、ジョブが実行されました。
今後は、付けられた絵文字リアクションが「用意したテーブルに登録されている国の絵文字」のいずれかと一致すれば、ジョブが実行されるようにします。

image.png

LookupFormulaを使うと、任意のLookupTableに対して任意の値で絞り込みをかけ、データを抽出できます。
抽出されたデータが「存在するか」を評価するには、is presentを使います。

image.png

LookupFormulaのテーブル指定は、名称かIDのどちらにも対応しています。
ただし名称を使っている場合、LookupTable名を変更してレシピ側を変更しないとエラーが発生します。テーブル名が変更される可能性がある場合は、IDを使用する方が安全です。

手順3) アクションを編集

Step3のDeepL翻訳処理に移り、フィールドTarget lanuageを変更します。

image.png

入力モードでつらつらと書いてある内容について補足します。

LookupFormulaは先ほどトリガーのフィルター編集で出てきました。
今度はその後に ["(カラム名っぽい何か)"] が続いていますね。

LookupFormulaで抽出したデータにはすべてのカラムが含まれていますが、DeepLが翻訳するのに必要なのはDeepLの言語コードです。
このため、["カラム名"]でお目当ての要素を取得しています。
(クォーテーションはシングルでもダブルでも構いません)

image.png

これで修正は完了しました。

実行結果

image.png

多言語に翻訳できました。

さいごに

Workatoは実装が簡単なので、最初はとりあえず動くものを作ってみて、ユーザーの反応を見ながら改良していくことがよくあります。
レシピ作成に関する記事は多く見つかりますが、レシピの修正に関する情報はあまり見かけないため、この記事がメンテナンスに携わる皆さんのお役に立てれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?