4
1

More than 1 year has passed since last update.

コミュニケーションをとりたい!OVER40の初心者が翻訳LINE botの作成に1週間チャレンジ!

Last updated at Posted at 2022-09-07

LINE bot作成1週間チャレンジ!!

「今の話伝わったのかなぁ・・・?」
私は小売業の物流管理部門で働いていますが、昨今の労働人口不足もあって、
物流センターなどの物流現場では非常に多くの外国人の方に支えられて成り立っています。
しかしながら、日本語は勉強中!といった外国人の方も多く、
現場間で細かいコミュニケーションをとれない事が課題の一つとなっていました。

どうやったら伝わるかな?もっとコミュニケーションをとりたい!
と考えていた時にLINE botなるものをノーコードで作成できるという事を知り、これは
使えるという事でOVER40の初心者ながらもLINE botの作成に1週間チャレンジしてみました!

使用したツール

  • LINE (ただのSNSツールじゃなかったんだね。)  
  • DeepL (翻訳API。翻訳をお願いしました。)
  • Googleスプレッドシート(翻訳したテキストの保存をお願いしました。)
  • Make

 Make(旧Integromat)とは
今さら補足不要かと思いますが、自分のためにあらためて書くと
Makeは異なるツール同士をノーコードで連携できるツールとの事。
しかも視覚的でわかりやすい!!!
RPAのようなツールを作れるのは一部のプログラミングマスター(個人のイメージ)
しかいないと思っていた私はこんな便利なものがあるんだと感激しました。
(そういえばノーコードとかいう言葉は聞いていたけどスルーしていました)

LINE botの作成結果

「外国人の方とのコミュニケーションといえばやっぱり翻訳かな。」

「日本語のマニュアルも外国語化したいな。おっ、画像をOCRして文字情報をLINE botに
返信する
的な過去記事がいくつかあるから、これを組み合わせたらおもしろそう・・・」

「じゃあ、LINEで画像を送ったら文字を外国語にして返してくれるLINE botを作ろう♪」
と安易な気持ちで作成に入った私は現実を知りました・・・

「全然うまくいかない・・・・・・・!?」

ほとんど、真似ばかりしているのに全然うまく動かない・・・
今回は1週間チャレンジという事で早々にOCR機能の実装を後回しにし(日和りました)、
入力した言葉を翻訳して返してくれる翻訳LINE bot(日本語⇔中国語ver)を作成しました。

双方向のやり取りを一画面で済ませたかったので、
頭に『Cをつけて日本語入力すると中国語に翻訳して返す、
頭に『Jをつけて中国語入力すると日本語に翻訳して返す、
『C』『J』をつけずに他の文字を入力すると、「何語に翻訳する??」という
テキストと画像を返してくれる仕様にしました。

Makeのシナリオはこちらです。

image.png
(LINE botのおおまかな動き)
 ①LINEに文字を入力する。
 ②ルーターで『日本語訳』『中国語訳』『それ以外』に分岐させる。
 ③DeepLで翻訳しする。
 ④LINEに翻訳した言葉を返す。 
 ⑤会話内容をGoogleスプレッドシートに保存する。

LINE botの作成手順

1. 事前準備

  • LINE Developersでチャネルを作成する。
  • Makeのアカウントを作成し、LINEと連携させる。
  • 翻訳用のDeepLのアカウントを作成し、Makeと連携させる。
  • 会話保存用のGoogleスプレッドシートを準備しておく。

2. 作業の流れ

①MakeとLINE DevelopersをWebhookとチャンネルアクセストークンで紐付けます。
  • モジュール:LINE (Watch Events)
    image.png
②フィルタリングをかけルーターで分岐させます。
  • モジュール:Router
    image.png

『日本語⇔中国語』に翻訳の部分はフィルターのText operators
Starts with(case insensitive)(~で始まる(大文字と小文字を区別し ない))に設定し、
『J』で始まる場合と『C』で始まる場合に分けました。

逆に『それ以外』の場合はText operators
Does not start with(case insensitive)(~で始まらない(大文字と小文字を区別しない))
に設定し、『J』と『C』で始まるもの以外を通す設定にしました。

ご注意下さい
ここで、追加ルールをAdd AND ruleではなくAdd or ruleで設定してしまうと『J』『C』で始まるものも通過しエラーが発生しますのでご注意下さい。

③DeepLで『日本語⇔中国語』に翻訳します
  • モジュール:DeepL (Translate a Text) 
    image.png

まず、ConnectionでMakeと事前にアカウント登録しておいたDeepLを紐付けます。
紐付けの際にはDeepLアカウント側で認証のためのAPIキーを取得して、
モジュールのAPI Keyに貼り付けLINE botとの紐付けを行います。

次に翻訳したい言語をTarget Languageに、元となる言語をSource Language
入力します。(サンプルでは日本語を中国語に翻訳するパターンを表示しています)

また、Split on Punctuation and on Newlines(句読点と改行で分割)に設定しておくと、
一文でない場合に句読点と改行で分けてくれるようです。

④LINEに翻訳した言葉を返します。
  • モジュール:LINE (Send a Reply Massage)
    image.png

ここではまずReply Token1.Events[ ]:Reply Tokenを選択します。
次に返信するメッセージとして、TypeTextを選択、Text1.Translatiions[ ]:Textを選択します。

⑤Googleスプレッドシートに会話内容を保存する。
  • モジュール:Google sheet (Add a raw)
    image.png

まず、Googleドライブのマイドライブに格納してあるスプレッドシートと紐付けするため、
connectionでMakeとGoogleアカウントを紐付けます。

次に、データを保存するスプレッドシートを指定するためシートのIDを入力します。
該当のスプレッドシートの開くとURLが表示されますが、URLの後半部分が
該当スプレッドシートのID
になりますので、コピペしてモジュールのSpreadsheet ID
スプレッドシートのIDを入力します。

モジュールを下にスクロールしてValues欄を見ると、
スプレッドシート内のどの列に取得したデータを保存するかの指定ができますので、
今回はE列に1.Events[ ]:Timestamp F列に1.Events{ ]:Message.Text
G列に3.Translations[ ]:Textをそれぞれ選択することにします。

(延長戦)⑥pokemon APIから情報を取得して返す
  • モジュール:HTTP(Make a request)とLINE (Send a Reply Message)
    image.png

今回、1週間を超えてしまいましたが、最初に『C』と『J』がつかなかった場合、テキストメッセージに添えて
ポケモンAPIからポケモン名と画像を返す仕様としました。

まず、1つ目のHTTPモジュール(Make a request)にポケモンAPIのURLを貼り付けます。このとき、Query string
Nameにlimit、Valueに30と入力し
、ポケモンAPIの中から30体のポケモンのみを抽出するようにしました。

次に2つ目のHTTPモジュール(Make a request)のURL欄に1つ目のHTTPモジュールで抽出したポケモンのURLを指定します。
(URL欄に13. Date.results[ ]: urlを入力)

最後にLINE(Send a Reply Message)で2つ目のHTTPモジュールからポケモンの詳細を抽出します。
今回はテキストメッセージに加えて、Text13.Date.results[ ]: nameを入力し名前(英語表記)を
image20. date:sprites:other:official-artwork:front_defaultを選択して画像をゲットしました!

本当は30体のポケモンの中から、ランダムに画像をゲットしたかったのですが、うまくいかなかったので
次回の課題とします。

これが今回の翻訳LINE bot作成の一通りの作業です!

反省点、今後改良したい点

  • 当初目論んでいたOCRができなかった。
  • 技術の向上のためhttpからJSONを取得して活用したかったができなかった。
  • 翻訳後に返ってきたテキストの『C』とか『J』とかを取り除きたい。
  • Time Stampの日時を調整したい。保存するスプレッドシートを美しくしたい。
  • ベトナム語を追加したかったが、DeepLは対応していなかったので別のAPIで対応する。

細かく言えばいっぱいありますが、これから改良していきたいです!

最後に~無限の可能性~

今回の1週間チャレンジの作成結果は以上ですが、多くの学びのある刺激的な1週間でした!

学びを通じて世の中には様々なAPIがある事を知りましたが、APIの組み合わせ次第では
私のようなOVER40の初心者でも無限の可能性のあるITツールを作成できるのではないか
ということです。(Make必須!!)

今回の作成のほとんど(全てに近いほとんど)が過去の記事を参考にさせて頂きましたが、
この分野の進歩が早いのは諸先輩方が自分の知識を惜しげもなく共有し、
それを皆で吸収してより新しいものを生み出しているからだと感じています。

ITの分野ではOVER40どころかまだまだ赤ちゃんですが、年齢は関係なくこれからも
どんどん学んで、どんどん新しいものにチャレンジしていきたいです!

最後に何とか作成できたのも記事を共有して頂いた方や、助言を頂いた方のおかげです。
ありがとうございました!

4
1
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
4
1