【JavaScript】Web技術の歴史【ブラウザ】
1990年代前半
Webブラウザの誕生
1990年代前半にWebブラウザが誕生するところから、Web技術は始まります。
- 1990年: 最初のWebブラウザのWorldWideWeb
- 1993年: 画像の表示に対応したNCMA Mosaic
- 1994年: 当時の世界中のもっとも主流なWebブラウザとなったNetscape Navigator
- 1995年: Windows95と同時にリリースされたInternet Explorer 1.0
1993年
CGIの誕生
それまでのWebサーバはクライアントの要求に対し、HTMLファイルを返すだけでした。
1993年にはCGI技術が誕生し、プログラムの実行結果に基づいて動的にHTMLを生成・送出できるようになりました。
これにより、掲示板やチャット、アクセスカウンターのような動的なコンテンツが作られるようになります。
1995年
JavaScriptの誕生
1995に、WebブラウザーであるNetscape Navigatorに搭載されるスクリプト言語としてJavaScriptが誕生しました。
ちなみに最初はJavaScriptではなく、LiveScriptという名前でした。
しかし同じ年に発表されたJavaが人気を博したことから、それに便乗してJavaScriptという名前に改名したそうです。
1996年
JScriptの誕生
当時、WebブラウザはNetscapeとInternet Explorerの2強でした。
これらのブラウザでは使用できる言語が異なるため、2つのブラウザで動かすためには2つの言語に対応する必要がありました。
Netscape | JavaScriptとJava applet |
Internet Explorer | JScript |
1997年- JavaScript標準化団体の結成
2つの言語に対応しなければならない状態は、健全ではありません。
そのためEcma Internationalという標準化団体が組織され、JavaScriptの標準化に向けて動き出しました。
ECMAScriptの誕生
1997年6月にECMAScriptの初版が誕生します。
その後は1998年にECMAScript 2版が、1999年にECMAScript 3版が公開されます。
1997年
PHPの誕生
Perl言語をCGIとして利用するために、PHPが開発されました。
2000年に登場したPHP4.0から、爆発的に普及します。
2000年代前半
JavaScriptの不遇の時代
ECMAScriptの第4版は言語仕様の変更推進派と保守派の対立が起こり、暗礁に乗り上げることになります。
同時にJavaScriptの脆弱性を利用したウィルスや、JavaScriptを利用した不快なサイトが増え、JavaScriptをオフにするユーザが増えてきました。
後述のFlashの普及もあり、JavaScriptの利用は減っていきました。
Adobe Flashの普及
動作が軽くアニメーションが使える「Flash」が普及しました。
Flashは実行にプラグインが必要なものの、ブラウザ依存がないため安定した動作が可能でした。
のちにガラケーがFlashに対応するのも、普及の要因になります。
MVC Frameworkの普及
HTMLの中にインラインでコードを埋め込む形式はコードの可読性や保守性が落ちるため、Model・View・Controllerに分けるMVCという形式が取られるようになりました。
2005年
AJaxの普及
GoogleがAJaxの機能を利用した「Google マップ」を発表し、注目を集めます。
これによりJavaScriptでサーバと非同期通信し、動的にコンテンツを書き換える手法が人気になります。
また「prototype.js」により、ブラウザごとの差異の吸収も容易になりました。
2006年
jQueryの誕生
その後長きにわたって使われるようになるjQueryがリリースされます。
jQueryがブラウザ差異を吸収してくれることでロジックの記述に集中できるようになりました。
これにより、JavaScriptにより動的にDOMを書き換えるWebサイトが増え始めます。
2007年
iPhoneの誕生
最初のスマートフォンであるiPhoneが誕生します。
2008年
Google Chromeの誕生
JavaScriptは実行速度の遅さがネックになっていました。
そんな中、Google Chromeが発表されます。
このGoogle ChromeはJavaScriptの実行エンジンとして、V8 エンジンを搭載していました。
このV8エンジンはJITコンパイラによりJavaScriptの実行の高速化を行いました。
また当時はInternet Explorer一強の時代でした。
しかしこの頃から、様々なブラウザがシェアを奪い合うようになります。
そのためWebブラウザが機能追加にしのぎを削るようになり、フロントエンドの進化が促進されるようにいなります。
2009年
ECMA Scriptの復活
Internet Explorerの一強が崩れることで標準化の機運が強まり、ECMA Scriptが復活します。
2009年に5版が公開され、2011年には5.1版されました。
Node.jsの誕生
Google Chromeに搭載されていたV8エンジンはオープンソースで公開されていたので、それを利用したJavaScriptの実行環境であるNode.jsが誕生しました。
Node.jsによりサーバサイドもJavaScriptで書くことができるようになりました。
2010年
HTML5の普及
この頃からブラウザがHTML5に対応しだし、HTML5が使われるようになります。
HTML5はJavaScriptから呼び出すことでストレージの利用や、位置情報の利用など様々な機能が利用できるようになりました。
またCanvas要素により自由な描画ができるようになり、JavaScriptだけでゲームやアニメーションの作成もできるようになりました。
JavaScriptパッケージ管理ツールの誕生
Node.jsの誕生でJavaScriptが広く使われ始めるのにあわせ、パッケージ管理ツールが誕生します。
2010年にnpmが、2012年にbowerが発表されます。
iOSのFlash非対応
iOSがFlash非対応を発表します。
JavaScript側が進歩してきたのもあり、本格的にフロントエンドでJavaScriptが使われ始めるようになります。
Webpackの誕生
複数のJavaScriptファイル・CSSファイルなどをまとめるWebpackが誕生します。
2013年
レスポンシブデザイン
スマートフォンのシェアが広まるにつれ、あらゆる端末でもデザインを維持できるレスポンシブデザインの必要性が増し始めます。
特にCSS3メディアクエリにより、CSSによるレスポンシブ対応がやりやすくなりました。
それ以前からレスポンシブデザイン自体はありましたが、Mashable曰く2013年がレスポンシブウェブデザインの年だそうです。
フラットデザイン
小さい画面も想定すると、グラデーションの強いデザインが使いづらくなりました。
そのため小さくても視認性の高いフラットデザインが主流になっていきます。
React.jsの誕生
jQueryによる開発だと、時間軸にあわせ要素の中身が変わっていきます。
そのためDOMの状態を把握するのが困難であり、大規模になると管理しづらいものでした。
そんな中、React.jsが誕生します。
React.jsの宣言的UIにより、状態に対して一意にUIを記述することができるようになりました。
また仮想DOMという仕組みにより、更新のあったDOMのみ再レンダリングすることでページ全体を効率的に操作できるようになりました。
そのためSPA(Single Page Application)という、コンテンツを全てJavaScriptにより生成する手法も主流になっていきました。
2014年
マテリアルデザイン
Googleがマテリアルデザインを発表します。
これが革新的だったのは、それまでセンスに任されていたデザイン領域に明確なガイドラインを作成したことです。
ここから主にAndroidでマテリアルデザインが採用され、iOSでフラットデザインが採用されるようになります。
2010年代半ば
AltCSS
CSSはグローバルに適用されるので、大規模になってくると影響範囲が増大していきます。
そのためUI構造に合わせCSSをネストさせ、影響範囲を閉じるBEMなどの記法が主流となります。
それにあわせ、CSSの記法を拡張したAltCSSが普及します。
AltJS
ブラウザが対応する言語がJavaScriptしかないため、どんなに不満があってもJavaScriptを使わざるを得ません。
しかしどんどん進化していく他のプログラミング言語と違い、JavaScriptはほぼ進化してきませんでした。
そのためCoffeScriptやTypeScriptといったAltJSが注目され始めます。
CoffeScriptはモダンな記法を取り入れより簡潔に書けるようにしたもので、TypeScriptは静的型づけを取り入れたものです。
2015年
ECMAScriptの毎年リリースが始まる
この年から、ECMAScriptの毎年リリースが始まります。
特に2015年は大きく変更され、クラスやモジュール、アロー関数など様々なモダンな言語の機能が追加されました。
様々な言語不満が解決されました。
2016年
Babelの普及
ECMAScriptは仕様策定するのみで、ブラウザ側がそれに対応するまでには時間がかかります。
そのため最新の記法で書かれたJavaScriptを古いJavaScriptの記法に変換するトランスコンパイラであるbabelが誕生します。
これにより、ブラウザ側の対応を気にせず最新の記法を使えるようになりました。
2010年代後半
SSR(サーバサイドレンダリング)
React.js、Vue.js、Angular.jsなどの普及によりSPAの機運が高まりますが、一方でSPAだと検索エンジンのクローラーがコンテンツを認識できないという問題も出てきました。
そのためサーバサイドでReact.jsなどを実行し、生成された結果を返す、SSRという技術が普及します。
React.jsのNext.jsや、Vue.jsのNuxt.jsなどのフレームワークにより実現が容易になったのも、普及の要因の1つです。
Atomic Design
Component設計の配置や粒度の分け方が人によりバラバラで、統一した指針が求められるようになります。
特にデザイナーとプログラマーでComponentに対する意識が統一されていないことから、使い回しがされない問題も起きてきます。
そんななか、Atomic DesignというComponentの設計指針が広まります。
これによりデザイナー、プログラマー間での共通言語が生まれ、Componentの再利用が促進されるようになりました。