こんにちは。どんぶラッコです。
本日、LINE Developer Day 2019 という、LINE が主催するDeveloper向けのセッションがお台場で開催されています!筆者が参加したセッションを中継していきます!
他のセミナーもまとめ中なので合わせてご覧ください♪
今回は LIFFに関するセッションです!
DevOpsでボット開発を最適化する方法
スピーカーは中村さん。

ちなみに、このLINEアカウントを登録すると、現在のスライドが取得できるボットでした。

ありがてえ…….
ボットでのDevOpsをどう活用していったらいいのか?について。
具体的には、こんな風にメッセージを入力すると、形態素解析をして文章から旅程の予約ができるということです。

ちなみに、DevOpsとは?ということについてはこちらの記事が詳しいです。
https://www.buildinsider.net/enterprise/devops/01
開発 (Development) と運用(Operation) をがっちゃんこした造語ですね!
チャットボットの開発に置いて、もっとも大変なのは?
圧倒的に「テスト」だと中村さんは仰っています。
- 実機
- ユーザ単位
- 会話フロー
- 外部システムに依存
- 結果のレポート
この管理が非常に大変なんだとか。
これをチャットボットのユニットテストによって解決していこう!という話ですう。
チャットボットのユニットテスト
- ユニットはどの単位か?
- テストフレームワーク
- 外部サービスのモックか
- テスト範囲の決定
例えば、こんな会話があった時、どこでテストをする?

また、フレームワークとしてはこんな切り口が考えられます。

ちなみに、外部サービスとは? … 機内モードにした時に動かなくなったら外部サービスです、ということ。わかりやすいですね。
次に重要なのがリリース管理
テストができました。次はリリース管理が重要です。
- 環境
- 承認フロー
- バージョン管理とロールバック
- 結果のレポート
どのリリースにどの修正があって、どの状態まで戻せばいいのかの管理が必要。
例として、今回デモでは検証、本番環境の2つの環境があります。

テスト環境でOKだった場合、本番にもう一度デプロイし直すお客さんが多い。
そうではなくて、スワップ作業をして、差分をデプロイする形にすると良い!

構成環境は入れ替えないという選択肢もできたりします。
今回はWindows の BotFramework Connectorを使って上記のフローを作っているそうです。
チャンネルの接続先でLINEを選択し

その後、スロット構成で共有したい箇所、独立させたい箇所を指定することができます。

そして承認フローによって、状態の管理を行うことができます。

また、実際の開発時に、ユニットテストを同時に走らせることもできます。左側のチェックマークはテストの通過したことを示しています。

Wrap-up
DevOpsでもっとも重要になってくるのはユニットテスト。もしテストの切り口に迷った場合、MicrosoftのBot Frameworkなどの、テストをすることが前提のフレームワークに乗っかるということも手です!
Botは2週間に1回くらいアップデートするものがいいbotです。そのためにはテストと品質管理が必須。そのためにはDevOpsの導入が必要不可欠です。

お話の中でもあったように、ボット開発におけるテストは課題ですよね。それをテストする前提で組んである環境というのはとても便利内容に感じました。開発速度も上がりますし。
柔軟性が高い機能であるからこそ、品質維持が必要不可欠なんですね。
[…] […]
[…] […]