
Gemini3Proと議論したことを、技術選定のドキュメントとして記事化しました。
「なぜMicrosoftではなくGoogleを選んだのか」「どうやって技術的な課題を乗り越えたのか」という意思決定のログとして残します。
1. 企画のスタートと要件定義
目的:
Dify(生成AI)を活用し、教員向けの「学習指導案作成支援ツール」を開発したい。
初期要件:
- AIエンジン: Difyを使用(プロンプト構築やモデル管理のしやすさから)。
- 提供形態: ホームページに埋め込んで公開し、広く使ってもらう。
- 成果物: チャットの返答だけでなく、最終的に「ファイル(指導案)」として保存できるようにしたい。
2. 技術選定フェーズ:Google vs Microsoft
開発プラットフォームとして、組織で導入されている「Microsoft 365 (Teams)」を使うか、汎用的な「Google (GAS)」を使うか、比較検討を行った。
検討1:Microsoft Teams & Power Platform での可能性
組織内ツールとしては優秀だが、今回の「公開ツール」という要件に対しては以下の壁があった。
- ライセンスの壁:
- Difyと通信するための「HTTPリクエスト」機能が、Power AutomateではPremium(有償)扱いとなる。個人開発や無料提供のツールとしてはランニングコストが見合わない。
- 公開の壁(致命的):
- Power Appsで作ったアプリをホームページ(iframe)に埋め込んでも、Microsoftアカウントのログイン画面が表示されてしまう。
- 組織外のユーザーに使わせるには「ゲスト招待」などの複雑な管理が必要で、不特定多数への公開には不向き。
検討2:Google (GAS + Spreadsheet) での可能性
一方、Google環境については以下の利点が確認できた。
- コスト優位性:
- GASの UrlFetchApp を使えば、Dify APIとの連携が無料で行える。
- 公開の柔軟性:
- GASウェブアプリとしてデプロイし、権限を「全員(匿名含む)」に設定すれば、ログインなしで誰でもアクセス可能。
- iframe埋め込み許可の設定(setXFrameOptionsMode)もコード1行で可能。
👉 結論:Google構成を採用
「ホームページで一般公開する」「コストを抑える」という要件において、Microsoft環境は不適。Google Apps Script (GAS) × スプレッドシート の構成で進めることを決定。
3. 機能設計フェーズ:チャットボットから「アプリ」への転換
課題:Dify標準機能の限界
Difyには「サイトへの埋め込み(チャットボット)」機能が標準である。これをそのまま貼れば一番簡単ではないか?と検討した。
- 検証結果:
- 会話をするだけなら優秀。
- しかし、ユーザーは**「作成された指導案をファイルとして手元に欲しい」**。
- Dify標準チャットはテキストを返すのみで、スプレッドシートファイルの生成やダウンロード機能は持っていない。
解決策:GASを「仲介役」にするアーキテクチャ
役割を以下のように分担させることで解決を図る。
- Dify (脳): 指導案の中身(テキストデータ)を考えるだけ。出力は扱いやすいJSON形式に限定させる。
- GAS (手): Difyから受け取ったデータを、スプレッドシートのセルに綺麗に配置(清書)する。
- Frontend (顔): ユーザーには「チャット画面」ではなく、「条件入力フォーム」と「ダウンロードボタン」だけを見せる。
4. UX実装フェーズ:ダウンロードの仕組み「/copy」
課題:どうやってユーザーにファイルを渡すか?
GASでスプレッドシートを作成しても、それは「開発者のGoogleドライブ」の中に作られる。これをどうやってユーザーのドライブに保存させるか?
- 案A: ファイルをメールで送る → 手間がかかる、メアド収集が必要。
- 案B: 閲覧権限をつけて共有する → ユーザーが誤って編集してしまうリスク、プライバシーの問題。
ブレイクスルー:Googleドライブの「/copy」ハック
Googleドキュメント系ツールのURL仕様を活用する解決策を採用。
- GASが裏側で一時的なシートを作成し、URLを取得する(例: …/edit#gid=0)。
- URLの末尾をプログラムで …/copy に書き換える。
- このリンクをユーザーに踏ませる。
- すると、Googleの標準機能として**「ドキュメントのコピー:コピーを作成しますか?」**という画面が強制的に表示される。
- ユーザーが承諾すると、ユーザー自身のマイドライブにファイルが複製保存される。
これにより、権限管理の複雑さを回避しつつ、安全に成果物を配布するフローが確立した。
5. まとめ
本プロジェクトにおける最大のポイントは、**「AI(Dify)にすべてをやらせようとしなかった」**点にある。
- AIは「思考(コンテンツ生成)」に集中させる。
- UIやファイル操作は、得意な従来のプログラム(GAS)に任せる。
- プラットフォーム選定では、「誰に使わせるか(公開範囲)」を基準にMicrosoftではなくGoogleを選択した。
この適材適所の組み合わせにより、単なるチャットボットを超えた**「実用的な業務アプリ」**としての実装が可能となった。
6. AIチャットボットから業務的なアプリへの変身!
上記のことから、今まで本サイトで公開してきたAIチャットボットをWEBアプリとして生まれ変わらせることができるのか、次の投稿で検証していきたいと思います。


コメント