はじめに
当社では2024年度より、社内向け生成AI-Chatの開発・推進に取り組んでいます。
先日、同じチームで主に推進を担当しているメンバーが、推進にまつわる 心の叫び エピソードを公開しました。
この記事では、その中で触れられていた「業務特化のプロンプトテンプレートの収集と展開」について、開発担当として実際にどのような仕組みを作ったのかをご紹介します。
対象読者としては、
- 社内向けの生成AI活用基盤・ポータルを作っている / 作りたい人
- プロンプトテンプレートを組織的に管理・共有したい人
- Azure(Cosmos DB, Storage など)+ Next.js で社内ツールを作っている人
あたりを想定しています。
なお、この記事は人間が書いたものをAIで推敲しています。
AI担当たるもの積極的に活用しないといけないですからね!
何をしたか
ずばり、社員みんなが使えるプロンプトテンプレートを共有できる仕組みを作りました。
イメージとしては、社内向けの「プロンプトテンプレート共有ポータル」です。
できること
テンプレートの閲覧・利用・共有
トップ画面にテンプレートがずらっと並んでおり、カードをクリックすることで、以下のようにテンプレートの詳細を閲覧できます。

LLMの種類選択やプロンプトの保存などは、他のツールにもよくある機能だと思います。
ここでは、本システムならではの特徴的な機能をいくつかピックアップして紹介します。
お気に入り登録機能
テンプレートカード右上の★マークから、よく使うテンプレートをお気に入りに登録できます。
お気に入りに登録したテンプレートは画面最上部に専用セクションとして表示されるため、頻繁に利用するテンプレートへ素早くアクセスできます。
お気に入り情報は Azure Cosmos DB に保存されているため、PC やスマートフォンなど複数デバイスから、同じお気に入りテンプレートを利用できます。
AI-Chatで試す
ボタンをクリックすると、別途社内で運用しているAI-Chatアプリにジャンプし、
LLMの種類やプロンプトが初期セットされた状態になります。ワンクリックでテンプレートが使えます。
(技術的にはクエリパラメータでテンプレート情報を渡し、AI-Chat側で初期値として解釈しています)
テンプレートを共有する
ボタンをクリックすると共有用URLが発行され、アクセスすることでテンプレート閲覧画面が開いた状態でポータルが起動します。他のメンバーにおすすめのテンプレートを共有したいときに役立ちます。
テンプレートの作成・編集・削除
テンプレートは一部を除き、自由に作成・編集・削除ができます。

当社では、社内資料を特定の箇所に格納することで自動的に RAG が作られる仕組みを運用しており、複数の業務特化 RAG が存在します。
そのため、「どの RAG を参照するか」をテンプレート側で指定できるようにしています。
なお「RAG 自動生成」の仕組みについては、昨年別記事で詳しく書いていますので、よろしければこちらもご覧ください。
利用状況の可視化
ユーザーの操作履歴を Azure Table Storage に記録する アクティビティログ機能 を実装しています。テンプレートの作成・更新・削除、利用などが対象です。
どのテンプレートがよく使われているのか、どの部署でテンプレート活用が進んでいるのかといったデータを可視化することで、
- よく使われているテンプレートを全社展開する
- あまり使われていないテンプレートの改善ポイントを探る
といった、より効果的な推進活動につなげる狙いです。
テンプレートの種類とアクセス制御
ここまでさらっと画面に登場していた「グループ」ですが、このポータルのテンプレートは大きく次の2種類に分かれています。
マイテンプレート
自分専用のテンプレートです。ユーザ自身が自由に作成・編集・削除でき、自分の作成したテンプレートが他人に公開されることはありません。
このあたりはよくある仕組みだと思います。
グループテンプレート
各グループに所属するテンプレートです。
各部署の業務に特化したテンプレート(例:営業向け提案資料ドラフト作成、法務向け契約レビュー補助 など)を登録するイメージです。
アクセス制御の仕組み
グループテンプレートには柔軟なアクセス制御を設けています:
-
基本:グループメンバーのみ
- グループに所属するメンバーのみが閲覧・編集・削除可能
- 他グループのメンバーは閲覧不可
-
グループ外公開:閲覧のみ可能
- 「グループ外公開」フラグをONにすると、他グループメンバーも閲覧のみ可能
- 各部署の力作テンプレートを全社に展開するなどの場合に活用
マイテンプレートは Copilot のプロンプトギャラリーなど、類似の仕組みが多く存在しますが、
「部署単位の共有テンプレート+柔軟なアクセス制御」まで実装している例は、まだそれほど多くない印象です。
「各部署の業務に特化したテンプレートを、まずはメンバー内だけで試し、良さそうなものを全社に展開していく」といったステップを取りたい組織には、比較的フィットするのではないかと思います。
管理者モード
システム管理者は管理者モードにアクセスでき、全グループのテンプレートを一元管理できます。

管理者モードではアクセス制御に関わらず、全グループのテンプレートの閲覧・作成・編集・削除が可能です。
ただしプライバシー保護のため、他人の「マイテンプレート」は閲覧・編集・削除できません。
技術的な仕組み
システム構成
ポータル自体は Azure App Services 上にデプロイしています。
主要なコンポーネントは以下の通りです:
-
認証・認可:Microsoft Entra ID でユーザー認証を行い、
ログインユーザーがどのグループに所属し、どのテンプレートを扱う権限があるかを判定 - テンプレートデータ:Azure Cosmos DB(NoSQL)に保管
- ユーザー情報:Azure Cosmos DB(お気に入りテンプレート情報などを保存)
- アクティビティログ:Azure Table Storage に記録
- グループマスタ:Azure Blob Storage(JSON形式で保存)
データがクラウド上にあるため、PC・スマートフォンなどのマルチデバイス対応はもちろん、他の社内アプリから API 経由でテンプレート情報を参照したりといった連携も行いやすくなっています。
技術スタック
フロントエンド
- Next.js 16 (App Router) + React 19 + TypeScript
- 状態管理:Jotai
- UIライブラリ:Radix UI + Tailwind CSS + shadcn/ui
バックエンド・インフラ
- Azure App Services:アプリケーションホスティング
- Azure Cosmos DB:NoSQLデータベース(テンプレート・ユーザー情報)
- Azure Table Storage:アクティビティログ保存
- Azure Blob Storage:グループマスタ取得
- Microsoft Entra ID:認証・認可
グループ情報について
グループ情報は Microsoft Graph API から直接取得するのではなく、Azure Blob Storage 上にグループマスタを保存し、そこから取得する方式を採用しています。
当初は Microsoft Graph API から直接グループ情報を取得していましたが、グループ数が膨大な場合に明らかなレスポンス遅延が起きてしまいました。
そこで、Azure Blob Storage 上にグループマスタを JSON 形式で配置し、アプリ側はそのマスタを読む構成に変更しました。
(マスタの更新は別途管理者向けコンソールで行います)
構成図に Azure Blob Storage が登場するのはこれが理由です。
おわりに
元々は推進にまつわるエピソードにある通り「こんなの作れませんかね〜へへへ😉」というオーダーから始まった取り組みでしたが、社内から日々届く要望の実装も含め、気づけば半年以上関わっていました。
自分がほぼすべての設計・開発を担う初の内製開発プロジェクトでしたが、Azure のインフラ周りなど勉強になることが多く、大変楽しかったです。
今後の構想として
- 利用回数ランキング機能
- テンプレートのAIジェネレート機能
- 利用統計ダッシュボード
などがありますので、完成した暁にはご紹介できればと思います。
お知らせ
こちらの記事は ctc Advent Calendar 2025 の記事です。
この後も、ctc(中部テレコミュニケーション株式会社)のメンバーが技術にまつわる知見を投稿していきますので、ぜひご覧ください。




