SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
Azure&C#による
Clovaスキル+LINE Bot短期開発
.NET Conf 2018 Tokyo, Japan
<Unconference>
Takumasa Hirabayashi
自己紹介
• Name
• 平林 拓将(ひらりん)
• Work
• Webシステム開発&技術系研修講師
• Like
• C# / Xamarin / Groovy / Grails /
Web / DB / Azure / LINE
• Social
• Twitter:@himarin269
• Blog:http://himanago.hatenablog.com/
スマートスピーカー使ってますか?
https://trendy.nikkeibp.co.jp/atcl/column/17/022800073/022800001/
当たりました
http://cp.glico.jp/pretz2018cp/
せっかくなので何かスキルを作りたい!
https://www.line-community.me/awards/about
• LINE BotやClovaスキルの開発コンテスト
• グランプリは賞金1000万円
LINE BOOT AWARDS 2018にエントリーしてみました
• 9/23(日) 当選したClova Friendsを受け取る
• 10/2(火) Cogbot勉強会参加
• 10/4(木) Clovaスキルで作りたいものを思いつく
• 10/6(土) 開発(Clovaスキル開発)
• 10/7(日) 開発(もくもく会参加。LINE Bot開発)
• 10/8(月) 開発(Clova+Botの結合)
• 10/10(水) [応募締切日]
開発作業は
実質4日間
Azureを活用してClovaとLINEを連携したシステムを
実質4日間で作った経験談をさせていただきます
開発仕上げ・資料づくり
つくったもの
「Clova&LINEで絵本読み聞かせ」
Clovaデバイス LINEアプリ
昔々あるところに…
• Clovaがお話を読み、その場面の絵を読み上げに合わせてLINEに送ってくれる!
• 読み上げ音声は登場人物や場面によって異なる声/話し方!
連動!
ねぇClova、
“絵本読み聞かせ”
を開いて
“桃太郎”を
読んで
デモ
https://www.youtube.com/watch?v=1gh6XSDtip4
Clovaスキル開発の基本
• CEK(Clova Extension Kit)がユーザーの発話と処理をつなぐ
CEK
Extension
サーバー
(任意の環境)
• 対話モデルの定義
• ユーザーの発話を解釈し、インテント
(意図)やスロット(変数)の値などを
Extensionサーバーに渡す
• Extensionサーバーから送り返された内
容をClovaデバイスにしゃべらせたり、
音楽を流させる
Clovaデバイス • CEKで定義したインテント
ごとの処理を開発
• HTTP通信ができれば好きな
環境/言語でOK
LINE Bot開発の基本
• Messaging APIが「Reply」と「Push」それぞれで仲介を行う
バックエンド
サーバー
(任意の環境)
• ユーザーからのメッセージをそのまま
バックエンドに送り、バックエンドから
の要求に沿ってユーザーに返信のメッ
セージを送るReply API
• 任意のユーザー/グループに対してメッ
セージを送るPush API
• 豊富なメッセージ形式から選べる
• Messaging APIから送られ
るメッセージを解釈し、そ
の内容に応じた処理を実施
• 任意のタイミングで
Messaging APIにPush要求
を行う処理
LINEアプリ
Messaging API
今回のシステム構成
CEK
Messaging API
Functions
バックエンド全般
Blob Storage
画像格納用
Cosmos DB
読み上げ文章データ
読み上げ
音声合成
Clovaデバイス
LINEアプリ
AzureでLINE開発 ~ ① Azure Functions
• BotもClovaスキルもカバーできる
• レスポンスが気になるのでApp Serviceプランで作成
• LINE Payと連携する場合は必須?
• 場合によってはDurable Functionsで複雑な処理も作れる
• デバッグはけっこう大変
• リモートデバッグは使えない
• タイムアウトしてしまう
• よく迷子になる
• log.Info、log.Errorなどを利用
• シミュレーターもあるとのこと
AzureでLINE開発 ~ ② Blob Storage
• Blob StorageとBotのメディア系メッセージは相性がいい
• 画像メッセージなどを送る際はバイナリデータではなくURL指定
• Blob Storageに格納したデータはURLアクセスさせることができるのでBotで画像を
送ったりすることがとても楽
• Blob StorageもCosmos DBも
Azure Storage Explorerから操作できる
AzureでLINE開発 ~ ② Blob Storage
• イメージマップメッセージを使う場合
• LINEのトーク画面に大きな画像を表示し、画像をタップした際のアクションなどを
定義できるメッセージ
• デバイスの幅に合わせた画像の用意が必要(240px, 300px, 460px, 700px, 1040px)
• それぞれ「baseUrl/{画像の幅サイズ}」の形式でアクセスできるようにする
画像ファイルのファイル名を「240」「300」など
拡張子なしにして絵ごとにディレクトリを分けて保存
C#で開発する際の注意事項
• 公式がC# SDKを用意していない
• 公式で用意している
• Messaging API→Java, PHP, Go, Perl, Ruby, Python, Node.js
• CEK→Node.js , Python, Java, Swift, Kotlin, Elixir, Go
• Alexa(Amazon)に勝ちたいならAzureと仲良くしても損はないのでは?
• コミュニティSDKがあるので、それを利用する
• 対応している機能がない場合などはその部分だけ自前で実装
• コミュニティSDKの発展に貢献していくことも重要
おわりに
• Azureを使うと各バックエンドが簡単に用意できる
• 特に開発者がプログラミングに注力できるサーバーレスは◎
• 今回作った関数は3つ、コード行数は全部で700行くらい
• 締め切りや目標があると頑張れる
• 短い期間でもAzureで手軽に実現できた
• 開発者が集まるホットな技術分野は楽しい
• 周辺ツールやSDK、開発Tipsなどコミュニティの充実も

Weitere ähnliche Inhalte

Ähnlich wie Azure&C#によるClovaスキル+LINE Bot短期開発

JAZUG に参加してMicrosoft MVP になった話
JAZUG に参加してMicrosoft MVP になった話JAZUG に参加してMicrosoft MVP になった話
JAZUG に参加してMicrosoft MVP になった話拓将 平林
 
.NET ラボ 勉強会 C# でラインプラットフォーム開発
.NET ラボ 勉強会 C# でラインプラットフォーム開発.NET ラボ 勉強会 C# でラインプラットフォーム開発
.NET ラボ 勉強会 C# でラインプラットフォーム開発Kenichiro Nakamura
 
C# Tokyo Guide 2020/04/03
C# Tokyo Guide 2020/04/03C# Tokyo Guide 2020/04/03
C# Tokyo Guide 2020/04/03m ishizaki
 
C# Tokyo コミュニティ説明 20200925
C# Tokyo コミュニティ説明 20200925C# Tokyo コミュニティ説明 20200925
C# Tokyo コミュニティ説明 20200925m ishizaki
 
HTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なことHTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なことMasakazu Muraoka
 
C# Tokyo はじめました
C# Tokyo はじめましたC# Tokyo はじめました
C# Tokyo はじめましたm ishizaki
 
C# Tokyo コミュニティ説明 2020/11/27 版
C# Tokyo コミュニティ説明 2020/11/27 版C# Tokyo コミュニティ説明 2020/11/27 版
C# Tokyo コミュニティ説明 2020/11/27 版m ishizaki
 
Clova腹話術スキルの紹介
Clova腹話術スキルの紹介Clova腹話術スキルの紹介
Clova腹話術スキルの紹介拓将 平林
 
.NET開発者は、なぜクロスプラットフォームに取り組むべきか
.NET開発者は、なぜクロスプラットフォームに取り組むべきか.NET開発者は、なぜクロスプラットフォームに取り組むべきか
.NET開発者は、なぜクロスプラットフォームに取り組むべきかHiroyuki Mori
 
C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版m ishizaki
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築You&I
 
C# Tokyo コミュニティ案内 20201217
C# Tokyo コミュニティ案内 20201217C# Tokyo コミュニティ案内 20201217
C# Tokyo コミュニティ案内 20201217m ishizaki
 
Micronaut on Azure 試してみた
Micronaut on Azure 試してみたMicronaut on Azure 試してみた
Micronaut on Azure 試してみた拓将 平林
 
組み込みメーカーだからこそのAWS Cognitoの使い方
組み込みメーカーだからこそのAWS Cognitoの使い方組み込みメーカーだからこそのAWS Cognitoの使い方
組み込みメーカーだからこそのAWS Cognitoの使い方shotaueda3
 
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~拓将 平林
 
スクレイピングその後
スクレイピングその後スクレイピングその後
スクレイピングその後Tomoki Hasegawa
 
WordCampバンコクに行ってきた
WordCampバンコクに行ってきたWordCampバンコクに行ってきた
WordCampバンコクに行ってきたShoko Matsuo
 
C# Tokyo コミュニティについて 20200522
C# Tokyo コミュニティについて 20200522C# Tokyo コミュニティについて 20200522
C# Tokyo コミュニティについて 20200522m ishizaki
 
C# Tokyo 案内 2020/08/26
C# Tokyo 案内 2020/08/26C# Tokyo 案内 2020/08/26
C# Tokyo 案内 2020/08/26m ishizaki
 
QtでC++開発環境構築
QtでC++開発環境構築QtでC++開発環境構築
QtでC++開発環境構築You&I
 

Ähnlich wie Azure&C#によるClovaスキル+LINE Bot短期開発 (20)

JAZUG に参加してMicrosoft MVP になった話
JAZUG に参加してMicrosoft MVP になった話JAZUG に参加してMicrosoft MVP になった話
JAZUG に参加してMicrosoft MVP になった話
 
.NET ラボ 勉強会 C# でラインプラットフォーム開発
.NET ラボ 勉強会 C# でラインプラットフォーム開発.NET ラボ 勉強会 C# でラインプラットフォーム開発
.NET ラボ 勉強会 C# でラインプラットフォーム開発
 
C# Tokyo Guide 2020/04/03
C# Tokyo Guide 2020/04/03C# Tokyo Guide 2020/04/03
C# Tokyo Guide 2020/04/03
 
C# Tokyo コミュニティ説明 20200925
C# Tokyo コミュニティ説明 20200925C# Tokyo コミュニティ説明 20200925
C# Tokyo コミュニティ説明 20200925
 
HTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なことHTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なこと
 
C# Tokyo はじめました
C# Tokyo はじめましたC# Tokyo はじめました
C# Tokyo はじめました
 
C# Tokyo コミュニティ説明 2020/11/27 版
C# Tokyo コミュニティ説明 2020/11/27 版C# Tokyo コミュニティ説明 2020/11/27 版
C# Tokyo コミュニティ説明 2020/11/27 版
 
Clova腹話術スキルの紹介
Clova腹話術スキルの紹介Clova腹話術スキルの紹介
Clova腹話術スキルの紹介
 
.NET開発者は、なぜクロスプラットフォームに取り組むべきか
.NET開発者は、なぜクロスプラットフォームに取り組むべきか.NET開発者は、なぜクロスプラットフォームに取り組むべきか
.NET開発者は、なぜクロスプラットフォームに取り組むべきか
 
C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
C# Tokyo コミュニティ案内 20201217
C# Tokyo コミュニティ案内 20201217C# Tokyo コミュニティ案内 20201217
C# Tokyo コミュニティ案内 20201217
 
Micronaut on Azure 試してみた
Micronaut on Azure 試してみたMicronaut on Azure 試してみた
Micronaut on Azure 試してみた
 
組み込みメーカーだからこそのAWS Cognitoの使い方
組み込みメーカーだからこそのAWS Cognitoの使い方組み込みメーカーだからこそのAWS Cognitoの使い方
組み込みメーカーだからこそのAWS Cognitoの使い方
 
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
 
スクレイピングその後
スクレイピングその後スクレイピングその後
スクレイピングその後
 
WordCampバンコクに行ってきた
WordCampバンコクに行ってきたWordCampバンコクに行ってきた
WordCampバンコクに行ってきた
 
C# Tokyo コミュニティについて 20200522
C# Tokyo コミュニティについて 20200522C# Tokyo コミュニティについて 20200522
C# Tokyo コミュニティについて 20200522
 
C# Tokyo 案内 2020/08/26
C# Tokyo 案内 2020/08/26C# Tokyo 案内 2020/08/26
C# Tokyo 案内 2020/08/26
 
QtでC++開発環境構築
QtでC++開発環境構築QtでC++開発環境構築
QtでC++開発環境構築
 

Mehr von 拓将 平林

意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム
意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム
意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム拓将 平林
 
LINE API 紹介&LINE API Use Case(Azure編)
LINE API 紹介&LINE API Use Case(Azure編)LINE API 紹介&LINE API Use Case(Azure編)
LINE API 紹介&LINE API Use Case(Azure編)拓将 平林
 
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform拓将 平林
 
15分でわかる!Azure Static Web Apps
15分でわかる!Azure Static Web Apps15分でわかる!Azure Static Web Apps
15分でわかる!Azure Static Web Apps拓将 平林
 
[Ignite The Tour Osaka] OPS20:インシデントに対応する (Respomding to incidents)
[Ignite The Tour Osaka] OPS20:インシデントに対応する (Respomding to incidents)[Ignite The Tour Osaka] OPS20:インシデントに対応する (Respomding to incidents)
[Ignite The Tour Osaka] OPS20:インシデントに対応する (Respomding to incidents)拓将 平林
 
Azure Application GatewayでオンプレDMZをクラウドへ拡張する
Azure Application GatewayでオンプレDMZをクラウドへ拡張するAzure Application GatewayでオンプレDMZをクラウドへ拡張する
Azure Application GatewayでオンプレDMZをクラウドへ拡張する拓将 平林
 
Clova「おしゃべり禁止モード」
Clova「おしゃべり禁止モード」Clova「おしゃべり禁止モード」
Clova「おしゃべり禁止モード」拓将 平林
 
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と比べてみる~拓将 平林
 
【朗報】無音無限ループは禁術じゃなかった!
【朗報】無音無限ループは禁術じゃなかった!【朗報】無音無限ループは禁術じゃなかった!
【朗報】無音無限ループは禁術じゃなかった!拓将 平林
 
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて拓将 平林
 
最近Azure上でXamarinを触り始めた話
最近Azure上でXamarinを触り始めた話最近Azure上でXamarinを触り始めた話
最近Azure上でXamarinを触り始めた話拓将 平林
 

Mehr von 拓将 平林 (12)

意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム
意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム
意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム
 
LINE API 紹介&LINE API Use Case(Azure編)
LINE API 紹介&LINE API Use Case(Azure編)LINE API 紹介&LINE API Use Case(Azure編)
LINE API 紹介&LINE API Use Case(Azure編)
 
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
 
15分でわかる!Azure Static Web Apps
15分でわかる!Azure Static Web Apps15分でわかる!Azure Static Web Apps
15分でわかる!Azure Static Web Apps
 
[Ignite The Tour Osaka] OPS20:インシデントに対応する (Respomding to incidents)
[Ignite The Tour Osaka] OPS20:インシデントに対応する (Respomding to incidents)[Ignite The Tour Osaka] OPS20:インシデントに対応する (Respomding to incidents)
[Ignite The Tour Osaka] OPS20:インシデントに対応する (Respomding to incidents)
 
Azure Application GatewayでオンプレDMZをクラウドへ拡張する
Azure Application GatewayでオンプレDMZをクラウドへ拡張するAzure Application GatewayでオンプレDMZをクラウドへ拡張する
Azure Application GatewayでオンプレDMZをクラウドへ拡張する
 
Clova「おしゃべり禁止モード」
Clova「おしゃべり禁止モード」Clova「おしゃべり禁止モード」
Clova「おしゃべり禁止モード」
 
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と比べてみる~
 
【朗報】無音無限ループは禁術じゃなかった!
【朗報】無音無限ループは禁術じゃなかった!【朗報】無音無限ループは禁術じゃなかった!
【朗報】無音無限ループは禁術じゃなかった!
 
[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&C#によるClovaスキル+LINE Bot短期開発