👀

DifyとGASで作る!社内セキュリティチェックシートアシストツール

に公開

🚀 はじめに

こんにちは! NE株式会社でエンジニアとしても働いているよへいです。

みなさんの会社では「セキュリティチェックシート」の対応、どうされていますか?
今回は、社内ステークホルダーの認知負荷を軽減し、ナレッジ活用を推進するために、DifyとGASを組み合わせて「サクッと」内製ツールを作ってみた話をご紹介します。
AIコーディング環境がどんどん進化しているおかげで必要なツールをサクッと作れるのは本当に素晴らしいと思う今日このごろです。

📋 セキュリティチェックシート対応の「あるある」課題

サービスの導入検討時などに送られてくる「セキュリティチェックシート」。 実務担当者としては以下のような悩みを抱えていると考えました。

  • 回答の粒度が難しい:「どこまで詳細に答えるべきか」の判断に迷い、相談コストがかかる。
  • ナレッジが属人化・散逸:過去の回答ファイルが散らばっており、せっかくのナレッジが活かされていない。
  • 社内フローが長い: 当社の場合、複数のステークホルダーが順次確認をしていくというリレー形式で、進捗管理も大変。

こうしたタスクへの対応コストに対して踏み込んで改善を行っていませんでした。

💡 解決策:ナレッジ活用アシストツール

そこで開発したのが、セキュリティチェックシートアシストツールです。

  • 役割:過去の回答データをナレッジとして蓄積し、類似の質問に対して回答案を提案してくれるAIアシスタント
  • 回答は社内ステークホルダーのチェックを複数通すことになるため、回答期限、ステークホルダーごとの対応タスクを明確化し

目指したのは、「AIに全て任せる」ことではなく、「人間が判断するための材料をAIが用意してくれる」状態です。
最終的な回答は人間によってすべて確認した上で行います。

🛠️ 技術構成:「ライトに作る」ための選択

社内ツールなので「誰でも使えてメンテナンスしやすい」ことを重視しました。

採用した技術スタック

  • Google Apps Script (GAS)
    • 理由: 社内全員がGoogleアカウントを持っているので認証周りが楽。Webアプリとしてデプロイも簡単。簡単に社内に閉じた公開ができる。
    • 役割: フロントエンド(HTML/JS)のホスティングと、バックエンドAPIロジック。
  • Google スプレッドシート
    • 理由: DBサーバーを立てるまでもない。何かあれば非エンジニアでもデータを見たり修正したりできる。
    • 役割: 案件管理、ステータス管理、簡易DB。
  • Dify
    • 理由: LLMアプリ開発の王道。Knowledge Base (RAG) 機能が標準でついており、ノーコードでプロンプト調整が可能。APIも使いやすい。
    • 役割: Excelからの質問抽出、RAG検索、回答生成、ナレッジ蓄積。

🏗️ アーキテクチャと処理フロー

全体の処理フローは以下の通りです。

  1. アップロード: 担当者がExcel/PDF形式のチェックシートをGASアプリにアップロード。
  2. 質問抽出: GASからDify APIを叩き、ファイルを解析して「質問リスト」を抽出。
  3. 回答生成: 抽出した各質問に対して、再びDify API経由でRAG検索を実行。過去の質の高い回答を参照して「AI回答案」を生成。
  4. 人間による確認・修正: 生成された回答案をセキュリティ責任者や開発担当が確認・修正。
  5. 完了&学習: すべての確認が終わったら、その最終回答をDifyのナレッジベースに保存(サイクル化)。

📺 担当者に流れがわかりやすいようにフローを表示しています

👥 ワークフロー設計とロール

ツール内では明確に役割(ロール)を定義し、責任範囲を明確にしました。

ロール 主な責務
窓口部署 窓口担当。案件のアップロードと、顧客への返却。
セキュリティ責任者 司令塔。AI回答の確認、開発担当への依頼、最終承認。
開発担当 技術詳細。セキュリティ責任者から追加調査を依頼された場合にシステムの技術的質問への回答。

Google Workspaceのメールアドレスを利用して担当者ごとにロールが自動判定されるようにし、各ロールごとに必要なアクションをステータス管理して運用できるようにしました。
回答期限を登録し、いつまでに誰が何をするべきかを把握できるようにしました。

✨ 機能ハイライト

機能的にちょっと工夫したところです

① 自信度付きAI回答

AIが回答案を出す際、「自信度(高/低)」を表示するようにしました。

  • 高: 過去に類似の質問と回答実績がある。 → ほぼそのまま使える可能性が高い。
  • 低: 類似実績がないため、一般論で回答している。 → 要注意!特にしっかり内容確認して最終回答を作成する必要がある。

これにより、「どこを重点的にチェックすればいいか」の認知負荷を下げる工夫をしています。

📺 サンプル画面

② Excelファイルをそのままポイ

Difyのファイル解析機能が優秀なので、フォーマットがバラバラなExcelファイルでも、ある程度いい感じに質問文だけを抜き出してくれます。「所定のCSVに転記してください」という手間をなくしました。
完全ではないので、取り込み後に窓口担当者が質問を確認して修正できるようにしてあります。

📺 サンプル画面

💪 開発で工夫したポイント

GAS実行時間の壁

GASは実行時間が長いとタイムアウトしてしまいます。質問を一つ一つAI処理させるには時間がかかるため、 「アップロードだけ先に済ませて、バックグラウンド処理(トリガー実行)で順次回答生成を行う」 という非同期設計にしました。フロントエンド側ではポーリングして進捗状況を表示しています。

📺 サンプル画面

「サクッと」へのこだわり

デザインに凝りすぎず、でも使いやすく。 今回はCSSフレームワークなどを入れず、必要最低限のCSSと標準的なUIコンポーネントで実装しました。 「機能が足りなければGASをいじればいい」という気楽さが、内製ツールの良さです。

🌟 成果とこれから

先日開発して、社内ステークホルダーに見てもらったところでまだ運用開始できていないのですが、
本ツールの導入により、以下のような効果を見込んでいます。

  • 初動の速さ: ファイルを上げるだけで「回答案」が埋まるので、白紙から書き始める心理的ハードルが消滅。
  • 回答品質の安定: 過去のベストプラクティスが自動で引用されるため、担当者による回答のブレが減少。
  • ナレッジ活用サイクル: 「回答すればするほど賢くなる」仕組みの確立。

今後は、RAGに蓄積された情報の棚卸し(古い情報の削除など)や、対応フォーマットの拡充を進めていく予定です。

おわりに

Dify × GAS というローコード/ノーコードに近い構成のおかげで、実質1日程度の開発期間で運用できるところまで用意できました。
ちょっとした業務課題を見つけたとき、「大掛かりなシステム開発や外部ツール導入」を検討する前に、「手元のツールでサクッと解決できないか?」と考えてみるのもありかもしれません。

100%解決は難しくても80%くらいまでの課題は解決するツールは案外サクッと作れそうなこと多い印象です。サクッと作って試してみる、オススメです🙌

NE株式会社の開発ブログ

Discussion