目次
・本日の成果・考え
・最後に
本日の成果
作成するデスクトップアプリの機能の整理を行いました。
粒度は、クラス図作成でそのまま使用可能なレベルを想定しています。
まずは、対象となる業務をシーケンス図で図式化。
チャットbotとしては、ユーザーからの「問い合わせを行う」のイベント以降をシステム化すべきだと皆さん思われますし、著者もそう思います。
しかし、今回の開発目的としては、スモールスタートの効果検証であり、ピンクの範囲が管理もしやすく妥当だと考えました。
上記をもとに、機能の一覧を考えてみました。
機能一覧
- 資料検索機能
- 検索機能:保管された資料の中から、ユーザーの検索条件に合致する資料を検索する。
- 資料保管機能:管理者から提供された資料を保管する。
- 資料の形式:電子形式(.docs、.txt、.pdf)
- 保管先:クラウドサービスの保管先(会社の認可がおりた保管先に限る。)
- 保管方法:ベクトルDBへ保管。
※保管先により方法は変動。候補:Dify(Saas)経由 or AWS
- 画面出力機能:PCの画面にウィンドウを表示する。
- 出力形式:社内PCで出力可能な形式。
- 表示:サイズの変更が可能。リサイズ制限なし。
- 出力対象:チャットbotとの会話を行う画面に限る。
- ログ出力機能:ユーザーの使用履歴をログとして出力する。
- 出力形式:「.log」
- ファイル名:「app_YYYYMMDD_HHmmss.log」
- 出力対象:アプリ側の処理結果に限る。
※起動、停止、エラー発生時。 - 出力期間:配布してから、スモールスタート終了まで。
- 保存先:アプリ配布先の端末
※アプリソース内に保管フォルダを用意。 - 保管期間:配布してから、スモールスタート終了まで。
- ファイルサイズ:1Kb以下×平均10件/日 =10Kb/日
- 出力形式:「.log」
- チャット機能:ユーザーと自然会話形式で文字でやり取りする。
- 文字入力:ユーザーが画面に文字を入力する。
- 画面上の入力制限:Difyの設定を流用。
- 入力内容制限:不正アクセスおよび、AIモデルへの負荷が過剰になる入力内容の制限を行う。
※Saas管理画面で設定。
- 文字出力:ユーザーの入力結果やチャットbotの回答結果を出力する。
- 出力制限:Difyの設定を流用。
- 出力内容制限:保管資料以外の内容の出力制限。
※Saas管理画面で設定。
- 文字入力:ユーザーが画面に文字を入力する。
合わせて、前回作成したシステム構成図を修正。
システム構成図にAWSを入れていますが、そちらは今回のアプリ開発のスコープ範囲外です。
あくまでもチャットbotのシステム構成図として記載しているだけです。
※その場合、このアプリのシステム構成図への記載は不要な気がしますね。
最後に
実は、今回の機能整理前にすでにJavaでウィンドウの表示をするソースを書いてしまっています。
設計の参考書をいくつか読み、この要件の整理段階が重要と認識していますが、プログラムを書いて、さっさと動きを見たいという気持ちが強いです。
しかし、プログラムを書いている中でクラス名やクラス間の連携などをどうするかでいちいち止まってしまいます。
個人開発でなんとなくソースを書くなら問題ないと思いますが、設計→実装の訓練と考えると、今回のように要件整理を行う意味を感じました。