あなたは、休暇申請に使用されるアプリの対話型インターフェースを設計しています。インターフェースは以下のデータを収集する必要があります。
休暇の開始日
休暇の終了日
必要な有給休暇の合計日数
このソリューションは、ダイアログの複雑さを最小限に抑える必要があります。
どのタイプのダイアログを使用すべきですか?
正解:C
1. 構造の単純さ(線形プロセス)
今回の要件は「開始日」「終了日」「日数」の3つを順番に聞くだけの、非常にシンプルなものです。
Waterfall(ウォーターフォール): 開発者が「ステップ1:開始日を聞く」「ステップ2:終了日を聞く」と、あらかじめ決まった順番を定義するだけです。プログラムとしての構造が「一本道」で非常に単純なため、この程度のタスクには最も低コストで実装できます。
Adaptive(アダプティブ): ユーザーが「来週の月曜から3日間」と一度に言った場合などの、複雑な割り込みや順不同の入力に対応するための高度な仕組みです。今回の「3つのデータを聞くだけ」という要件に対しては、機能が過剰(オーバーエンジニアリング)とみなされます。
2. SDKベースの標準的な実装
Microsoft Bot Framework SDKにおいて、古くからある標準的なデータ収集手法が Waterfall Dialog です。
プロンプトの連携: Waterfall は、
DateTimePrompt(日付を聞く)やNumberPrompt(数字を聞く)といった専用の対話パーツを順番に呼び出すことに特化しています。状態管理の自動化: ステップ間のデータの受け渡し(
stepContext.values)が定型化されており、開発者が迷う余地が少ないため、「複雑さを最小限に抑える」という目的に合致しています。
3. 「Component」や「Skill」との比較
他の選択肢が「複雑さを増やす」理由を考えると、相対的に C が浮かび上がります。
B (skill): 別のボットを呼び出す仕組み。設定項目が激増するため、複雑さは最大になります。
D (component): ダイアログを「カプセル化(部品化)」して再利用しやすくする器(コンテナ)のことです。それ自体はデータ収集のロジック(どうやって聞くか)を持っていないため、結局その中で Waterfall などを動かす必要があります。つまり、これだけでは不十分です。

コメント