SlideShare a Scribd company logo
1 of 28
Download to read offline
Azureサーバーレス&LINE API
フル活用のシステム事例紹介!
平林 拓将(ひらりん)
himarin269 / himanago
クラウドが得意なLINE API Expert集合!サーバレス×LINEでアプリ開発してみたLT
2020/5/28
About me
• name: 平林 拓将(ひらりん)
• work: テクニカルトレーナー&開発
• award/title:
- Microsoft MVP for Azure(2019.11~)
- LINE API Expert(2020.3~)
• like:
- C# / serverless / cross-platform
• social:
- Twitter:@himarin269
- GitHub:himanago
- Blog:http://himanago.hatenablog.com/
Azureサーバーレスいろいろ
Pickup
• Azure Functions
• Azure Cosmos DB
• Azure SignalR Service
Azure Functions
• サーバーレスなコード実行環境
• さまざまな言語に対応 & カスタムハンドラー
• 豊富なトリガーと入出力バインディング
Azure Cosmos DB
• 惑星規模のアプリケーションにも対応
• Free Tier 登場で小規模向けにも使
いやすく
• サーバーレスへの対応
Azure SignalR
Service
• クライアントをリアルタイム更新する
WebSocket のためのサービス
• 出力バインディングでFunctions
と簡単に統合できる
Azureサーバーレスフル活用の
システム事例 with LINE API
システム(バックエンド)
各種スキル
(自動応答)
システム概要 ~2つの応答モードをもつ LINE Bot ~
Bot
LIFF
skill
skill
skill
NLU
ユーザー
管理・運営側
個別トーク
エンド
ポイント
管理画面
(ブラウザ)
自動応答と担当者との
個別トークをユーザーが
切り替えて利用
自然言語処理により
適切な Bot スキルを
呼び出し、対話フローを開始
Botユーザーとの
リアルタイムなチャット
自動応答の対話フローと
LIFF画面を併用
&
icon / nickname switch
応答モード?
• LINE Official Account Manager から設定できるけど…
Bot 全体で動作が
切り替わってしまう!
ユーザーごとに
応答モードを
変えたい!
システム(バックエンド)
各種スキル
(自動応答)
Bot
LIFF
skill
skill
skill
NLU
ユーザー
エンド
ポイント
自動応答と担当者との
個別トークをユーザーが
切り替えて利用
管理・運営側
個別トーク 管理画面
(ブラウザ)
Botユーザーとの
リアルタイムなチャット
応答モードの切り替えと
個別トーク画面を実装!
① LINE とチャットできる“リアルタイムWeb”
Botの友だちとリアルタイムチャット
じろう
たろう
さぶろう
しろう
ごろう
はなこ
2
元気ですか?
送信
こんにちはー
こんにちは!
個別トーク
(リアルタイムチャット)
友だちの一覧
新着通知も
リアルタイム
データの更新をリアルタイムに反映
出典: Azure Functions で SignalR Service バインドを使用したリアルタイムのサーバーレス アプリケーション
https://azure.microsoft.com/ja-jp/blog/real-time-serverless-applications-with-the-signalr-service-bindings-in-azure-functions/
システム(バックエンド)
各種スキル
(自動応答)
Bot
LIFF
skill
skill
skill
NLU
ユーザー
エンド
ポイント
自動応答と担当者との
個別トークをユーザーが
切り替えて利用
管理・運営側
個別トーク 管理画面
(ブラウザ)
Botユーザーとの
リアルタイムなチャット
Bot
エンド
ポイント
個別トーク 管理画面
(ブラウザ)
LINE とチャットできる“リアルタイムWeb”
メッセージを保存 Change Feed
(Cosmos DB Trigger)
出力バインディング
SignalR Service
HTTPトリガー
Cosmos DB
Functions リアルタイム更新
Bot
エンド
ポイント
個別トーク 管理画面
(ブラウザ)
Web → LINE も同じしくみ
Push Message
メッセージ保存
メッセージ送信
icon / nickname switch により
運営側ユーザーのアイコンと表示名で送信
システム(バックエンド)
各種スキル
(自動応答)
Bot
LIFF
ユーザー
管理・運営側
個別トーク
エンド
ポイント
管理画面
(ブラウザ)
自然言語処理により
適切な Bot スキルを
呼び出し、対話フローを開始
② 自然言語処理&自動応答
skill
skill
skill
NLU
Bot
エンド
ポイント
skill
skill
skill
NLU
「スキル」という単位で
自動応答の機能を実装
https://github.com/nkjm/bot-express
複数回の対話フローでスキルを実行
(割り込みによる中断・再開も可)
※ イメージはAzure Functions(C#)版 bot-express
自然言語処理は
好きなものを
システム(バックエンド)
各種スキル
(自動応答)
Bot
LIFF
skill
skill
skill
NLU
ユーザー
管理・運営側
個別トーク
エンド
ポイント
管理画面
(ブラウザ)
自動応答の対話フローと
LIFF画面を併用
③ Messaging API と LIFF の連携
Durable Functions
• 3種の関数を組み合わせてステートフルな処理を
実現する Azure Functions の拡張機能
スターター関数 オーケストレーター関数 アクティビティ関数
• HTTPトリガーなど通常の関数
• オーケストレーターを起動する
• ステートフルな処理をとりまとめる
関数オーケストレーションを担当
• 裏で何度も再実行され、持続的な
処理としてふるまう
• オーケストレーターからの実行指
示で起動する関数
• アプリケーションの機能を担当
アクティビティ関数
アクティビティ関数
履歴などの実行情報をストレージに書き込んで勝手に管理してくれる!
システム(バックエンド)
各種スキル
(自動応答)
Bot
LIFF
skill
skill
skill
NLU
ユーザー
管理・運営側
個別トーク
エンド
ポイント
管理画面
(ブラウザ)
自動応答の対話フローと
LIFF画面を併用
Bot
LIFF
エンド
ポイント
Messaging API と LIFF の連携
HTTPトリガー オーケストレーター
LIFFのURLを返却 イベント待機
WaitForExternalEvent
アクティビティ
インスタンスID(LINEユーザーID)
とイベント名を指定
LIFFの入力を
前提とした処理
何らかの処理
+
RaiseEventAsync
LINEユーザーIDを
インスタンスIDとして起動
LIFFの入力データ
イベント発火
システム(バックエンド)
各種スキル
(自動応答)
Bot
LIFF
skill
skill
skill
NLU
ユーザー
エンド
ポイント
自動応答と担当者との
個別トークをユーザーが
切り替えて利用
管理・運営側
個別トーク 管理画面
(ブラウザ)
④ ユーザーごとに切り替わる応答モード
エンティティ関数(Durable Entities)
• Durable Functions の新機能(2.0~)
• サーバーレスな関数でありながら、一意なIDを持って
単独で状態を保持できる
システム(バックエンド)
各種スキル
(自動応答)
Bot
LIFF
skill
skill
skill
NLU
ユーザー
エンド
ポイント
自動応答と担当者との
個別トークをユーザーが
切り替えて利用
管理・運営側
個別トーク 管理画面
(ブラウザ)
Bot
エンド
ポイント
各種スキル
(自動応答)
個別トーク
ユーザーごとに切り替わる応答モード
HTTPトリガー
Functions
エンティティ関数
応答モードの設定
LINEユーザーIDを
エンティティIDとして
状態(個別トークが
ONかどうか)を保持
応答モードの確認
リッチメニューから
個別トークの
ON/OFF切り替え ユーザーごとに
応答方法が変化
システム(バックエンド)
各種スキル
(自動応答)
システム概要 ~2つの応答モードをもつ LINE Bot ~
Bot
LIFF
skill
skill
skill
NLU
ユーザー
管理・運営側
個別トーク
エンド
ポイント
管理画面
(ブラウザ)
自動応答と担当者との
個別トークをユーザーが
切り替えて利用
自然言語処理により
適切な Bot スキルを
呼び出し、対話フローを開始
Botユーザーとの
リアルタイムなチャット
自動応答の対話フローと
LIFF画面を併用
&
icon / nickname switch
まとめ
• Azure Functionsを軸に
イベント駆動でサービスが簡単につながる
• ステートフルな Durable Functions は
LINE API と相性抜群
• Azure サーバーレス × LINE API はいいぞ

More Related Content

More from 拓将 平林

Azure Application GatewayでオンプレDMZをクラウドへ拡張する
Azure Application GatewayでオンプレDMZをクラウドへ拡張するAzure Application GatewayでオンプレDMZをクラウドへ拡張する
Azure Application GatewayでオンプレDMZをクラウドへ拡張する拓将 平林
 
Clova「おしゃべり禁止モード」
Clova「おしゃべり禁止モード」Clova「おしゃべり禁止モード」
Clova「おしゃべり禁止モード」拓将 平林
 
Micronaut on Azure 試してみた
Micronaut on Azure 試してみたMicronaut on Azure 試してみた
Micronaut on Azure 試してみた拓将 平林
 
Xamarin.Forms with VUI(JXUG 2019/8/31)
Xamarin.Forms with VUI(JXUG 2019/8/31)Xamarin.Forms with VUI(JXUG 2019/8/31)
Xamarin.Forms with VUI(JXUG 2019/8/31)拓将 平林
 
サーバーレスWebアプリケーションを作ろう~AWSと比べてみる~
サーバーレスWebアプリケーションを作ろう~AWSと比べてみる~サーバーレスWebアプリケーションを作ろう~AWSと比べてみる~
サーバーレスWebアプリケーションを作ろう~AWSと比べてみる~拓将 平林
 
【朗報】無音無限ループは禁術じゃなかった!
【朗報】無音無限ループは禁術じゃなかった!【朗報】無音無限ループは禁術じゃなかった!
【朗報】無音無限ループは禁術じゃなかった!拓将 平林
 
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~拓将 平林
 
Bot Serviceだけじゃない!Azureで加速させるLINE開発~Clova腹話術スキルの紹介~
Bot Serviceだけじゃない!Azureで加速させるLINE開発~Clova腹話術スキルの紹介~Bot Serviceだけじゃない!Azureで加速させるLINE開発~Clova腹話術スキルの紹介~
Bot Serviceだけじゃない!Azureで加速させるLINE開発~Clova腹話術スキルの紹介~拓将 平林
 
Clova腹話術スキルの紹介
Clova腹話術スキルの紹介Clova腹話術スキルの紹介
Clova腹話術スキルの紹介拓将 平林
 
Azure&C#によるClovaスキル+LINE Bot短期開発
Azure&C#によるClovaスキル+LINE Bot短期開発Azure&C#によるClovaスキル+LINE Bot短期開発
Azure&C#によるClovaスキル+LINE Bot短期開発拓将 平林
 
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて拓将 平林
 
最近Azure上でXamarinを触り始めた話
最近Azure上でXamarinを触り始めた話最近Azure上でXamarinを触り始めた話
最近Azure上でXamarinを触り始めた話拓将 平林
 

More from 拓将 平林 (12)

Azure Application GatewayでオンプレDMZをクラウドへ拡張する
Azure Application GatewayでオンプレDMZをクラウドへ拡張するAzure Application GatewayでオンプレDMZをクラウドへ拡張する
Azure Application GatewayでオンプレDMZをクラウドへ拡張する
 
Clova「おしゃべり禁止モード」
Clova「おしゃべり禁止モード」Clova「おしゃべり禁止モード」
Clova「おしゃべり禁止モード」
 
Micronaut on Azure 試してみた
Micronaut on Azure 試してみたMicronaut on Azure 試してみた
Micronaut on Azure 試してみた
 
Xamarin.Forms with VUI(JXUG 2019/8/31)
Xamarin.Forms with VUI(JXUG 2019/8/31)Xamarin.Forms with VUI(JXUG 2019/8/31)
Xamarin.Forms with VUI(JXUG 2019/8/31)
 
サーバーレスWebアプリケーションを作ろう~AWSと比べてみる~
サーバーレスWebアプリケーションを作ろう~AWSと比べてみる~サーバーレスWebアプリケーションを作ろう~AWSと比べてみる~
サーバーレスWebアプリケーションを作ろう~AWSと比べてみる~
 
【朗報】無音無限ループは禁術じゃなかった!
【朗報】無音無限ループは禁術じゃなかった!【朗報】無音無限ループは禁術じゃなかった!
【朗報】無音無限ループは禁術じゃなかった!
 
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
 
Bot Serviceだけじゃない!Azureで加速させるLINE開発~Clova腹話術スキルの紹介~
Bot Serviceだけじゃない!Azureで加速させるLINE開発~Clova腹話術スキルの紹介~Bot Serviceだけじゃない!Azureで加速させるLINE開発~Clova腹話術スキルの紹介~
Bot Serviceだけじゃない!Azureで加速させるLINE開発~Clova腹話術スキルの紹介~
 
Clova腹話術スキルの紹介
Clova腹話術スキルの紹介Clova腹話術スキルの紹介
Clova腹話術スキルの紹介
 
Azure&C#によるClovaスキル+LINE Bot短期開発
Azure&C#によるClovaスキル+LINE Bot短期開発Azure&C#によるClovaスキル+LINE Bot短期開発
Azure&C#によるClovaスキル+LINE Bot短期開発
 
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて
 
最近Azure上でXamarinを触り始めた話
最近Azure上でXamarinを触り始めた話最近Azure上でXamarinを触り始めた話
最近Azure上でXamarinを触り始めた話
 

Azureサーバーレス&LINE API フル活用のシステム事例紹介!