「JavaScript」は、1995年に登場した比較的古くからある寿命の長いプログラム言語です。
2018年現在、JavaScriptは大きな変化の時を迎えており、その変化が世界全体に浸透していく過渡期にあると考えています。その20年余りの歴史的経緯を振り返ります。
誕生
「JavaScript」は当初、「Netscape Navigator」というブラウザで動作するプログラム言語として世に出ました。ユーザーの手元のブラウザで解釈され動作します。
また「スクリプト言語」と呼ばれる手軽さをあわせ持っていました。C言語やJavaでは、プログラムを書いて動作させユーザーに使ってもらう前に「コンパイル」という変換手続きが必要です。「スクリプト言語」はこの「コンパイル」という変換をしなくとも、書いたプログラムがそのままユーザーの手元で動作します。
それまでのHTMLによるWebページは、静的で動きがあまりありませんでした。しかし、JavaScriptが出たことで、ユーザーの操作によって動作を変えたり、複雑な条件を満たすとアクションが起こるような仕掛けを埋め込むことができるようになりました。
1996年に、「Netscape Navigator」だけでなくMicrosoftの「Internet Explorer」でもJavaScriptが使えるようになり、利用が広がり始めます。
嫌われる時代とFlashの勃興
Adobe社の「Flash」が生まれ、派手なアニメーションや細かいインタラクション、「ActionScript」と呼ばれるプログラム言語を武器に、2000年頃から急成長しました。
JavaScriptはこれに押されるように存在感が薄くなります。悪用される事件も起こりセキュリティ面で評判が悪くなって、下火になる時代を過ごしました。
Ajaxの登場
2005年、「Google Maps」が登場して革命が始まります。
「Googleマップ」はいま見てもわかるとおり、マウスを地図上でドラッグすると、それに合わせてずりずりっと地図画像が動き、その先の地図が自動的に読み込まれます。よくみていると、少し遅れて細かい道路や施設の情報が読み込まれ、表示されているのがわかります。
このように、クリックやマウス移動などのユーザーの操作と直接に連動しないで、プログラムがいわば勝手に情報を呼び出しにいって表示する動作を、「Ajax」と呼ぶようになります。
「Ajax」とは、Asynchronous JavaScript + XMLの略称です。つまり、非同期でXMLデータを通信するJavaScriptプログラム、という意味です。「Googleマップ」でいえば、地図データはすべてXMLデータとしてサーバ側から送られてきます。それをブラウザ側のJavaScriptプログラムが受け取って解釈し、画面上に表示するのです。
「Ajax」が出現して、JavaScriptの機能やポテンシャルが見直されるようになり、「Flash」を使わないで「Flash」と同じレベルのアニメーションや動きを実現するサイトがだんだんと増えていきます。
Chrome登場
2008年頃、「Google Chrome」が登場します。ウリは安定性と動作の速さでした。
動作の速さを支えるのが、「V8」というJavaScriptを解釈して実行するプログラム(エンジン)です。「V8」と聞いて速そうだとイメージできるのは、日本では「F1」が流行していた時代を知っている世代だけかもしれませんが、とにかく、ChromeとV8の登場によりJavaScriptの動作が速くなって、プログラマー側はさらに利用しやすくなります。
「V8」エンジンでそんなに早く動くなら、サーバサイドで動かしてもいいんじゃない?という発想で、翌年「Node.js」が誕生しました。「V8」エンジンをブラウザ内部ではなくサーバ側で動作させ、サーバ側のプログラムを「JavaScript」で書ける世界を実現しました。
Flash排斥の時代
2010年頃、「HTML5」が登場して普及し始めます。高速に非同期で動く「JavaScript」を前提とした世界に変わっていきます。
同時期に、「iPhone」が発売されます(2008年)
「iPhone」は、従来のパソコンのサイトを小さな画面でうまーく表示するブラウザ 「Safari」を搭載していて、これがブレイクスルーのきっかけになっています。しかし、スティーブ・ジョブズは、iPhoneのSafariでFlashが動作することを許しませんでした。結果的にはこれが直接にFlashの息の根を止める形になり、Flashは衰退していきます。
2018年頃には、「Google Chrome」で、ユーザーが操作して許可しないとFlashコンテンツが動作しなくなります。
ES2015の登場
その名の通り、2015年に「ES2015」「ECMAScript2015」という規格、JavaScriptの記述ルールが公開されました。
いわゆる「正しい書き方」「望ましい記述」がまったく変わり、もはや違う言語と言ったほうがよいと思えるほどです。
よって、現在普及しているブラウザソフトが「ES2015」以降の記述ルールにすぐに従うことができず、トランスパイラ(トランスコンパイラ)と呼ばれる、記述ルール変換ソフトが開発されています。当面はトランスパイラを使って「ES2015」に従ったJavaScriptが動作することとなります。
「ES2015」の出現に合わせるように、新しいJavaScriptの世界を開くフレームワーク、ライブラリが続々と登場しています。Vue、React、Angularなどです。
「Ajax」出現以降、JavaScriptのプログラムが複雑化、巨大化し続けており、プログラムの書き方や整理法を根本的に見直さないとやってられない、という現場の声が背景にあります。
まとめ
このあとどの仕組みがデファクト・スタンダードを取るのか、あるいは、これから出現するライブラリが世界を制するのか、まだまだわからない過渡期にあると考えています。これからの展開が楽しみであるとともに、現在進行系の開発現場にとっては悩ましい日々が続きそうです。
コメント