OLIENT TECH 実践教育プログラム 2026 Spring
WEEK 3
実用的な機能を兼ね備えた本格的なアプリの開発
OLIENT TECH 実践教育プログラム 2026 Spring
実用的な機能を兼ね備えた本格的なアプリの開発
Webアプリケーションを開発するうえで、データの永続化は避けて通れないテーマです。 ユーザー情報、投稿内容、設定値など、ほとんどすべてのWebアプリはデータベースに支えられています。 今週は、データベースの基本概念を学び、さらにAI機能を組み込むことで、実用的かつ本格的なアプリを開発する手法を身につけます。
スプレッドシートのような表構造でデータを管理する方式です。
課題:
JSONベースでデータを格納する方式です。
メリット:
SQLを使いたい方へ
SQLデータベースを使いたい場合は、Supabaseなどのサービスがオススメです。PostgreSQLをベースにしたモダンなバックエンドをすぐに構築できます。
Firebase Firestore
Firestoreとは、Googleが提供するクラウドプラットフォーム「Firebase」のサービスの一つです。 NoSQLデータベースであり、クライアントとサーバー間でリアルタイム同期が可能という大きな特徴があります。 無料枠(Sparkプラン)でも十分に学習・プロトタイピングが可能です。
以下のコードは、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でドキュメントを追加すると、接続中の全クライアントに即座に反映されます。
firebaseConfig)をコピーするAPIキーの安全性について
FirebaseのAPIキーは不正操作が制限されているため、ユーザー(ブラウザ)に渡しても安全です。 サーバーサイドで利用する場合はServiceAccountの利用を検討してください。 このキーで全Firebaseの機能(認証、ストレージ等)にアクセスできます。
トラブルシューティングのコツ
エラーメッセージをそのままコピーしてChatGPTに貼り付けるのが最も効率的です。状況説明を加えると、より的確な回答が得られます。
ChatGPT API AI
AI機能を組み込むには、各社が提供するAPIを利用します。代表的なものとして OpenAI API(ChatGPT)、 Gemini API(Google)、 Claude API(Anthropic)があります。 今回は OpenAI API を使った例を紹介します。
APIキーの取り扱い
OpenAI APIキーは環境変数として設定し、コード内にハードコーディングしないでください。Vercelの環境変数機能を使うことで、安全にキーを管理できます。
Teachable Machine 画像認識
Googleが提供する無料のAI学習サービス「Teachable Machine」を使って、 独自のジェスチャー認識モデルを作成し、アプリに組み込むことができます。
提出方法: 課題提出チャンネルにてURL共有
| 用語 | 説明 |
|---|---|
| データベース | データを構造化して保存・管理するシステム。アプリケーションの情報を永続化するために使用する。 |
| AI (人工知能) | 人間の知的能力をコンピュータで模倣する技術の総称。テキスト生成、画像認識などに応用される。 |
| JSON | JavaScript Object Notationの略。軽量なデータ交換フォーマットで、NoSQLデータベースのデータ構造としても使われる。 |
| NoSQL | SQLを使わないデータベースの総称。ドキュメント型・キーバリュー型など多様な形式があり、柔軟なスキーマが特徴。 |
| 生成AI | テキスト・画像・音声などのコンテンツを生成できるAI。ChatGPTやDALL-Eなどが代表例。 |
| ダッシュボード | FirebaseコンソールやVercelの管理画面など、サービスの状態を一覧・管理するためのWebインターフェース。 |
| ServiceAccount | サーバーサイドからFirebase等に接続するための認証情報。管理者権限を持つため厳重に管理する必要がある。 |
| リアルタイムデータベース | データの変更が接続中の全クライアントに即座に反映されるデータベース。Firestoreの主要機能の一つ。 |