Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

778 views

Published on

.NET Conf 2018 TokyoのUnconference枠でお話しした内容です。
(LINE BOOT AWARDS 2018への応募の話です)

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

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

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

×