第08章:React+TypeScript最小アプリ作成(Vite)⚛️🌱
この章でやることはシンプル! **「React + TypeScript の最小アプリを Vite で作って、ローカルで起動して、“動いた!”を体験する」**だけです🎉 (次章以降で Firebase を繋げるので、ここは 土台作り 💪)
0) 先に“詰まりポイント”だけ知っておく🧯😇
- Vite 7系は Node の要求が高いので、古い Node だと起動で止まります⚠️ 目安:Node 20.19+ か 22.12+(新しめの LTS を入れておけばOK)(vitejs)
- Node の “今の最新LTSの流れ” を見ると、v24 が Active LTS になっています(2026-02 時点)(nodejs.org)
- React は docs 上だと 最新が 19.2 になっています⚛️(react.dev)
- TypeScript は 安定版の最新が 5.9.3(npm 表示)で、6.0 は beta の流れです🧠(npm)
1) Node が“足りてるか”だけ確認する🔍🧰
PowerShell を開いて👇
node -v
npm -v
もし v18 とか古いのが出たら、ここで一回アップデートした方が早いです🙏
(Vite 7 だと Node 20.19+ / 22.12+ が必要)(vitejs)
**“どの node を見てるか”**分からないときは👇(複数入ってると罠🪤)
where node
2) Vite で React+TS プロジェクトを作る⚡📦

いきます!コマンドはこれだけ👇(公式の作り方)(vitejs)
npm create vite@latest myapp -- --template react-ts
cd myapp
npm install
npm run dev
成功すると、ブラウザでだいたい👇が開きます🌐
http://localhost:5173/(ポートは環境で変わることもあるよ)
3) “動いた!”を画面に出す🎉📸

src/App.tsx を開いて、いったんこれに置き換えちゃおう👇(最小の「動いた!」表示)
export default function App() {
return (
<main style={{ padding: 24, fontFamily: "system-ui" }}>
<h1>動いた!🎉</h1>
<p>Vite + React + TypeScript の起動確認できたよ✅</p>
<button onClick={() => alert("OK! ✅")}>押してみる</button>
</main>
);
}
保存した瞬間、ブラウザが勝手に更新されて表示が変わったら勝ち🏆✨ ここで スクショ📸 とっておくと「進んでる感」が出ます!
4) “迷子にならない”超ミニ構造理解🧭📁

この章では、最低これだけ覚えればOK🙂
src/main.tsx:React を起動してAppを表示する入口🚪src/App.tsx:今あなたが触ってるメイン画面🖥️index.html:最終的にここにアプリが載る土台🏠
(深追いは次章で!今日は“動いた”が最優先💨)
5) 🤖 AIを“今この瞬間”から味方にする(Gemini CLI)💻✨
目的:エラー解決と「次の一手」を爆速にする🏃♂️💨
Gemini CLI は npm で入れられます👇(Gemini CLI)
npm install -g @google/gemini-cli
gemini --help
(Google Cloud の docs だと「Cloud Shell では追加セットアップ不要」って扱いもあります)(Google Cloud Documentation)
おすすめの使い方(コピペOK)📝🤖
- ① まず状況を短く伝える
- ② そのままログを貼る(秘密情報は除く)
- ③ “やりたいこと”を1行で言う
例👇
Viteで react-ts を作って npm run dev したらエラーです。
WindowsのPowerShellです。
このログの原因と、最短の直し方を手順でください。
(ここにエラーログを貼る)
6) 🌟 Firebase AI を“後でラクする形”で仕込む(30秒)🧠🧩

まだ Firebase を繋いでないけど、将来 Firebase AI Logic に差し替える前提の“置き場所”だけ作ると気持ちいいです😄
src/lib/ai.ts を作って👇
// 今はダミー。後で Firebase AI Logic に差し替える用の窓口🚪
export async function askAi(prompt: string): Promise<string> {
return `(ダミー回答) ${prompt}`;
}
src/App.tsx にちょい足し👇
import { useState } from "react";
import { askAi } from "./lib/ai";
export default function App() {
const [msg, setMsg] = useState("");
return (
<main style={{ padding: 24, fontFamily: "system-ui" }}>
<h1>動いた!🎉</h1>
<button
onClick={async () => {
const res = await askAi("次にFirebaseで何をすればいい?");
setMsg(res);
}}
>
AIに聞く🤖
</button>
{msg && <p style={{ marginTop: 12 }}>{msg}</p>}
</main>
);
}
これで「AIボタンがある最小アプリ」ができた!✨
次の章で Firebase を繋げたら、この askAi() の中身を Firebase AI Logic に差し替えるだけで進めます🚀
ちなみに Firebase AI Logic の docs には モデルの終了予定も書かれていて、例えば Gemini 2.0 Flash / Flash-Lite が 2026-03-31 でリタイア予定などが明記されています🧯(古いモデルに寄らないの大事!)(Firebase)
7) Antigravity でやる場合🛸🕹️(超要点だけ)
やることは同じで、ターミナルでコマンドを打ってプレビューを見るだけです✅ Antigravity は “エージェント前提の開発環境”として案内されています(Google Codelabs)
ミニ課題🎯(10分)
- 画面に 「動いた!🎉」 を表示✅
- ボタンを押すと
alert("OK! ✅")が出る✅ - 「AIに聞く🤖」ボタンを押すと、ダミー回答が表示される✅
- スクショ📸 1枚保存(あとで自分が助かる)
よくある詰まり🐛🧯(ここだけ見ればOK)

Vite requires Node.js 20.19+ or 22.12+→ Node を新しめの LTS にする(まずここ)(vitejs)npm createが変なエラー → いったんnpm -vを確認、社内プロキシ環境ならネットワーク系が原因のことも多い🌐- ブラウザが開かない
→ ターミナルに出てる URL を自分で開く(
localhost:5173など)🧭
チェック問題✅(3つだけ)
- Q1.
npm run devは何をする?(一言で) - Q2. 画面表示を変えるのは基本どのファイル?
- Q3. Node が古いと何が起きる?(Viteの要求)(vitejs)
次の章(ファイル構成の超基本)に行く前に、もし npm run dev で出たエラーがあれば、そのログをそのまま貼ってくれたら、Gemini CLI に投げる用の最短プロンプトもセットで整えるよ🤖🛠️