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.

チャットボットの定義と設計

1,106 views

Published on

チャットボットの定義と設計/LINE株式会社 Jun (noraesae)
LINE Developer Meetup in Kyoto#26 LINE Bot開発者 新年会!での発表資料です。
https://line.connpass.com/event/75147/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

チャットボットの定義と設計

  1. 1. チャットボットの定義と設計 LINE Developer Meetup in Kyoto#26
 Jun @uta_tti
  2. 2. ⾃⼰紹介 • 全 (Jun) • @uta_tti on Twitter / @utatti on GitHub • LINE株式会社 フロントエンドエンジニア • Messaging API Node.js SDK メンテナー ジョン
  3. 3. 今⽇のテーマ チャットボットの定義と設計
  4. 4. 具体的には… • チャットボットの定義をします • ↑に従うボット設計について考えてみます • ↑を実装する便利なボット開発ツールを紹介します • ↑を使って簡単なボットを作ってみます
  5. 5. その前に
  6. 6. チャットボットの定義
  7. 7. ‒Wikipedia “A chatbot is a computer program which conducts a conversation via auditory or textual methods.”
  8. 8. ‒私 “そういう定義はどうでもいい!”
  9. 9. 型 • プログラムの動作を定義する⼿段 • プログラムの定義 = 型定義
  10. 10. 記法: 関数型 • a → b • aを引数でとってbを返す関数 • e.g.
 
 add : (int, int) → int
  11. 11. チャットボットの型 • チャットボットはプログラム • string → Async<string> • これだけじゃ全然わからん! Program stdin stdout
  12. 12. Program stdin stdout HTTP server Request Response チャットボットの型 • チャットボットはHTTPサーバ • Request → Async<Response> • まだ足りない!
  13. 13. チャットボットの型 • チャットボットは関数 • Event → Async<Message> • Messageが1個だという保証 は…? Program stdin HTTP server Request Chatbot Event stdout Response Message
  14. 14. チャットボットの型 • Generator • 返り値を何回もyieldできる • Event → AsyncGen<Message> Program stdin stdout HTTP server Request Response Chatbot Event Messages yield
  15. 15. Program stdin stdout HTTP server Request Response チャットボットの定義 • Event → AsyncGen<Message> • とあるチャットイベントを処理 し、それに対してメッセージを何 個か返す(かもしれない)関数 Chatbot Event Messages yield
  16. 16. チャットボットの設計
  17. 17. チャットボットの設計 Program stdin stdout HTTP server Request Response Chatbot Event Messages yield
  18. 18. チャットボットの設計 Program stdin stdout HTTP server Request Response Chatbot Event Messages yield Static file server Auth Error handler HTTP client
  19. 19. チャットボットの設計 stdin stdout HTTP server Request Response Chatbot Event Messages yield Static file server Auth Error handler HTTP client Program
  20. 20. チャットボットの設計 Program stdin stdout HTTP server Request Response Chatbot Event Messages yield Static file server Auth Error handler HTTP client
  21. 21. Chatbot Event Messages yield プログラムの中で「チャットボット」と、「そうではない部分」が分かる Program stdin stdout HTTP server Request Response Static file server Auth Error handler HTTP client
  22. 22. チャットボット • ミニマルな設計 • 本当に実装すべきロジックに 集中できる Chatbot Event Messages yield
  23. 23. そうではない部分 • 別モジュールとして作れる • 別構造としても作れる • TCPサーバ • モックサーバ • テストランナ Program stdin stdout HTTP server Request Response Static file server Auth Error handler HTTP client
  24. 24. ‒私 “実はもう作ってきました”
  25. 25. チャットボット開発ツール
  26. 26. Kaede • A light-weighted LINE bot platform 🍁 • https://github.com/utatti/kaede • チャットボット関数からサーバを作ってくれる • Event → AsyncGen<Message> • JavaScript: async function *(event) • 「チャットボットではない部分」の実装
  27. 27. Kaede • Features • 認証処理 • 静的ファイルサービング • ngrok連動 • Live reload • 名前は最近ハマってる曲から…
  28. 28. もう⼀回だけ
  29. 29. Demo
  30. 30. 結論 • チャットボットの定義は以下のよう • Event → AsyncGen<Message> • 多分 • 型定義を考えてみるのは設計の役にも⽴つ • JSではasync generatorで実装できる • Kaede作るの楽しかったです
  31. 31. Thanks!

×