LINE Botのローディングアニメーションとは
この記事にたどり着いたということは改めて説明する必要はないと思いますが、軽く説明します。
3分で終わらせたい方は目次から「★makeでの実装手順」 の章まで読み飛ばしてください。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3597730%2Ffeb49a6f-e58f-ed84-7a3d-8194458a7509.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=eff8c5d835cbf6a0237496c4daab191f)
こんな風に処理中であることを視覚化するというユーザビリティ手法の一つです。
これがないとユーザーは処理がフリーズしているのか生きているのか分からなくて不安ですよね。
生成AIを取り入れたプロダクトが普及していますが、一方で処理に待ち時間がかかってしまうという課題もあります。
その課題による不安を軽減するうえでも、処理中であることを視覚化することは有効な手段ではないでしょうか。
プッシュメッセージを使えばよいのでは?
たしかにプッシュメッセージを使用してローディングメッセージを表示し、処理中であることを視覚化することも可能です。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3597730%2Fc3118d1a-a2a6-479b-a942-7b4affae4947.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=1dcbca1532e3eb29f3b7d486221ff60a)
ただ、プッシュメッセージと比較して以下3つのメリットがあります。
- ローディングメッセージのメリット
- ①制限なく利用することができる。無料プランだとプッシュメッセージは月間200通まで (2024年6月現在)
- ②メッセージとして残らないので、トーク画面がスッキリする。
- ③●●●の玉が踊っているのがかわいい ←ここ重要
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3597730%2F5c063b68-20c1-2951-0619-2c6af6340e7d.jpeg?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b97a13cadc397cdd40f4fa3b57a06917)
★makeでの実装手順
対象の方
LINE DevelopersでLINE Botを作成し、難度問わずmakeで何かしらのプロダクトを作ったことがある方
Ⅰ. makeでHTTPモジュールを用意
まずシナリオを開く
空白のスペースで右クリックしてAdd a module
を選択
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3597730%2F280bdddf-ced4-8738-f665-930ebad21897.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=6465d009400c01044d4061cd43dc393a)
HTTPモジュールのMake a request
を選択
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3597730%2F58e04a89-68e7-417b-a2fa-9a0764a7f04c.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=5fcc38b9331b9ba88e9de822da113549)
エラーが出ますが一旦Cancel
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3597730%2F31d4d278-2c9a-1024-1e48-f4b373566758.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=87ede5e6a59f7e58f7c71ac6dd36b9c0)
LINEモジュールのWatch Eventsと任意のモジュールの間にHTTPモジュールを接続
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3597730%2Ff9894e75-a2bd-ba9a-8dc6-e1bc8c2867f4.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=248fed369df1e7280152d6739b405a0b)
HTTPモジュールを左クリックする
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3597730%2Ffe57428b-7a48-f076-456a-091f3cb0707b.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=3f4dad2c9a5a4d79862b32ccb460f7da)
Headersの下のAdd a header
を選択
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3597730%2F592282cf-b123-9e0b-0747-8da5ba7c93ae.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=3cb214e4f8b0cec77918cbedc953fa89)
これで準備完了
Ⅱ. リクエストの例に従って各項目を埋めていく
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3597730%2F8ff85461-7ad7-573f-6363-3e0e117026f1.jpeg?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=adbefb51013a4e02eb9925dbd2669851)
8箇所設定する項目があります。
上から埋めていきましょう。
https://api.line.me/v2/bot/chat/loading/start
POST を選択
Authorization
Bearer {}
波かっこ {} の中にLINE Developersからご自身のチャネルアクセストークン(長期)をコピペしてください。
Bearerと{}の間には半角スペースが必要です。
SNS発信やWeb会議で画面共有する際は、チャネルアクセストークンは絶対に隠してください。
悪用される恐れがあります。
万が一流用した可能性がある場合、即刻LINE Botアカウントを削除し、新規で作り直してください。
RAW を選択
JSON (application/json) を選択
{
"chatId": "",
"loadingSeconds": 5
}
"chatId":の "" の中身はご自身のmakeのLINEモジュールのWatch Eventsから
Events[] → Source[]とタブを開いていきUserIDを選択してください。
一応Resquest contentのサンプル
{
"chatId": "{{1.events[].source.userId}}",
"loadingSeconds": 5
}
今回はYES/NOどちらでも構いません
私はYESにしました
Ⅲ. 動作確認
makeでRun onceを選択して、LINE Botにメッセージを送ってみましょう。
動きました。完成です。皆さんどうでしょうか。
Ⅳ. 補足(動作しなかった場合のみ)
まず、ご使用のLINEのバージョンが以下を満たしているか確認してください。LINEアプリのバージョンを確認する方法
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3597730%2F33e8ca07-979d-ab8e-5489-a5b5764af6cd.jpeg?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=c4884ebe9e587561b832973af5cfa287)
上記を満たしているのにも関わらず、アニメーションが表示されなかった場合は、HTTPモジュールの虫眼鏡マークからステータスを確認してみましょう。
正しくアニメーションが表示される場合は、ステータスコード202
と空のJSONオブジェクト
{}
を返します。
例えば、ステータスコード400
を返している場合、以下のような要因が考えられます。
- 無効な秒数が指定されています。
- 無効なユーザーIDが指定されています。
- グループトークまたは複数人トークが指定されています。
なお、以下のユーザーを表示先に指定してリクエストを行った場合、ステータスコード202
が返りますが、実際にはローディングアニメーションは表示されません。
- LINE公式アカウントとのトーク画面を開いていないユーザー
- LINE公式アカウントを友だち追加していないユーザー
- LINE公式アカウントをブロックしているユーザー
- LINEアカウントを削除したユーザー
それでも解決できない場合は、Messaging APIリファレンスの「ローディングのアニメーションを表示する」の項などを参照して見直してみてください。
エピローグ
LINE Botのローディングアニメーションは2024/4/17に発表された、執筆時点では比較的新しい技術です。
一人で悩まず、この記事を見てサクッと実装していただければ幸いです。
ぜひご自身のプロダクト、ハッカソンなどに利用してみてください。
お気軽に𝕏のフォローもお待ちしております☻
感想、フィードバックなどもお待ちしております🙌