5.3K Views
June 29, 22
スライド概要
2022/6/29
LINEDC Monthly LT #3 -【LINEと繋がるプラットフォーム集合〜サーバレス特集】
での発表資料です。
C#やAzureなどMS関連技術とLINE関連技術が好きです。
Azure サーバーレスによる LINE Bot 時短開発の極意 LINEDC Monthly LT #3 -【LINEと繋がるプラットフォーム集合〜サーバレス特集】 2022/6/29 平林 拓将(ひらりん) himarin269 / himanago
About me • name: 平林 拓将(ひらりん) • work: テクニカルトレーナー&開発 • award/title: - Microsoft MVP for Azure(2019.11~) - LINE API Expert(2020.3~) • like: - C# / serverless / cross-platform • book: - LINE API 実践ガイド (第5章前半 Azure × CLOVA) • social: - Twitter:@himarin269 GitHub:himanago Blog:https://himanago.hatenablog.com/
はじめに おすすめです! LINE Platform × Microsoft Azure 時短開発可能! ちょっとフローが複雑な Bot も簡単に作れるかも
今回お話しすること(15分) • Microsoft Azure のサーバーレスには便利な機能 がたくさんあります • LINE API との相性も良く、組み合わせ次第で 開発の効率が大幅アップします • 今回は Azure サーバーレスによる LINE Bot 開発の時短テクニックをいくつかご紹介します
LINE Bot 開発(Messaging API) 1. メッセージ送受信 • LINEからのイベントはWebhookで受信 • Pushメッセージ送信などはAPIを叩く 2. リッチメニュー制御 • Bot単位・ユーザー単位で設定 • Messaging APIからも紐付けられる ※ LINE公式アカウント:リッチメニュープレイグラウンド
Messaging API の Webhook エンドポイント • Bot のバックエンドは好きなサーバーが使える Bot backend server HTTPS で JSON のやりとりができれば OK → Azure で構築する場合の選択肢もたくさん
Messaging API によるリッチメニュー操作 • 自由なレイアウトの画像を使ったりユーザーごとに 異なるリッチメニューを適用させたりできる 運用や連携を考えると Messaging APIのほうが 総合的に時短になることも! https://developers.line.biz/ja/docs/messaging-api/using-rich-menus/#using-rich-menus-introduction
Azure サーバーレス
サンプル紹介:会員証機能をもつBot • Botとの対話で会員登録 • デジタル会員証(QRコード)を 発行してリッチメニューに設定 https://github.com/himanago/azure-linebot-members-card-sample
今回使う Azure サービス Azure Functions Azure Cosmos DB • どちらもサーバーレス&安価に運用できるおすすめサービス • Durable Functionsによるステートフルな処理を実現 • Change Feed+Cosmos DBトリガーで連携も可能
Durable Functions "Durable"な(=持続性のある/丈夫な)処理をシンプルな関数コードの組み合わせだけで作れる! 関数チェーン ファンアウト/ファンイン 監視 非同期 HTTP API 人による操作 大量処理や連携などのワークフローをシンプルにコードだけで実現
Change Feed(変更フィード) • データの変更があった場合にFunctionをトリガー • 追加・変更に対応(順序保証あり) ★ Azure Cosmos DB の変更フィードの設計パターン https://docs.microsoft.com/ja-jp/azure/cosmos-db/change-feed-design-patterns
デモ ① 会員登録開始(クイックリプライ で確認) ② 会員名送信依頼 ③ 会員名送信 ④ 完了メッセージ ⑤ デジタル会員証(リッチメニュー) 発行
デモ ① ② ⑤ ③ ④
会員登録フローをサーバーレスで実現 LINEユーザーIDを インスタンスIDとして起動 ①会員登録開始 ②会員名送信依頼 Bot オーケストレーター HTTPトリガー イベント 待機 リッチ メニュー 会員名を 渡す アクティビティ ③会員名の送信 ④完了メッセージ イベント発火 インスタンスID(LINEユーザーID) とイベント名を指定 ⑤会員証発行 会員名 保存 Change Feed QRコード生成& リッチメニュー登録 Cosmos DBトリガー Cosmos DB
その他の時短テク
その他のおすすめ時短テク Change Feed を起点としたメッセージ配信 データ 登録 Change Feed Push メッセージ Bot DBに登録した内容をもとにした メッセージ配信システムを簡単に構築できる! 参考:LINE Developers Community REV UP 2021 「意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム」 https://youtu.be/bOdEcLqcM0M
その他のおすすめ時短テク 入出力バインディング(Azure Functions) • DBやストレージなどへの入出力処理に関する コードを簡易化できる ★Cosmos DBへの出力バインディングの例(JS) module.exports = async function (context, item) { context.bindings.accountDocument = JSON.stringify(item); }; ※ 接続情報などは function.json に記述します
その他のおすすめ時短テク Static Web Apps で LIFF と Bot を同時開発・管理 Static Web App リポジトリ /front </> ブラウザ /api API バックエンドAPI(Azure Functions)を 同一リポジトリで開発・デプロイ クロスオリジン制約を 気にすることなく アクセス可能
その他のおすすめ時短テク Azure Logic Apps Azure内外のサービス連携がノーコードで実現 • AI系サービスとの組み合わせも楽 • コードで実装する場合 SDK の使い方を 覚える必要があるが、Logic App では不要
その他のおすすめ時短テク Azure Logic Apps LINE Bot 用テンプレートも作りました https://github.com/himanago/azure-logicapp-linebot-templates ★解説はこちら: LINE Bot のバックエンドにできる Azure Logic Apps のフローを GitHub のボタンから 1 クリックでデプロイできるようにしてみた https://himanago.hatenablog.com/entry/2021/12/31/102406
まとめ • Microsoft Azure のサーバーレスには便利な機能 がたくさんあります • LINE API との相性も良く、組み合わせ次第で 開発の効率が大幅アップします • Azure サーバーレスによる時短テクニックで よりよい LINE Bot 開発を!