Old-School Front-End / 2026 ・ No.01
いにしえのフロントエンド入門
第1回 Web ページが映るまでと、経費精算システムの設計図
公開
今回から、Web システムの画面づくり(フロントエンド)の連載を始めます。題材は、どの会社にもある経費精算システム。
いまは AI に「こんな画面を作って」と頼めば、コードを読まなくても画面ができてしまうバイブコーディング(Vibe Coding)の時代です。
この連載は、あえてその逆を行きます。HTML・CSS・JavaScript を、一行ずつ意味を確かめながら自分の手で書く。道具も Bootstrap と jQuery まで。
だから「いにしえの」フロントエンド入門です。全15回で、上の画面が動くところまで作ります。第1回は、手を動かす前の準備運動です。
「いにしえの」とは:バイブコーディングの逆
まずは、この連載の二人を紹介します。
登場人物
古井新井くん、今度の経費精算システム、画面は君に任せる。
新井任せてください! AI に「経費精算の画面を作って」って頼めば一瞬です。バイブコーディングってやつですね。
古井ほう。で、出てきたコードは読めるのか? 合計が1円ずれたら、どこを直す?
新井……そこは、雰囲気で。
古井それが「バイブ」だ。今回は一行ずつ、手で書いてもらう。いにしえのやり方でな。
新井手で!? それって縄文時代の作り方じゃ……。
古井縄文は言いすぎだ。せいぜい平成だな。
バイブコーディング(Vibe Coding)は、OpenAI の創業メンバーの一人アンドレイ・カルパシーが2025年2月に名付けた言葉です。AI に自然な言葉で頼み、出てきたコードは細かく読まずに「雰囲気(バイブ)」で受け入れて進める作り方で、英国の Collins 辞典が2025年の「今年の言葉」に選ぶほど広まりました。このブログでも開発ガイドのVibe Coding覚書で取り上げています。この連載の「いにしえの」は、その正反対という意味です。
| バイブコーディング | いにしえのやり方(この連載) | |
|---|---|---|
| コードを書くのは | AI(人は頼むだけ) | 自分 |
| コードは | 細かく読まない | 一行ずつ意味を確かめる |
| 最初の画面まで | とにかく速い | 時間がかかる |
| 壊れたとき | AI にもう一度頼む(直るまで祈る) | どこが悪いか、自分で突き止められる |
| 向いているもの | 試作、使い捨てのツール | 長く使う業務システム、AI が書いたコードの確認 |
AI に頼めば速いのは事実です。それでも、この連載では手で書きます。理由は三つあります。
- AI が書いたコードにも、責任を持つのは人 ── 経費精算はお金を扱うシステム。合計の1円のずれや、入力チェックの抜けは、誰かがコードを読んで見つけなければならない。読めないコードは、確かめることも直すこともできない
- 土台は変わらない ── AI が書いても、React や Vue を使っても、最後にブラウザに渡るのは HTML・CSS・JavaScript。土台が分かっていれば、何が出てきても中身が見える
- いにしえの道具は、今も現役 ── 調査会社 W3Techs の集計では、2026年10月時点で jQuery は調査対象の Web サイトの約64.5% で使われ、Bootstrap は CSS フレームワークの中で約75% を占めます。社内の業務システムには、なおさら多く残っています
AI を否定する連載ではありません。自分の手で一度作れるようになると、AI への頼み方がうまくなり、出てきたコードの良し悪しも判断できるようになります。手で書く力は、AI を使いこなすための土台です。この連載のゴールは、「AI に頼らなくても、業務システムの画面を一通り作れる」ことです。
作るもの:経費精算システム
経費精算は、社員が立て替えたお金(電車代や出張のホテル代など)を会社に申請し、上司が承認し、経理が払い戻す仕組みです。登場人物と、申請が進む流れを図にしました。
誰が、どの状態を動かすか
一つの申請は「状態」を持ち、人が操作するたびに次の状態へ進みます。この流れを画面でどう表すかが、業務システムの腕の見せどころです
この連載で作る機能を、ざっと並べるとこうなります。
| 使う人 | できること |
|---|---|
| 申請者 | 申請を書く(明細の行を増やせる、領収書を添付できる)、下書きで保存する、申請する、自分の申請の一覧と状態を見る、差し戻されたら直して出し直す |
| 承認者 | 部下の申請を見て、承認するか、理由を書いて差し戻す |
| 経理 | 承認済みの申請を精算済みにする、月ごとの金額をグラフで見る、申請書を印刷する |
守るべきルールもあります。開発ガイドのPlaywright 入門と実践でテストした経費精算ページと同じく、「合計が3万円以上なら領収書が必須」「未来の日付は申請できない」「ドル建ての明細は円に換算する」などです。ルールを画面で守らせる方法は、第9回で詳しく扱います。
この連載が作るのは画面の側(フロントエンド)だけです。データを保存するサーバーの代わりに、第10回からは「本物のふりをする」小さなサーバー(モック API)を使います。本番で使うなら、ログインや入力チェックはサーバー側でも必ず行う必要があります(画面の側のチェックは、利用者のブラウザで簡単に外せるからです)。
Web ページが映るまで
新井URL を打つと、ページがパッと出る。あれ、魔法ですよね。
古井魔法に見えるのは、裏の工程が一瞬で終わるからだ。順番に見てみよう。
ブラウザの中で起きていること
- 注文する(リクエスト) ── ブラウザが、URL が指すサーバーに「このページをください」と頼む
- 届く(レスポンス) ── サーバーから HTML が届く。HTML の中に書かれた CSS や JavaScript のファイルも、続けて取りに行く
- 読み解く ── HTML を読んで、ページの部品の木(DOM)を作る。CSS も読んで、見た目のルールの一覧(CSSOM)を作る。二つを合わせて、実際に画面に出す部品だけの木(レンダーツリー)にする
- 配置する(レイアウト) ── 画面の幅に合わせて、それぞれの部品の位置と大きさを計算する
- ぬる(ペイント) ── 文字や色を、画面の点(ピクセル)に描く
ここで大事なのが DOM です。JavaScript は、HTML のファイルそのものではなく、ブラウザの中にある DOM を書き換えて画面を変えます。書き換えるたびに④⑤がやり直されるので、むやみに書き換えると画面が重くなります。この話は第8回でもう一度出てきます。
HTML・CSS・JavaScript の三役
フロントエンドの三つの言語は、体にたとえると分かりやすくなります。
三つの言語の役割分担
百聞は一見にしかず。同じ申請フォームに、三つを順番に足してみました。
①の HTML だけでも、入力欄やボタンはちゃんと動きます。文字も打てるし、ボタンも押せる。ただ、見た目は素朴で、合計は 0 円のまま。②で CSS を足すと業務システムらしい見た目になりますが、計算はしてくれません。計算や、押したときの反応は JavaScript の仕事です。それぞれ、足したのはこんなコードです(抜粋)。
<!-- ① HTML:何があるか -->
<p>合計: <output id="total">0</output> 円</p>
<button type="button" id="send">申請する</button>
/* ② CSS:どう見えるか */
button { background: #c0392b; color: #fff; border-radius: 8px; }
// ③ JavaScript:どう動くか
document.querySelector('#send').addEventListener('click', () => {
document.querySelector('#toast').hidden = false;
});
いまは読めなくて大丈夫です。HTML は第2〜3回、CSS は第4〜6回、JavaScript は第7〜10回で、一つずつ読めるようにしていきます。
三つを別々のファイルに分けて書くのが基本です(HTML は .html、CSS は .css、JavaScript は .js)。役割ごとに分けておくと、「見た目だけ直したい」「動きだけ直したい」ときに、触る場所が一つで済みます。
ちょっとだけ歴史
「いにしえの」と名乗るからには、少しだけ昔話を。
フロントエンドの年表(主なできごと)
- 1991年 ── CERN(欧州原子核研究機構)のティム・バーナーズ=リーが、Web をインターネットで一般に公開。最初の Web サーバーは info.cern.ch
- 1994〜96年 ── ホーコン・ウィウム・リーが CSS を提案(1994年10月)。1996年12月に CSS1 が W3C の勧告になり、「見た目は HTML と分けて書く」という考え方が定まる
- 1995年 ── Netscape 社のブレンダン・アイクが、5月にわずか10日間で JavaScript の最初の試作を作る。12月に正式に発表
- 2006年 ── ジョン・レシグが jQuery を発表。ブラウザごとにバラバラだった書き方の違いを吸収し、一気に広まった
- 2011年 ── Twitter 社の二人(マーク・オットーとジェイコブ・ソーントン)が Bootstrap を公開
- 2021年 ── Bootstrap 5 が、それまで必要だった jQuery なしで動くようになる
- 2026年 ── 1月に jQuery 4.0 が約10年ぶりのメジャー版として登場(古い Internet Explorer 10 以前の対応を終了)。10月には Bootstrap 6 の最初のアルファ版も公開された
新井JavaScript、10日で作られたんですか!? じゃあこの連載も10日で……。
古井10日で作ったのは試作だ。そのあと30年かけて直し続けている。こっちは15回。急がば回れだ。
この連載では、執筆時点で安定版の Bootstrap 5.3 系と jQuery 4.0 系を使う予定です。
画面の設計図
家を建てる前に間取り図を描くように、画面も作る前に設計図を描きます。まずは画面の一覧と、行き来の関係です。下の小さな字は、その画面を主に作る回です。
経費精算システムの画面
次に、いちばん大事な申請フォームを少し細かく描きます。こうした、色や飾りを省いて「どこに何を置くか」だけを描いた図をワイヤーフレームと呼びます。
申請フォームのワイヤーフレーム
紙と鉛筆で十分です。大事なのは、きれいさより「部品の抜け漏れがないか」を先に確かめること
設計図を描くと、作る前に気づけることがたくさんあります。たとえば「明細が10行を超えたらどう見せる?」「領収書は画像だけ? PDF も?」「スマホで申請する人はいる?」。こうした問いを先に洗い出しておくと、作り直しが減ります。
道具をそろえる
必要な道具は三つだけ。どれも無料です。
| 道具 | 何に使う | ポイント |
|---|---|---|
| ブラウザ | 作った画面を表示して確かめる | この連載では Google Chrome で説明します。Edge でもほぼ同じです |
| エディタ | コードを書く | Visual Studio Code(VS Code)。色分けや入力の補完が助けてくれる |
| Live Preview | 保存するたびに画面を自動で更新する | Microsoft が出している VS Code の拡張機能。手元に小さな Web サーバーを立ててくれる |
そして、もう一つの大事な道具が、ブラウザに最初から入っている開発者ツール(DevTools)です。いわば、ページの「レントゲン」。この連載で毎回のように使います。
開発者ツールの見どころ
ファイルは、次のように役割ごとのフォルダに分けて置いていきます(今回作るのは index.html だけです)。
最初の一枚を作る
準備ができたら、最初のページを作りましょう。手順は5つです。
- パソコンに keihi という名前のフォルダを作り、VS Code の「フォルダーを開く」で開く
- index.html というファイルを作り、下のコードを書いて保存する(空のファイルで ! と打って Tab キーを押すと、ひな形が一瞬で出てきます)
- 拡張機能 Live Preview を入れ、エディタ右上のプレビューボタン(または右クリックのメニュー)からプレビューを開く
- 文字を書き換えて保存すると、プレビューも自動で変わることを確かめる
- ブラウザで開いたら F12(Mac は Cmd + Option + I)で開発者ツールを開き、Elements タブで h1 を探してみる
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>経費精算システム</title> </head> <body> <h1>経費精算システム</h1> <p>ただいま建設予定地です。</p> <p>第2回から工事が始まります。</p> </body> </html>
| 書いたもの | 意味 |
|---|---|
| <!DOCTYPE html> | 「これは今の HTML です」という宣言。1行目のお約束 |
| <html lang="ja"> | ページ全体を包む箱。lang は言語で、読み上げソフトや翻訳機能が参考にする |
| <head> | 画面には出ない「ページの情報」を書く場所 |
| <meta charset="UTF-8"> | 文字の符号の種類。これがないと日本語が文字化けすることがある |
| <title> | ブラウザのタブに出る題名 |
| <body> | 画面に出る中身を書く場所 |
| <h1>・<p> | 大見出しと段落 |
ここで、わざと失敗してみましょう。</h1>(見出しの閉じタグ)を消して保存すると……。
新井うわ、全部見出しになった! でもエラーは出ないんですね。
古井ブラウザは優しいからな。間違いがあっても、黙って「それらしく」表示してくれる。その優しさに甘えると、あとで原因を探すのに苦労するぞ。
開発者ツールの Elements タブで見ると、2つの段落が h1 の中に入ってしまっているのが分かります。「見た目がおかしいときは、まず Elements で木の形を確かめる」。これが、この連載で何度も使うデバッグの第一歩です。
全15回の地図
最後に、これからの道のりです。各駅停車で、一駅ずつ進みます。
いにしえのフロントエンド入門 路線図
| 回 | テーマ | 経費精算システムで作るもの |
|---|---|---|
| 1 | 全体像と準備 | 設計図と、最初の一枚(今回) |
| 2 | HTML①:文書の骨組み | 申請一覧の骨組み(見出し・表・リンク) |
| 3 | HTML②:フォーム | 申請フォーム(入力欄・選択肢・ファイルの添付) |
| 4 | CSS①:セレクタとボックス | 一覧を自前の CSS で整える |
| 5 | CSS②:レイアウト | ヘッダー・メニュー・本文の配置と、スマホ対応 |
| 6 | CSS③:Bootstrap | 画面全体を Bootstrap で作り直す |
| 7 | JavaScript①:言語の基本 | 合計を計算する関数 |
| 8 | JavaScript②:DOM とイベント | 明細の行の追加・削除と、合計の自動更新 |
| 9 | JavaScript③:入力チェック | 「3万円以上は領収書が必須」などのルール |
| 10 | JavaScript④:非同期と通信 | 一覧の読み込みと申請の送信(モック API) |
| 11 | ログインと画面の切り替え | 申請者・承認者・経理で見える画面を変える |
| 12 | 承認の流れ | 下書き→申請中→承認/差し戻し→精算済みの状態の管理 |
| 13 | 集計と印刷 | グラフ付きのダッシュボードと、印刷用の申請書 |
| 14 | jQuery | 第8〜10回の処理を jQuery で書き直して比べる |
| 15 | 仕上げ | 品質・安全・公開の確認、そしてフレームワークの入口へ |
前半(第2〜10回)で三つの言語を一つずつ身につけ、後半(第11〜15回)でそれを組み合わせて、業務システムらしい機能を仕上げます。第14回で jQuery を扱うのは、自分で一度素の JavaScript で書いてからのほうが、jQuery が何を楽にしてくれるのかがよく分かるからです。
結 — 一枚まとめと次回予告
- この連載は、AI に頼んで雰囲気で作るバイブコーディングの逆を行き、HTML・CSS・JavaScript と Bootstrap・jQuery を自分の手で書いて経費精算システムを作る、全15回の「いにしえの」フロントエンド入門。手で書く力は、AI を使いこなす土台にもなる。
- ブラウザは、注文 → 受け取り → 読み解き(DOM と CSSOM)→ 配置 → ぬりの順でページを映す。JavaScript は DOM を書き換えて画面を変える。
- 三役は、HTML = 骨格(何があるか)、CSS = 服(どう見えるか)、JavaScript = 神経と筋肉(どう動くか)。ファイルも役割ごとに分ける。
- 作る前に、利用者・流れ・ルール・画面の一覧・ワイヤーフレームを描いておくと、作り直しが減る。
- 道具はブラウザ・VS Code・Live Preview、そして開発者ツール。見た目がおかしいときは、まず Elements で木の形を見る。
新井次回はいよいよ HTML ですね。建設予定地に、柱が立つ!
古井ああ。申請一覧の骨組みからいこう。宿題は、今日の index.html を壊して、直してみることだ。AI に聞く前に、まず自分でな。
参考
- Shropshire Star (PA) — Collins’ Word of the Year for 2025 revealed
- CERN — Web@30: Web history
- W3C — Cascading Style Sheets, designing for the Web: The CSS saga
- Wirfs-Brock & Eich — JavaScript: The First 20 Years (HOPL IV, 2020)
- jQuery Blog — jQuery 4.0.0
- Bootstrap
- npm — bootstrap
- W3Techs — Usage statistics and market share of jQuery
- W3Techs — Usage statistics of CSS frameworks
- web.dev — Render-tree construction, layout, and paint
- Chrome for Developers — Chrome DevTools
- Visual Studio Code
- GitHub — microsoft/vscode-livepreview (Live Preview)
利用率は W3Techs の集計(jQuery は2026年10月17日、CSS フレームワークは2026年10月16日の数値)で、同社が調査対象とする Web サイトの中での割合です。版と公開日は、jQuery 公式ブログと npm の公開記録によります(Bootstrap の最新の安定版は 5.3.8、6.0.0-alpha.1 は2026年10月8日公開)。JavaScript の「10日間」は、アイクらの論文(HOPL IV、2020年)によります。画面の写真は、筆者が作ったデモページを2026年10月17日にクラウド上の Chromium(Playwright)で撮影したもので、表紙の完成イメージは Bootstrap 5.3.8 で組んだ見本です。登場人物は架空の人物です。
いにしえのフロントエンド入門 第1回 — Web ページが映るまでと、経費精算システムの設計図 / 2026.10