[{"data":1,"prerenderedAt":23},["ShallowReactive",2],{"$fgxyYFxzfpanfePx4A7WxRcLFShjxpc90ziDVt-vK2eY":3},{"id":4,"createdAt":5,"updatedAt":6,"publishedAt":7,"revisedAt":6,"title":8,"content":9,"eyecatch":10,"category":14,"meta":19},"web-history-part1","2026-02-02T09:29:51.621Z","2026-02-19T10:58:27.850Z","2026-02-02T09:57:13.953Z","Web実装技術の歴史と変遷【前編】：黎明期からCSSの誕生、第一次ブラウザ戦争まで","\u003Cp>2017年ごろからWeb業界に携わり始めましたが、そこから今に至るまで、技術の変遷はとてつもないスピードで進んできたように感じます。\u003C/p>\u003Cp>ES6（ECMAScript 2015）やTypeScriptの台頭、フレームワークやバンドルツールの多様化など、覚えるべき技術は星の数ほど増えました。\u003C/p>\u003Cp>そんな周辺技術が急速に発展・増加していく中で、Webサイト制作の根幹となるHTMLやCSSの現在のスタンダードはどうなっているのか。\u003C/p>\u003Cp>原点に立ち返り、改めて歴史とともに調べてみることにしました。\u003C/p>\u003Ch2 id=\"hff89c33c98\">ウェブ標準技術の成熟と始まり\u003C/h2>\u003Cp>遡ること30数年。 1989年にティム・バーナーズ＝リーによって提案されたWorld Wide Web（WWW）から、ハイパーテキストという思想が提唱されました。\u003C/p>\u003Cp>その思想に基づき、1991年ごろに最初のHTMLが誕生します。\u003C/p>\u003Cblockquote>\u003Cp>\u003Cstrong>History of the Web\u003C/strong> \u003Ca href=\"https://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/Tags.html\">https://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/Tags.html\u003C/a>\u003C/p>\u003C/blockquote>\u003Cp>この時代を直接体験したわけではありませんが、当時利用可能なタグは、見出し（\u003Ccode>&lt;h1&gt;\u003C/code>〜\u003Ccode>&lt;h6&gt;\u003C/code>）、段落（\u003Ccode>&lt;p&gt;\u003C/code>）、リスト（\u003Ccode>&lt;ul&gt;\u003C/code>, \u003Ccode>&lt;ol&gt;\u003C/code>, \u003Ccode>&lt;li&gt;\u003C/code>）、そして最も重要なリンク（\u003Ccode>&lt;a&gt;\u003C/code>）など、最低限の構造を定義するタグに限られていたそうです。\u003C/p>\u003Cp>下記のようなコードですね。\u003C/p>\u003Cp>HTML\u003C/p>\u003Cpre>\u003Ccode>&lt;title&gt;The World Wide Web project&lt;/title&gt;\n&lt;h1&gt;World Wide Web&lt;/h1&gt;\nThe WorldWideWeb (W3) is a wide-area&lt;a name=0 href=&quot;http://...&quot;&gt;hypermedia&lt;/a&gt; information retrieval initiative...\n&lt;ul&gt;\n&lt;li&gt;&lt;a href=&quot;http://...&quot;&gt;What&apos;s out there?&lt;/a&gt;\n&lt;li&gt;&lt;a href=&quot;http://...&quot;&gt;Help&lt;/a&gt;\n&lt;/ul&gt;\n\u003C/code>\u003C/pre>\u003Cp>\u003Ccode>&lt;head&gt;\u003C/code>や\u003Ccode>&lt;body&gt;\u003C/code>といったタグすらなく、リンクとリストだけの極めてシンプルな構造であることが分かります。\u003C/p>\u003Cp>今では考えられませんが、CSSも存在しない時代。\u003Cbr>ごくごくシンプルに「情報を伝達するため」だけにHTMLが用いられていました。\u003C/p>\u003Ch2 id=\"he87f67b1d9\">デザインへの誘惑\u003C/h2>\u003Cp>しかし、人間には欲が出てくるもので、情報が集まるとそれを整理し、装飾したくなるのが道理です。\u003C/p>\u003Cp>「やはり視覚的に見やすい方がいいだろう」ということで、HTMLの思想が学術界から一般社会に広がるにつれ、字下げや文字サイズ、色の変更などが直接HTMLタグで行われるようになりました。\u003C/p>\u003Cp>HTML\u003C/p>\u003Cpre>\u003Ccode>&lt;center&gt;\n  &lt;font size=&quot;5&quot; color=&quot;red&quot;&gt;\n    &lt;b&gt;最新ニュース！&lt;/b&gt;\n  &lt;/font&gt;\n&lt;/center&gt;\n\u003C/code>\u003C/pre>\u003Cp>本来のHTMLの基本構想（セマンティクス＝文書構造）からすると誤用と言えますが、当時はこれが見栄えを整えるための最適な手段でした。\u003C/p>\u003Ch2 id=\"h418efe264e\">第一次ブラウザ戦争\u003C/h2>\u003Cp>時が1990年代中後半に移ると、\u003Cstrong>Netscape Navigator\u003C/strong>と\u003Cstrong>Internet Explorer (IE)\u003C/strong> が市場シェアを激しく争う時代が到来します。\u003C/p>\u003Cp>独自拡張タグの乱立と、レイアウト技術の「ハック」化が進んだ混沌の時代であると同時に、CSSという希望が生まれた時代でもあります。\u003C/p>\u003Cp>HTML\u003C/p>\u003Cpre>\u003Ccode>&lt;blink&gt;チカチカする文字&lt;/blink&gt;\n&lt;marquee&gt;右から左へ流れる文字&lt;/marquee&gt;\n\u003C/code>\u003C/pre>\u003Ch3 id=\"h3d381572eb\">独自タグの乱立\u003C/h3>\u003Cp>この頃、ブラウザベンダー各社は他社との差別化を図るため、標準仕様を無視した独自のHTMLタグを次々と実装します。\u003C/p>\u003Cp>その結果、\u003Ccode>&lt;blink&gt;\u003C/code>や\u003Ccode>&lt;marquee&gt;\u003C/code>のような、特定のブラウザでしか機能しないタグが量産され、ブラウザごとで見た目に差が出てしまう要素が多用されました。\u003C/p>\u003Cp>もはや収拾のつかない事態となったため、事態を収束させるべくW3C（World Wide Web Consortium）が1997年に\u003Cstrong>HTML3.2\u003C/strong>を勧告。\u003C/p>\u003Cblockquote>\u003Cp>\u003Cstrong>HTML 3.2 Reference Specification\u003C/strong> \u003Ca href=\"https://www.w3.org/TR/2018/SPSD-html32-20180315/\">https://www.w3.org/TR/2018/SPSD-html32-20180315/\u003C/a>\u003C/p>\u003C/blockquote>\u003Cp>これは当時のブラウザで広く実装されていた機能を「追認」する形での標準化となり、\u003C/p>\u003Cp>テーブル、アプレット、テキストの回り込みなどの機能が含まれていましたが、「構造と表現の分離」という理想からは程遠い、妥協の産物でもありました。\u003C/p>\u003Ch2 id=\"h6b54615cfa\">テーブルレイアウト全盛期とSpacer GIFの功罪\u003C/h2>\u003Cp>そんな群雄割拠な時代に、レイアウトを組み上げるノウハウも不完全に形を整えていきます。\u003C/p>\u003Cp>当時まだ\u003Ccode>float\u003C/code>や\u003Ccode>flex\u003C/code>、\u003Ccode>grid\u003C/code>といった便利なレイアウト用のスタイル手法はありませんでした。\u003Cbr>そこで、レイアウト制御をするために利用されたのが、なんと\u003Ccode>&lt;table&gt;\u003C/code>タグです。\u003C/p>\u003Cp>\u003Ccode>&lt;table&gt;\u003C/code>タグを外枠に、\u003Ccode>&lt;td&gt;\u003C/code>を一つのセル（枠）とみなして、Excelの方眼紙のようにブロックを積み上げていくことで段組みレイアウトを実現していました。\u003C/p>\u003Ch3 id=\"hc524b0de17\">痒いところに手が届く？Spacer GIFの活用\u003C/h3>\u003Cp>しかし、当時のテーブルレイアウトの手法だけでは、余白を広げるなどの細かい微調整が困難でした。\u003C/p>\u003Cp>そこで誕生したのが、\u003Cstrong>Spacer GIF（スペーサーGIF）\u003C/strong>という手法です。 \u003C/p>\u003Cp>1px × 1pxの極小の透明なGIF画像を無理やりセル内に配置し、画像の\u003Ccode>width\u003C/code>や\u003Ccode>height\u003C/code>を指定することで余白を広げるという力技です。（他に方法はなかったのでしょうかね……）\u003C/p>\u003Cp>HTML\u003C/p>\u003Cpre>\u003Ccode>&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; width=&quot;800&quot;&gt;\n  &lt;tr&gt;\n    &lt;td width=&quot;200&quot; valign=&quot;top&quot;&gt;メニュー&lt;/td&gt;\n    &lt;td&gt;&lt;img src=&quot;spacer.gif&quot; width=&quot;50&quot; height=&quot;1&quot;&gt;&lt;/td&gt;\n    &lt;td width=&quot;550&quot;&gt;本文がここに入ります。&lt;/td&gt;\n  &lt;/tr&gt;\n&lt;/table&gt;\n\u003C/code>\u003C/pre>\u003Cp>とにかくこれでセル間の余白を実装することはできましたが、見えない画像の乱立はHTMLソースの肥大化や読み込み速度の低下を招き、アクセシビリティも著しく損なう粗悪な構成となってしまいました。\u003C/p>\u003Ch2 id=\"h4995db71f3\">CSSの誕生\u003C/h2>\u003Cp>そんな混沌の中に現れた希望、それが\u003Cstrong>CSS（Cascading Style Sheets）\u003C/strong>です。 HTML3.2の勧告とほぼ同時期の1996年、W3CによってCSS1が勧告されました。\u003C/p>\u003Cp>余談ですが、下記はCSSの誕生から発展までを記したヒストリーサイトです。\u003C/p>\u003Cp>CSSの提唱者であるHåkon Wium LieとBert Bosによる回顧録的な側面もあり、なかなかに興味深い内容です。1994年の最初の提案から、ブラウザ戦争の中での標準化の苦労など、時系列でまとめられていますので、時間があれば読んでみてください。\u003C/p>\u003Cblockquote>\u003Cp>\u003Cstrong>A brief history of CSS until 2016\u003C/strong> \u003Ca href=\"https://www.w3.org/Style/CSS20/history.html\">https://www.w3.org/Style/CSS20/history.html\u003C/a>\u003C/p>\u003C/blockquote>\u003Cp>さて、本題に戻ります。\u003C/p>\u003Cp>CSSの登場により、フォント、色、背景、余白（margin/padding）の基本的な制御が可能になりました。\u003Cbr>しかし、ここでも「ブラウザの独自仕様」が壁となります。\u003C/p>\u003Cp>同じCSSを記述しても、ブラウザごとに解釈が異なり、スタイルが崩れる現象が多発しました。\u003C/p>\u003Cp>当時はこれが顕著で、\u003Ccode>padding\u003C/code>や\u003Ccode>width\u003C/code>の計算方法（ボックスモデル）すら統一されていない始末でした。結局、独自仕様を用いるブラウザの挙動に合わせるため、エンジニアは\u003Cstrong>CSSハック\u003C/strong>を強要されることになります。\u003C/p>\u003Cp>CSS\u003C/p>\u003Cpre>\u003Ccode>.content {\n  width: 400px; /* IE5.5用 */\n  voice-family: &quot;\\&quot;}\\&quot;&quot;;\n  voice-family: inherit;\n  width: 300px; /* 標準準拠ブラウザ用 */\n}\n\u003C/code>\u003C/pre>\u003Cp>混沌とした時代でしたね。\u003C/p>\u003Cp>ここから2000年代に入り、Web標準化運動が活発化する時代へと突入していくのですが、少し長くなりそうなので続きは次回の記事で解説します。\u003C/p>\u003Cp>それでは、また次回。\u003C/p>",{"url":11,"height":12,"width":13},"https://images.microcms-assets.io/assets/c29791d0949647aeb8ace8649461ea24/9cbca8755c864e189f8c17a2e7a763e2/browserwars.jpg",471,1000,{"id":15,"createdAt":16,"updatedAt":17,"publishedAt":16,"revisedAt":16,"name":18},"tech-topics","2026-01-31T05:00:43.404Z","2026-01-31T05:02:14.964Z","技術についてのひとりごと",{"fieldId":20,"description":21,"imageogp":22},"meta","1989年のWWW誕生から、HTMLの変遷、第一次ブラウザ戦争、テーブルレイアウト時代、そしてCSSの誕生まで。Web実装技術の歴史を振り返り、現代のスタンダードを再考する連載記事の前編です。",{"url":11,"height":12,"width":13},1783582447848]