このユニットのゴール
HTML / CSS / JavaScriptの基礎を速習し、自分の日報APIをfetchで呼ぶ「使いやすい画面」を自分でつけられるようになる。
進め方の地図
| 週 | やること | 仕上がるもの |
|---|---|---|
| 1週目 | 授業1: HTML / CSS速習 | 日報一覧の見やすい静的ページ |
| 2週目 | 授業2: JavaScript速習 ― 3行の型 | 動くカウンターと文字数表示 |
| 3〜4週目 | 授業3: fetchで自分のAPIを呼ぶ | APIから描画される日報一覧 |
| 5週目 | 授業4: 使いやすさの最低限 | 整った入力フォーム |
| 6週目 | 月末制作: 日報アプリの画面強化 | 「人にすすめられる」日報アプリ |
基礎カリキュラムが教科書です。HTMLはStep 2 授業3、CSSはStep 2 授業4、JavaScriptはStep 3。一度通った道の速習なので、1週間ずつで駆け抜けられます。じっくり版が必要になったら、フロントエンドコースのpf-01・pf-02がいつでも待っています。
授業1: HTML / CSS速習 ― 一覧を見やすくする
バックエンドの画面づくりで最初に必要なのは、凝った装飾ではなく「一覧の見やすさ」です。覚えるCSSは3つで足ります ― 文字の階層・余白・1色のアクセント。
例題 (リードつき) | 日報一覧テンプレートを整える
- 意味タグに整えるユニット4のテンプレートを、
header(アプリ名)・main(フォームと一覧)・footerの構造にします。 - 1件をカードにする日報1件を
<article class="nippo">で包み、CSSを当てます。.nippo { background: #ffffff; border: 1px solid #dddddd; border-radius: 10px; padding: 16px; margin-bottom: 12px; } .nippo .meta { font-size: 0.85rem; color: #666666; } - 3つのルールで仕上げる①文字サイズは「見出し24 / 本文16 / 日付など13」の3階層だけ ②余白は8の倍数 (8・16・24) だけ ③色は「黒っぽい文字 + 灰色 + アクセント1色」だけ。この縛りが、そのまま「整って見える」の正体です。
- ビフォーアフターを残す整える前のスクリーンショットを撮っておき、見比べます。差が、このユニットの成果物の一部です。
デザインの根拠を知りたくなったら: いま使った3ルールの「なぜ」は、デザインコースのpd-01に全部書いてあります。越境ユニット同士は、つながっています。
授業2: JavaScript速習 ― 3行の型
画面のJavaScriptは、ほぼ全部この型でできています ― ①要素をつかむ → ②イベントを待ち受ける → ③中身を書き換える。Pythonで鍛えた文法感覚があれば、駆け足で行けます。
例題 (リードつき) | 型を1回で体に入れる
- 練習用HTMLを作る
<p>押した回数: <span id="count">0</span></p> <button id="plus">+1</button> <script> const countEl = document.querySelector("#count"); // ① つかむ let count = 0; document.querySelector("#plus").addEventListener("click", () => { // ② 待ち受ける count++; countEl.textContent = count; // ③ 書き換える }); </script> - Pythonとの違いを3つメモする変数は
let/const、ブロックは字下げでなく{ }、文字の埋め込みはf"..."でなく`${ }`。この3つさえ翻訳できれば、読み書きの感覚は流用できます。 - 文字数カウンターに改造する日報の入力欄 (textarea) の下に「いま◯文字」をリアルタイム表示します。イベントを
"input"に、値を.value.lengthにするだけです。これはこのまま月末制作の部品になります。
授業3: fetchで自分のAPIを呼ぶ
ユニット4で作ったJSONの窓口 (/api/nippo) を、画面のJavaScriptから呼びます。API提供者とAPI利用者を、1人で両方やる ― 越境ユニットのハイライトです。
例題 (リードつき) | 「最新5件」ウィジェットを作る
- 置き場所を作るテンプレートに
<ul id="latest"></ul>を置きます。 - 取りに行って描く
async function loadLatest() { const res = await fetch("/api/nippo"); const data = await res.json(); const ul = document.querySelector("#latest"); ul.innerHTML = ""; for (const n of data.slice(0, 5)) { const li = document.createElement("li"); li.textContent = `${n.day} ${n.name}: ${n.content}`; ul.appendChild(li); } } loadLatest();await fetch → .json( )は「取りに行って、JSONをオブジェクトに戻す」の2拍子です。Pythonでrequestsを使うのとそっくりの感覚です。 - 自作APIならではの実験わざとAPI側 (Flask) を止めて画面を再読み込みし、何が起きるか観察します。次に
try / catchで「読み込みに失敗しました」を表示する守りを足します。障害時に画面がどうなるかは、API設計者こそ知っているべき景色です。 - APIを使う側の気持ちをメモする「日付の形式はこれで扱いやすい?」「件数指定 (limit) があったら楽では?」― 使う側として感じた不満を3つメモします。そのままAPI改善のToDoになります。
演習 3-A (ヒントだけ) | APIを使いやすく直す
お題: 手順4のメモから1つ選んで、API側を改善します。おすすめは /api/nippo?limit=5 のような件数指定です。
ヒント: Flask側は
request.args.get("limit", 10) でURLの「?以降」を受け取れます。SQLの LIMIT ? につなげば完成です。画面を作った経験がAPIを良くする ― この往復が越境の果実です。授業4: 使いやすさの最低限
業務アプリの画面は、毎日使う人の小さなストレスを消せるかが勝負です。チェックするのは4点だけです。
- ラベルと入力欄をつなぐ
<label for="content">とid="content"をそろえます。ラベルを押すと欄が選ばれ、読み上げにも正しく伝わります。 - エラーは「直し方つき」で「入力してください」ではなく「今日やったことを1行でOKなので入力してください」。
- 送信後に迷子にしない保存できたら「記録しました」を一瞬表示するか、一覧の先頭に新しい日報が見えている状態に戻します。
- スマホで触ってみる同じWi-Fiにいるスマホから
http://パソコンのIPアドレス:5000で開けます (IPアドレスはipconfigで調べられます)。ボタンが小さすぎないか、親指で確かめましょう。
月末制作: 日報アプリの画面強化
月末制作
ユニット4の日報アプリを、「使ってみたい」と言われる見た目と操作感に仕上げます。
- 必須4機能: ①整った一覧 (授業1のカード) ②入力中の文字数表示 (授業2) ③「もっと見る」= limitつきAPIをfetchで追加読み込み (授業3) ④今日の投稿件数バッジ (
/api/countの応用)。 - 使いやすさ検査: 授業4の4点を全部通します。
- 他人テスト: スタッフに「説明なしで日報を1件書いてもらう」テストをして、詰まった場所を1つ直します。
- ビフォーアフター発表: ユニット4の終了時のスクリーンショットと並べて、何をなぜ変えたかを発表します。GitHubへのpushも忘れずに。
このアプリは卒業制作の母体になれます。ユニット6で別の題材を選んでもよいですが、「日報アプリを本気で完成させる」も立派な卒業制作です。ここでの仕上がりが良いほど、最後の2ヶ月が楽になります。
つまずきやすいポイント
画面のJSが「効かない」とき: まず F12 のConsoleタブを開く習慣をつけましょう。赤いエラーが出ていれば、それが答えです (PythonのTracebackと同じで、エラーは案内板です)。何も出ていなければ、scriptタグの位置がHTMLの要素より上にないかを疑います。
2つの言語で頭が混線したら: 混線は越境した人だけが得られる症状で、悪いことではありません。授業2で作った「違い3つメモ」を手元に貼っておくと、切り替えが速くなります。
発展チャレンジ (余力のある方へ)
発展チャレンジ
- 日報の「気分」を、絵文字ボタン (😀😐😞) のクリックで選べるようにしてみましょう。フォームの hidden 入力と組み合わせます。
- 一覧の上に「名前の絞り込みボタン」を生やし、ページ移動なしでfetch + 再描画する版に挑戦してみましょう。
- デザインコースのpd-03 (UIデザイン実践)のフォームの4つの約束を読んで、自分のフォームを採点してみましょう。