デジタル庁が公開した源内OSSをデプロイしてみました。
この記事ではその手順や実際の源内OSSがどんな感じで見えるかを簡単にまとめています。
実際に手順化もしていますが、それぞれの環境などで挙動や実手順に差が出てくると思いますので、適宜環境に合わせたり、出力されるログなどから調査・調整して作業をしてください。
源内とは何ぞや。についてはこちらにまとめています。
準備
事前の準備として、以下を用意してください。
- AWS環境をあらかじめ用意しておく
- 源内のリポジトリをローカルに落としておく
※今回は OSS の構造を理解するため、GitHub Actions ではなくローカルから CDK を直接実行する方法を採用しています。
①ターミナルを起動し、源内Githubからリポジトリを落とす
git clone https://github.com/digital-go-jp/genai-web.git [ローカルのフォルダ]
②フォルダに移動する
cd [ローカルのフォルダ]
③ライブラリをインストールする。
npm install
ここまで出来たら実際にデプロイをしていきます。
手順
1.AWS側のCDK Bootstrapの設定
CDKを使ってAWS操作するための事前の準備をする(S3バケットなど作成する)
cd [ローカルのフォルダ]/packages/cdk
npx cdk bootstrap
ターミナルの出力結果から
✅ Environment ~省略~ bootstrapped.
と出ればOKです。
GUIでは「CloudFormation」 > 「CDKToolkit」でスタックが作成され、CREATE_COMPLETEとなっていればOKです。

2. パラメータを設定する
これはやり方は色々あるかもしれませんが・・・
今回やった方法を記載します。
まず、ローカルに落としたリポジトリの中のうち
packages\cdk\env-parameters配下にあるself-hosting-template.tsを同じフォルダにコピーします。
※self-hosting-template.tsは、あらかじめ用意されている環境ごとの設定テンプレートです。ここを肉付けしていくとより細かい制御ができるようになります。
なお、コピー名は何でもよいですが、ここではdev.tsとしました。
この中で、「アカウントを自身で作成できるようにする」ことや「IPアドレスでのアクセス制限」など、環境に関わる設定ができます。
※変更しなくても大丈夫です。AIのモデルもこの中の
modelIds: [
'amazon.nova-lite-v1:0',
'jp.anthropic.claude-haiku-4-5-20251001-v1:0',
'jp.anthropic.claude-sonnet-4-5-20250929-v1:0',
],
で変更します。↑はテンプレそのままの状態
次に、packages\cdk配下にあるparameter/tsを編集します。
主にdev.tsを読み込めるようにします。
import * as cdk from 'aws-cdk-lib';
import { preprocessContextValues, StackInput, stackInputSchema } from './lib/stack-input';
import { selfHostingTemplateParams as devParams } from './env-parameters/dev'; //追加
// CDK Context からパラメータを取得する場合
const getContext = (app: cdk.App): StackInput => {
const rawContext = app.node.getAllContext();
// コンテキスト値を適切な型にparseしてからvalidation
const preprocessedContext = preprocessContextValues(rawContext);
const params = stackInputSchema.parse(preprocessedContext);
return params;
};
// デプロイ先環境ごとのパラメータを定義する(ここが主な変更点)
const deploy_envs: Record<string, Partial<StackInput>> = {
'dev': devParams, // --context env=dev の時に dev.ts を読み込む設定
};
// 後方互換性のため、CDK Context > parameter.ts の順でパラメータを取得する
export const getParams = (app: cdk.App): StackInput => {
const params = getContext(app);
const mergedEnv = {
...params,
...deploy_envs[params.env],
};
// zodでparameterのvalidationを実施
const parsed_params = stackInputSchema.parse(mergedEnv);
return parsed_params;
};
チューニングは色々出来ますが、とりあえずあまり変更無しで進めます。
3. デプロイする。
源内の環境をAWS上に作ります。
cd [ローカルのフォルダ]/packages/cdk
npx cdk deploy --all --context env=dev
実行時Do you wish to deploy these changes? (y/n)ときかれたらyを押してください。
※実行中何度か出ます。
つらつらとログが出てくると思います。
大体10~15分くらいかかります。プロンプトが返ってきたら設定は完了です。
※出力されたログにhttps://...cloudfront.net/というものが出てくると思いますが、そこがアクセスできるURLになります。
ログ的には以下のように出てきました。
GenerativeAiUseCasesStackdev.WebUrl = https://ディストリビューションドメイン名.cloudfront.net
4. アクセス準備
※dev.tsの
/**
- セルフサインアップ有効化
- オプション
- デフォルト: false
- ユーザーが自分でアカウントを作成できるようにするかどうか
- SAML認証を使用する場合は false に設定してください
*/
selfSignUpEnabled: false,
selfSignUpEnabled: false,をture,にするとログイン時に「新規でアカウントを作成する」という画面が追加され、直接ここでアカウントを作成することが可能です。(自由に作れてしまうので、ここでは念のためfalseにして手動作成にしました。)
手動でアカウントを作る場合、Cognitoで作成となります。
AWSの検索窓で「Cognito」を入力し、Amazon Cognito > ユーザープール > 表示されるユーザープール選択 > 左のメニューから「ユーザー」選択 > 「ユーザーを作成」を押下
の順番で作成可能です。
このアカウントでログインをします。
5. ログインする。
ログインします。URL自体はログに出てきますが、こちらでも確認可能です。
CloudFront(検索窓で検索) > ディストリビューション > 表示されたIDを選択
に出てくる「詳細」の中にある「ディストリビューションドメイン名」がURLになるので、「https://」を付けてブラウザに入力すればログイン画面に行けます。
最初のログイン時はパスワードの変更を求められるので、パスワードを変更してログインしてください。
ログインするとこんな感じの画面が出ます。
せっかくなので、チャットを試します。
チャットもLLMモデルを選択できます。
※dev.ts内で選択したもの。ここに使いたいモデルを変更して組み込めば選択肢が変わると思います。
こんな感じになりました。
源内Webアプリのデプロイはここまでで完了となります。
基本的なAIチャットなどはここだけでも具備されているようです。
うまく応答しないとき
AIの反応が返ってこないときや、エラーが出た時はもしかしたらAnthropic社向けの利用規約の様なものが提示できていない可能性があります。
その場合は、以下の手順で申請を出してください。
AWSの検索窓からbedrockで検索し、「Amazon Bedrock」を選択 > モデルカタログから対象のLLMを選択(ここではClaude Haiku 4.5 > 「Submit use case details」をクリック
次の画面が出るので、適切な内容を入れて送信してください。
ちなみに、当方が入力した内容は以下です。
-
Company Name(会社名):
Individual Developer
※個人開発者 -
Company Website(ウェブサイト):
https://aws.amazon.com/
※AWSのページを借りる形にするか、自分のGitHubページなどがあればそれを書きます。 -
Industry(業種):
Other - Who are the intended users you are building for?(誰が使うの?):
- Internal users (employees, staff, team members)
-
External users (customers, clients, public users)
※内部ユーザー(従業員、スタッフ、チームメンバー)
※外部ユーザー(顧客、クライアント、一般利用者)
-
Intended Use(利用目的):
Personal research and development for generative AI applications.
(生成AIアプリケーションの個人的な研究開発のため)
入力したら右下の「Submit use case details」を押して申請。
これで大体数分、数時間待てば通るようになると思います。
最後に
非常に簡単にデプロイできました。
商用利用可能とのことですが、ロゴなど含めUI/UXについては色々と(結構)手を入れないと売り出すことは難しいのが正直な感想でしょうか。とはいえ、政府推奨ということは日本の業界のスタンダードにもなっていくと思いますし、きっと今後も機能拡張されると思うので、やはりキャッチアップはしていきたいと思います。
ちなみに、チャット以外はこんな感じになっています。
今後に期待ですね。
最後まで見ていただきありがとうございました。








