ライフスタイル

実践:小さな Web サイトを作る

brief.md から Small Steps のタスクサイトを計画・制作し、追加、完了、削除、絞り込み、ローカル保存を実装します。HTML、CSS、データ関数、画面イベント、テストを分け、Node とブラウザーで検証して再起動・復元の手順を残します。

読了目安 20 分 · 操作 60 分

作業の流れを表す図です。製品画面の画像ではありません。
画像:Mokaair (© Mokaair)
この記事の目次
  1. 目標と開始地点
  2. 手順1:空の作業場所と参考版を用意する
  3. 手順2:成果と合格条件を書く
  4. 手順3:設計を確認して段階的に実装する
  5. 手順4:同じフォルダーをプレビューする
  6. 手順5:機能と画面を順に検証する
  7. 手順6:損壊データ・修正・引渡し

目標と開始地点

この段落の教材・資料:

手順1:空の作業場所と参考版を用意する

Small Steps 教材を展開し、expected は別の参考場所に保存します。本編は新規 website-lab の brief.md から始め、他編の制御教材 start・broken は混ぜません。expected の5ファイルは詰まった時の完成例です。作業端末で node --version、Windows は py -3 --version、macOS/Linux は python3 --version を確認し、不足命令は導入とで解決します。

各 OS は同一 HTML/CSS/JavaScript を使います。デスクトップで website-lab を選び、CLI は cd 後に codex、IDE はそのフォルダーをプロジェクトとして開きます。携帯で PC タスクを追えても、ファイルとプレビューは実行ホストにあり、携帯の127.0.0.1は PC ではありません。携帯展示のために練習サーバーを公開せず、まず PC でレスポンシブを確認します。

手順2:成果と合格条件を書く

下記を brief.md に保存します。英語の UI 名は参考版と一致させ、5言語で同じボタンを照合します。追加後の表示が Read、完了の切替が Update なので CRUD の4動作を満たし、ログイン・同期・共同作業は追加しません。見た目だけでなく損壊データ、空白入力、キーボード操作も定義します。

website-lab/brief.md · markdown
# Small Steps website brief
Build a local todo website using HTML, CSS and JavaScript only.

## Files
- index.html: accessible page and form
- style.css: responsive layout
- core.mjs: immutable data functions
- app.js: DOM events and localStorage
- core.test.mjs: Node built-in tests

## Data contract
- Task: {id: string, title: string, completed: boolean}
- Trim titles; accept 1 to 100 non-blank characters. IDs must be unique.
- Export addTask(tasks, title, id), toggleTask(tasks, id), removeTask(tasks, id),
  visibleTasks(tasks, filter), decodeTasks(raw), encodeTasks(tasks).
- Filters: all, active, completed. Missing toggle/delete IDs leave data unchanged.
- Store {version: 1, tasks: [...]} under mokaair-codex-todo-v1.
- Invalid stored data must remain untouched; warn and allow temporary work.

## Interface and acceptance
- Labels: New task, Add task, Show, All tasks, Active, Completed, Delete.
- Show active and total counts, including when a filter is selected.
- Add, toggle, delete, filter and reload must work.
- Render task text as text, not HTML.
- Visible keyboard focus; preserve sensible focus after list updates.
- Fit 360px, 390px and 1280px viewports without page overflow.
- Include an About this exercise disclosure with a Reset practice data button.
- Reset practice data removes only this app's storage key.
- No dependencies, account, backend, analytics or external requests.

## Delivery
Explain changes, run node --test core.test.mjs, and list actual browser checks.
Do not claim checks that were not run. Do not publish or deploy.

手順3:設計を確認して段階的に実装する

で brief.md を読み、5ファイルの責務、データの流れ、検証を提案させます。core.mjs は DOM に触らず、app.js が操作と保存を担当し、framework や追加サービスがないか確認します。損壊や復元が欠ければ計画へ追加してから実装へ切替えます。データ・試験、画面・操作の2段階に分け、各回で実変更と未検証点を報告させます。

第1段階の実装依頼 · text
Implement core.mjs and core.test.mjs from the approved brief.md contract.
Keep all data operations immutable. Test empty and long titles, Unicode,
duplicate IDs, filters, missing IDs, storage round trips and invalid storage.
Run node --test core.test.mjs and report the command, result and remaining work.
Do not change the brief, publish anything or build the UI in this stage.
第2段階の実装依頼 · text
Implement index.html, style.css and app.js using the tested core.mjs.
Follow the UI, storage, accessibility and responsive criteria in brief.md.
Do not weaken the data tests to accommodate UI bugs.
Run the data tests again. Give local preview instructions and list which
browser interactions you actually verified and which still need verification.

各段階で自分でもファイルと試験を確認します。参考 core.test.mjs は複数断言を持つ3つの上位試験ですが、生成版の件数は異なり得るため数だけで比較しません。実装と試験が同じ勘違いを持つ場合もあり、次の独立した画面確認が必要です。詰まれば expected の該当ファイルを比べ、未保存作業を丸ごと上書きする前に原因を理解します。撤回は を確認します。

手順4:同じフォルダーをプレビューする

Windows PowerShell · powershell
node --test core.test.mjs
py -3 -m http.server 4173 --bind 127.0.0.1
macOS/Linux · sh
node --test core.test.mjs
python3 -m http.server 4173 --bind 127.0.0.1

http://127.0.0.1:4173 を開き、その端末を維持し、他命令は別端末で実行します。占用時は自分の練習サーバーか確認してから停止を判断し、空きポートへ変えるなら URL と検証記録も変えます。HTML を直接開く file URL は ES module を制限し得ます。版違いなら全面再作成を頼む前に提供フォルダー、URL、Network の app.js を確認します。

手順5:機能と画面を順に検証する

About this exercise を開き、全て捨てられる架空資料と確認して Reset practice data で専用キーだけを消します。Show で All tasks を選び、0 active / 0 total を確認してから Read・Build を追加し Read を完了にします。All tasks は2件、Active は Build、Completed は Read、統計は1 active / 2 totalです。再読込で保持を確認し、All tasks に戻り Read を削除して Build を残します。トップページの画像1枚で終わらず次の表を検証します。

例操作期待結果
空白3空白を送信追加せず理解可能なエラー
Unicode寫作 ✨ を追加再読込でも保持
文字安全下記 HTML 試験文字列 を追加文字表示、画像要素なし
キーボードTab・Enter・Space可視焦点、完了・削除後も操作可能
携帯幅360px・390px、長い題名折返し、ページ全体の横方向のはみ出しなし
デスクトップ幅1280px一覧・統計・操作が読める

レスポンシブ表示は実 iOS/Android 試験ではなく、添付 Windows/Edge 参考画像は今回の生成成果の証明ではありません。

文字安全:タスク題名として入力 · text
<img src=x>

手順6:損壊データ・修正・引渡し

高度な確認はローカルの架空データの練習ページだけで行います。必要記録を保存後、開発ツールの Storage/Application → Local Storage で現在の127.0.0.1とポートを選び、mokaair-codex-todo-v1を bad-json にして再読込します。警告が出て、暫定追加後も保存値が bad-json のままか確認します。Reset practice data でその鍵だけを消し、新規追加・再読込で保存復旧を確認します。他サイトの全資料は消しません。

引継ぎ前に架空データを空にして次の順序をたどり、期待と観察を別欄に記録します。参照実装でも自分のページを観察します。絞込み時も全タスクを数える条件で、表示部分だけを数える誤りを検出できます。プレビュー不可なら未確認とし、期待値を実測にしません。

website-lab/handoff.md:期待値と実測を区別 · markdown
# Website handoff
Root / source version:
Node test command / exit status:
Browser / version / viewport / date:

| Step | Expected active / total | Observed |
| --- | --- | --- |
| Reset fictional practice data; select All tasks | 0 / 0 | |
| Add Read, then Build | 2 / 2 | |
| Complete Read | 1 / 2 | |
| Select Active; only Build visible | 1 / 2 | |
| Select Completed; only Read visible | 1 / 2 | |
| Select All tasks, delete Read | 1 / 1 | |

Input/storage recovery evidence:
Keyboard and narrow-layout evidence:
Actual changed files:
Unverified requirements:
How to restart / restore:

失敗時は入力・操作・期待・実際を正確に伝え、で該当層だけ修正・再検証します。brief、5ファイル、Node 記録、広幅・狭幅画面、未実測プラットフォーム、復元方法を引渡します。元端末の Ctrl+C で停止し、で再起動法を説明させます。framework・バックエンド・公開は別の明確な範囲であり、ローカル表示を配備済みとしません。

31. 実践:小さな Web サイトを作る — 作業の流れを表す図です。製品画面の画像ではありません。 Brief → HTML / CSS → Browser checks
31. 実践:小さな Web サイトを作る — 作業の流れを表す図です。製品画面の画像ではありません。 Brief → HTML / CSS → Browser checks · 画像:Mokaair (© Mokaair)
詳しい説明を読む

Brief to HTML / CSS to Browser checks

練習用タスクサイト。Build は完了、Read the AGENTS.md rules は未完了で、合計2件。
変更前の完成参考版を実際のブラウザで撮影。Windows / Edge 153.0.4234.32、2026-09-14。架空データを使用。390px はレスポンシブ表示で実物のスマートフォンではありません。Codex デスクトップ UI の画像ではありません。 · 画像:Mokaair (© Mokaair)
練習用タスクサイト。Build は完了、Read the AGENTS.md rules は未完了で、合計2件。
変更前の完成参考版を実際のブラウザで撮影。Windows / Edge 153.0.4234.32、2026-09-14。架空データを使用。1280px はレスポンシブ表示で実物のスマートフォンではありません。Codex デスクトップ UI の画像ではありません。 · 画像:Mokaair (© Mokaair)

総目次へ

  • ライフスタイル

    Codex 学習ガイド:全記事の目次

    導入と最初のタスクから MD の指示、高度な連携まで、60 レッスン・十単元を予定しています。習熟度、環境、目的、コマンドで次の記事を探せます。未公開の記事には状態を表示します。

  • ライフスタイル

    Worktree とタスクの分離

    Worktree は一つの Git リポジトリに別ブランチの作業場所を作ります。ファイルは分かれても DB、ポート、外部サービスは共有される場合があります。

  • ライフスタイル

    使用量と効率:やり直しを減らす

    条件、モデル設定、時間、成果を記録し、不要な再試行と過剰な文脈を減らします。

  • ライフスタイル

    既存のコードベースを理解する

    読み取りで入口、データの流れ、テストを探し、ファイルに基づくプロジェクト地図を作ります。

最新の旅の情報・ガイド

出典

ライフスタイル