皆さんこんにちは。adingoにてFluctという広告配信システムの管理画面を中心にクライアントサイドの開発を行っております、大関です。
今回は、先日、社内のエンジニア向けに開催した「2014年のJavaScriptのトレンド総まとめ」というコンセプトの勉強会の内容について紹介します。
それでは、スライドに書ききれなかった前提事項について、何点か補足と解説をします。
補足と解説
前提: なぜ「2014年」なのか
JavaScriptを用いた開発、特にWebフロントエンドとも呼称されるクライアントサイドJSのトレンドは、非常に速いサイクルでの進化を見せています。その一方、Webサービスを提供するに際して、我々は好む好まないに関わらず、デファクトスタンダードであるJavaScriptに触れる必要が存在しています。そうしたことから、JS以外の言語を専門とする(同僚の)エンジニアから、「三ヶ月も経つと新しいライブラリの話がされているので、今現在のベストプラクティスないしは全体的なトレンドを追うのが非常に難しい」という話を耳にします。
本スライド(を用いた勉強会)では、「全体的な潮流、および2014年末日現在であれば、このような方法を用いるのが十分に実用的な水準に達しているものを振り返り、トレンドを理解する」というコンセプトで、現時点でのJavaScriptのトレンドを押さえるのに必要な単語と流れを紹介する事にしました
タイトルに「2015年」と冠していないのは、年が明けて一ヶ月しか経っておらず、2015年のベストプラクティスとも呼べる物は未だに登場していないと判断した為です。
内容選定の基準に付いては以下の通りです:
- 最先端ではなく「トレンドの少し後ろ」を主軸にする
- 少なくともアーリーアダプターの間では一定の評価を得ていると判断できる物を中心に選択しています
- 過去にJSに触った事のある(JS以外がメインの)エンジニア向きの内容
- 特に、Webアプリケーションエンジニアが主な聴衆となる前提での話が多いです
- 2013年までに出てきたものを踏まえて、14年に出てきたものを拾う
- 過去の経緯(コンテクスト)を理解しなければ、全体の流れの理解にはつながらないからです
-
クライアントサイドの話を中心にする
- Node.js(io.js)では既に解決されている問題が多いため
- 変化が極端に激しいのはクライアントサイドのため
- 現時点において、サーバーサイドに関しては必ずしもJavaScriptを採用する必要性が無いため
- Isomorphicなどの文脈はありますが、業界における決定的潮流には至って居ないため、このような判断をしています
- パフォーマンスについては、以下の理由から言及していません
- 話し始めるとキリが無い
- 万能の解決策は無い
「現代のJavaScriptはビルドする物である」
CSSにおいて、Sass/LESS, Autoprefixerのようなプリプロセッサが普及しているのと同様に、JavaScriptも、Lintやminifyに限らない、デプロイ前にビルド工程を挟む前提でのツールが一般化しつつあります。CoffeeScriptを始めとした「任意の構文で記述したソースコードから、JavaScriptを最終的に生成する」AltJSの大量発生が典型的な事例ではありますが、他にもソースコードをパースし、抽象構文木(AST)を生成する事で、より複雑な変換・解析をカジュアルに行うためのツール群(esprimaが有名)も広く利用されています。
開発環境や目的によっては、これらのビルド工程を挟むツールの利用が困難なケースもありますが、制約の中でもこうしたツール群の恩恵をいかに受けていくかが鍵になるのは間違いありません。
終わりに
上記のスライドで挙げた内容について、本格的に普及が始まるのは今年以降であると予測していますが、情勢を知った上で選択するのと、知らないで選択するのとでは雲泥の差が存在します。上記のスライドおよび本記事が、まさに今、次のアプローチを検討している皆様の一助となれば幸いです。
会社のブログですので
お約束となりますが、弊社には AJITO という社内バーがあり、毎夜のようにエンジニアが現れ、酒を嗜み、軽食をつまみつつ、エンジニアリング談義を行っています( #ajitingで既にご存知の方も多いと思います)。「私も一緒にエンジニアリング談義をしたい!」という方がいらっしゃいましたら、是非とも弊社エンジニア or @tech_voyageに、お声掛けいただければと思います。
また、adingoを含むVOYAGE GROUPアドテクユニットでは、一緒に働いてくださる仲間を募集しております。VOYAGE GROUPや広告配信に興味を持たれましたら、お気軽にご連絡ください。