2016年はJSエンジニアの地位が画期的に向上する1年になりそう

a0002_011015_m
2015年11月にJS系の勉強会(2016年のAltJSについて語る会)に参加させてもらって、JavaScriptの地位がこれから画期的に上がることを感じたんで、そのことについてまとめようと思います。
この記事は、関西フロントエンドUG Advent Calendar 2015の3日目の記事です。
 

今までのJavaScriptの流れ

1.文字を動かすだけだったJavaScript

はじめて私がJavaScriptにふれたのは、中学生の時だったでしょうか。
当時は、例えば

alert("こんにちは!");

って書くとか、「◯◯のホームページへようこそ」とかいう文字を縦とか横に動かして閲覧者を混乱させるとかが一般的な利用方法でした。ちょっとハイテクになると、カウンターつくって「ようこそあなたは◯◯人目のお客様です」って出すとかかな。私の中では、「何に使うかよくわからない謎技術」という立ち位置でした。

2.jQueryの登場とプラグインの流行

それを大きく変えたのは、jQueryの登場でした。
スクリーンショット 2015-12-03 11.03.28
「何に使うかよくわからない謎技術」は、様々な非同期的UI構築などで使うことができたはずなのですが記述が難しすぎて実務ベースで書ける人が圧倒的に少なかったです。それを「もっと簡単に書けるJavaScriptライブラリあった方がいいよね?」と登場したjQuery。
IDやClassをkeyにして容易にDOM操作ができるようになり、ちょうどその時あたりのWordPressの隆盛と、プラグイン化ブームによって「JavaScriptを利用したwebサイト」がどんどん誕生しました。
 
身近なところでいうと、縦長の記事だと右下に「上に戻る」ボタンがposition:fixed;で配置されてたり(当ブログにはないですが)、写真のスライダーがどんどんでてきたり、マウスオーバー時に透明度を操作したり、とjQuery登場以前は見かけなかった実装が爆発的に広がりました。

3.Classを手にいれたJavaScript

jQueryの登場後、様々なJavaScriptフレームワークも登場しました。一昔前でいうと、BackboneJS、AngularJS、Polymerなど。最近でいうと、ReactJS、Angular2とかで、多くの人が目にしたことがあると思います。要素のバインディングはもっと簡単にできた方がいいよね、ルーティングまでJavaScriptでやりたいよね、といろいろな機能が実装されました。
 
その一方で、JavaScriptはプログラミング言語としてClassがないのに、下手すると数千行にも及ぶJavaScriptコードを保守することになる。コンパイルエラーも起きないから、エラーを追うのがしんどい、という問題が顕在化しました。
それもJavaScriptが敬遠されてたひとつの理由だったのですが、AltJSといわれるJavaScriptの新たな記述メソッド(SassみたいにコンパイルしてJSファイルを生成する)が生まれたことによって、その問題も解決しようとしています。
 
まぁ、CoffeeScript、TypeScript、Babelなど、記述方式が乱立しすぎててまだ混乱期ですが、JavaScriptがClassを手にし(厳密にはClassっぽい書き方)、コンパイルするからエラー検出が容易になる世界はもう手が届くようになりました。

4.まとめ

JavaScriptは登場以降、少しずつ進歩してきており、JSフレームワーク/AltJSの登場をもって、今までweb制作の補助的に使われていたポジションから、webをほとんどJavaScriptでつくることができるポジションへと移ろうとしています。
 

シングルページアプリケーションの流行と、アプリファーストな世界

WebをほとんどJavaScriptでつくったものが、シングルページアプリケーションです。GoogleMapfeedlyなどが代表的ですね。
 
スクリーンショット 2015-12-03 11.06.20
 
最初にページを読み込んだら、それ以降はすべて非同期通信で操作が行われます。ページ遷移も、テンプレートを読み込んでDOM操作で「ページ遷移したように見せかける」(URLもJavaScriptで書き換えてる)ので、ほとんどJavaScriptで処理が行われます。
では、データの保存や読み込みどうなるかというと、firebaseを代表として、今までPHPなどで処理していた層を代替するwebサービスが出てきています。一昔前は、Webアプリを作ろうと思ったら、Apache/PHP/MySQLの知識が必要でしたが、今はJavaScriptを中心としてつくったらApacheもPHPもMySQLも捨てることができるのです。
 
文字を横に動かすしか使われなかったJavaScriptの大出世・・・。
 
この流行には、Webアプリとモバイルアプリの融合という背景もあると思っています。
facebookが2004年にハイブリッドアプリを制作した時は、iOSアプリの処理速度が遅く、ネイティブアプリに戻したら2倍の速度だったのでやっぱりモバイル開発はネイティブアプリだ!という論調がありました。しかし、ここ最近は、スマホのスペックの上昇、Javascriptエンジンの向上などによって十分にネイティブアプリと戦える処理速度になりました。
経営者目線でみると、同じ処理速度なら、Androidアプリとiphoneアプリをそれぞれ作るよりもネイティブアプリを一本作った方がコストが軽いので、ハイブリッドアプリがこれからどんどん流行していくと思われます。
 
スクリーンショット 2015-12-03 11.10.03
 
また、ハイブリッドアプリというと、html/css/jsをアプリ対応させたものなので、アプリとしてインストールさせるのではなく、webサーバ上に設置したらブラウザからもアクセスすることができます。
例えば、国産のハイブリッドアプリフレームワーク「Onsen UI」ですが、「Onsen UIをWebサイトで使ってみよう」ということも可能で、これからの時代
 
Androidアプリ = iPhoneアプリ ≒ webアプリ
 
ということで、一粒で3対応ということも可能となっていくるわけです。
もちろんながら、これはPHPでhtmlを描画するということをしているとできませんので、ハイブリッドアプリで使うことができるJavaScriptの圧倒的利点ということができます。
 

JS技術の群雄割拠時代

といっても、これを執筆してる2015年末段階では、JavaScriptフレームワークは乱立しています。
 
JavaScriptフレームワークは、1年前はAngularJSとBackboneJSが有力とかいわれていたのですが、もう今では「Angular2でるし、Angular1はちょっと今からはなぁ(互換性はないようなもの)」と言われ、BackboneJSは名前を聞かなくなった一方でfacebook謹製のReactJSが多く採用されはじめ、短いスパンで技術を習得することが求められます。私も去年AngularJS覚えたばっかりなのになぁ。
 
AltJSも群雄割拠で、去年の記事ですが、「AltJSの選び方フローチャート」とかあり、採用して学んだところで、環境が変われば覚え直しなわけで、まだJavaScriptフレームワークはライブラリ名の覚え直し程度ですが、こっちはコードの書き方まで変わるのでやってられるかー!!!!と心が折れる人もではじめてるとか、いないとか。
 
「2016年のAltJSについて語る会」でも、「2016年に流行らなくても泣かない、何言ってるのかわからなくても投げない。広い大人の心を持ってフロントエンドのカオスな世界を見守ってください。」という注意書きがされるぐらいに先が見えない世界でもあります。

JavaScriptエンジニアのこれまでと、これから

ただ、以上の流れの中で強く感じるのは、JavaScriptの新しい位置づけと、新たな「JavaScriptエンジニア」の誕生のインパクトです。
 
前述したとおり、JavaScriptはあくまで補佐的な使われ方をしていました(それこそ、JavaScriptの挙動をオフにしてる環境でもwebアプリは挙動するようにすることがマナーだったりもしました)。
しかし、それがメインで振る舞い、JavaScriptを拡張する様々なAltJSが登場したということは、今までWeb制作は、マークアップしたコードをバックエンドエンジニアが受け取るというのが主流の作業工程でしたが、バックエンドエンジニア不在で、JavaScriptエンジニアが作業を完了してしまうわけです。
 
つまり、競争が激しかったエンジニアの技術の中で、ブルーオーシャンがぽっかりと生まれている状態なのです。しかも、採用技術の本流がまだ決まらない中なので、あと1年は先駆者としての立ち位置を手にすることができる可能性が高いです。
 
そう考えると、2016年はJSエンジニアの地位が画期的に向上する1年になりそうだと思っているところです。
 
それでは、また。

お問い合わせ