W3 データベース × AI OLIENT TECH 2026 Spring

OLIENT TECH 実践教育プログラム 2026 Spring

WEEK 3

データベース x AI

実用的な機能を兼ね備えた本格的なアプリの開発

講師: 上津原 和弘 2026 Spring

OLIENT TECH 実践教育プログラム 2026 Spring

データベース x AI

実用的な機能を兼ね備えた本格的なアプリの開発

Week 3 | 講師: 上津原 和弘

1. ほとんどのWebアプリにあるもの — データベース!

Webアプリケーションを開発するうえで、データの永続化は避けて通れないテーマです。 ユーザー情報、投稿内容、設定値など、ほとんどすべてのWebアプリはデータベースに支えられています。 今週は、データベースの基本概念を学び、さらにAI機能を組み込むことで、実用的かつ本格的なアプリを開発する手法を身につけます。

2. データベース入門

データベースの種類

従来技術: SQL SQL

スプレッドシートのような表構造でデータを管理する方式です。

課題:

  • 常時稼働型で高コスト
  • 大量アクセスに弱い
  • 事前にデータ構造を厳密に定める必要がある

NoSQL JSON

JSONベースでデータを格納する方式です。

メリット:

  • プログラム内のデータ構造をそのままアップロード可能
  • リクエスト回数に応じた課金で無駄がない

SQLを使いたい方へ

SQLデータベースを使いたい場合は、Supabaseなどのサービスがオススメです。PostgreSQLをベースにしたモダンなバックエンドをすぐに構築できます。

Firestore入門

Firebase Firestore

Firestoreとは、Googleが提供するクラウドプラットフォーム「Firebase」のサービスの一つです。 NoSQLデータベースであり、クライアントとサーバー間でリアルタイム同期が可能という大きな特徴があります。 無料枠(Sparkプラン)でも十分に学習・プロトタイピングが可能です。

簡単なサンプル — 35行で作れるリアルタイムチャットアプリ

以下のコードは、Firestoreを使ったリアルタイムチャットアプリの全体像です。Colab notebookからも実行できます。

<h3>Firebase Chat (Firestore)</h3>
<div id=m></div>
<input id=n placeholder="name">
<input id=t placeholder="message">
<button onclick="send()">Send</button>
<script type=module>
  import {initializeApp} from
    "https://www.gstatic.com/firebasejs/11.3.0/firebase-app.js";
  import {getFirestore,collection,addDoc,
    serverTimestamp,onSnapshot,query,orderBy}
    from "https://www.gstatic.com/firebasejs/11.3.0/firebase-firestore.js";

  const app=initializeApp({
    apiKey:"YOUR_API_KEY",
    authDomain:"YOUR_PROJECT.firebaseapp.com",
    projectId:"YOUR_PROJECT"
  });
  const db=getFirestore(app);
  const q=query(collection(db,"messages"),orderBy("ts","asc"));

  onSnapshot(q, s=>{
    document.getElementById("m").innerHTML="";
    s.forEach(d=>{
      let x=d.data();
      document.getElementById("m").innerHTML+=
        `<div><b>${x.user||"anon"}</b>: ${x.text||""}</div>`;
    });
  });

  window.send=async()=>{
    const name=document.getElementById("n").value||"anon";
    const text=document.getElementById("t").value;
    if(!text)return;
    await addDoc(collection(db,"messages"),
      {user:name, text, ts:serverTimestamp()});
    document.getElementById("t").value="";
  };
</script>

ポイント

onSnapshotがリアルタイム同期の要です。データベースに変更があると自動的にコールバックが呼ばれ、画面が更新されます。 addDocでドキュメントを追加すると、接続中の全クライアントに即座に反映されます。

Firestoreをプロジェクトに追加する

アクセスキーの取得

  1. FirebaseコンソールProject Overview > Project Settings > General を開く
  2. 「マイアプリ」セクションからAPIキーを含む設定コード(firebaseConfig)をコピーする

APIキーの安全性について

FirebaseのAPIキーは不正操作が制限されているため、ユーザー(ブラウザ)に渡しても安全です。 サーバーサイドで利用する場合はServiceAccountの利用を検討してください。 このキーで全Firebaseの機能(認証、ストレージ等)にアクセスできます。

v0でリアルタイムチャットアプリを作る

  1. v0に「ログイン不要で使える、リアルタイムチャットアプリを作って」と指示し、先ほどコピーしたAPIキーの設定コードを貼り付ける
  2. APIキーに関する警告が出るが、Firebaseのキーはセキュリティリスクが低いためOKで進める
  3. Publishしてアプリを公開し、複数タブで開いてリアルタイム同期を確認する

上手く動かない場合は?

  1. ログを確認: ブラウザの開発者ツールでConsoleを開き、エラーメッセージを確認する
  2. コストを意識した質問: v0のリクエストは高額なので、まずChatGPTにエラー内容を質問する。納得できる回答を得てからv0に頼む
  3. コードを手動で編集: v0のエディタに切り替え、ChatGPTに相談しながら手動でコードを修正する

トラブルシューティングのコツ

エラーメッセージをそのままコピーしてChatGPTに貼り付けるのが最も効率的です。状況説明を加えると、より的確な回答が得られます。

3. AI機能を組み込む

AI機能を持ったアプリを作成する

ChatGPT API AI

AI機能を組み込むには、各社が提供するAPIを利用します。代表的なものとして OpenAI API(ChatGPT)、 Gemini API(Google)、 Claude API(Anthropic)があります。 今回は OpenAI API を使った例を紹介します。

  1. v0に「Vercel AI SDKを使わず、ChatGPT APIを使って、AIチャットアプリを作って」とお願いする
  2. Add Environment Variablesのダイアログが表示されたら、OpenAIのAPIキーを入力する
  3. 動作確認: メッセージを送信すると、AIが返事をしてくれることを確認する

APIキーの取り扱い

OpenAI APIキーは環境変数として設定し、コード内にハードコーディングしないでください。Vercelの環境変数機能を使うことで、安全にキーを管理できます。

[任意] 自分で学習させたAIでリアルタイム画像認識

Teachable Machine 画像認識

Googleが提供する無料のAI学習サービス「Teachable Machine」を使って、 独自のジェスチャー認識モデルを作成し、アプリに組み込むことができます。

  1. Teachable Machineを開き、Image Project > Standard Project を選択する
  2. Webcamを使い、Hold to Recordで各クラスの学習画像を収集する(例: グー、チョキ、パー)
  3. Train Modelボタンを押して学習を実行する
  4. Export Model > Upload my model を選択し、生成されたコードをコピーする
  5. v0で「ジェスチャーを認識するアプリを作って」と入力し、コピーしたコードを貼り付ける

今週の課題

  • データベースやAIを必要に応じて用いて、企画書のアイデアを形にして提出しよう
  • OpenAI APIの公式リファレンスを読んで、自分なりのまとめをNotionかGoogle Docsに書いて提出しよう

提出方法: 課題提出チャンネルにてURL共有

Appendix: もっと知りたい人へ

学習リソース

用語解説

用語 説明
データベース データを構造化して保存・管理するシステム。アプリケーションの情報を永続化するために使用する。
AI (人工知能) 人間の知的能力をコンピュータで模倣する技術の総称。テキスト生成、画像認識などに応用される。
JSON JavaScript Object Notationの略。軽量なデータ交換フォーマットで、NoSQLデータベースのデータ構造としても使われる。
NoSQL SQLを使わないデータベースの総称。ドキュメント型・キーバリュー型など多様な形式があり、柔軟なスキーマが特徴。
生成AI テキスト・画像・音声などのコンテンツを生成できるAI。ChatGPTやDALL-Eなどが代表例。
ダッシュボード FirebaseコンソールやVercelの管理画面など、サービスの状態を一覧・管理するためのWebインターフェース。
ServiceAccount サーバーサイドからFirebase等に接続するための認証情報。管理者権限を持つため厳重に管理する必要がある。
リアルタイムデータベース データの変更が接続中の全クライアントに即座に反映されるデータベース。Firestoreの主要機能の一つ。