InfoQでは定期的にトピックグラフを更新し、各種トピックがテクノロジ採用曲線のどこにあるのか紹介している。その際には、実際の使用状況、新しいアイデア、私たちのネットワーク内およびミートアップ、カンファレンス、アナリストイベントなどで耳にしたことを考慮している。また、サイト上のトラフィックパターンや、QConやその他業界カンファレンスにおけるセッション参加状況も考慮に入れている。
トピックがグラフの右側にある場合は、おそらくそれに関するコンテンツがInfoQに多数あるだろう。私たちはそのトピックがまだ目新しかった時に取り上げている。個人やチーム、組織がこれらのアイデアと実践を採用する際には、イノベーターとアーリーアダプターが学んだ教訓が役に立つ。
曲線の左側にあるトピックは、新たに浮上してきたと思われるもので、イノベーターとアーリーアダプターによって使われている。いま調べるべきか、それともどのように広がるか見守るべきか、読者自身が判断できるように、私たちのレポートとコンテンツはこれらのアイデアに関心を向けることに重点を置いている。
今月はJavaScriptとWeb開発について見ていこう。この分野は急速に変化しているため、年に1回以上の更新が必要だ。以下は前回レビューした2018年第一四半期のグラフだ。
そして以下が、2018年第四四半期の改訂版だ。
Web開発は私たちにとって常に興味深い分野だ。ほぼ毎日と言っていいくらい、新しいJavaScriptフレームワークがローンチされている。どれにフォーカスするか、どれを無視するかを決めようとするのは、非常に難しい。たとえまだ日々の開発で使われていなくても、開発者は興味深いアプローチから学び、インスピレーションを得ることができるためだ。
イノベーター
ここ数ヶ月のトレンドを見ると、WebAssemblyへの関心が引き続き高まっている。ブラウザベンダーは最低限実行可能なバージョンの段階を超えて、パフォーマンスを改善し、ギャップを埋めようとしている。
CSS HoudiniはCSSの領域で突如活発になってきており、PostCSSといったツールがSASSやLESS、Stylusといった既存のCSSプリプロセッサに挑んでいる。CSS Houdiniは私たちが関心を持ってフォローしている分野だ。
DenoはNode.jsのオリジナルの作者による新しいプロジェクトで、TypeScriptで作られている。これはNode.jsでの課題を解決しようとするものだ。まだごく初期段階のプロジェクトだが、大きな可能性を秘めている。
Dojoは2004年までさかのぼる原初のJavaScriptツールキットだが、今年バージョン2をリリースした(その後、バージョン3、バージョン4と続く)。TypeScriptで大幅に書き直され、モダンでリアクティブで標準に準拠したバーチャルDOMベースのフレームワークに変わった。新バージョンは他と比べて大きなパフォーマンス向上と人間工学的改善がなされているが、まだ採用サイクルのごく初期段階にある。
TensorFlow.jsがJavaScriptベースの機械学習の基盤ライブラリとして登場した。このライブラリと、これを利用してJavaScriptによる機械学習を前進させるプロジェクトを今後も追跡する。
アーリーアダプター
アーリーアダプターを見てみると、JavaScriptの静的型チェッカーFlowと、JavaScriptベースのWebアプリを生成するためのJavaScript代替言語Elmが引き続きここに留まっている。
前回のレポート以降、採用が増えたため、いくつかのテクノロジをこのカテゴリに昇格させた。
- GraphQLはApollo、Vulcan.js、urqlといった定評あるライブラリとともに、引き続きフォローすべきトレンドになっている。
- ECMAScript 2018は現在最終版であり、2019エディションに向けた作業が順調に進んでいる。
- WebVRと将来それを置き換えるWebXRは、HTML、CSS、JavaScriptを用いたVR、AR、MR機能を提供する。標準がVRからXRへと広がるにつれ、今は非常に混乱した状況にあるが、ブラウザとJavaScriptの領域でかなりの関心を集めている。A-FrameやReact 360のようなライブラリがThree.jsを利用することで人気を博している。
新たに追加したものもいくつかある。
Elmと同様、ReasonもまたJavaScriptの代替で、型安全性とJavaScriptへの効率良いトランスパイルを提供する。
W3CのWeb Platform Incubator Community Group、WICGは、Intersection ObserverやResize Observerといった完成した標準から、Picture-in-PictureやWebUSBといったより実験的な技術まで、様々な有用な標準の実現に取り組んでいる。
Web Componentsはここ数年で進化し、現在、ChromeとFirefoxがネイティブにサポートしている。Safariも部分的にサポートし、Edgeでも取り組みが進んでいる。Angular、Dojo、Ionic、Stencil、Svelte、Vue.jsといった多くのフレームワークとライブラリも、Web Componentsをネイティブにサポートしている。
CSS Nextは、標準化プロセスを通じて進化しているCSS改善の集合を含んでいる。その多くはPostCSSやCSS Houdiniで現在使用可能になっている。
Ionic 4は現在ベータ版で、Angularのような特定のフレームワークから切り離すために大幅に変更され、モダンな標準との整合にフォーカスしている。
NativeScriptはAngularとVue.jsのユーザーに対し、Webテクノロジを使って書かれたモバイルアプリケーションのためにネイティブコンパイルする選択肢を提供する。
最後に、Nest.jsはTypeScriptで書かれた有望なサーバーサイドフレームワークで、Node.js上で動作する。
アーリーマジョリティ
アーリーマジョリティのカテゴリでは、Vue.jsが引き続き進化し、支持を得ている。私たちはこの時点で「アーリーマジョリティ」状態のキャズムを超えたと思う。Vue.jsは特に中国で強い関心があるようで、新たに再設計されたInfoQ(現在ベータ版)もこのフレームワークを使っている。現在、TypeScriptによる書き直しを含むVue.js 3の開発が活発に進められている。
Angularのバージョン7が最近リリースされ、改善が続けられている。
ビルドおよびバンドルツールは、プロダクションのためにアプリケーションを最適化するのに非常に有用なものだ。ほぼ全てのフレームワークが、いくつかのツールを組み合わせてパフォーマンスを最適化している。
ElectronとTypeScriptがアーリーマジョリティに昇格した。Electronは広く採用されているデスクトップアプリケーションシェルで、Node.jsとChromiumを組み合わせて、Webテクノロジを用いたアプリケーションの基盤を提供する。
TypeScriptは最も広く採用されているJavaScriptの亜種で、ここ数年で大きく進歩している。今やJavaScriptフレームワークの大部分が、そのツールとインフラストラクチャを活用している。最近のGitHub Octoverseレポートによると、TypeScript自体が言語のトップ10に入っており、State of JSではTypeScriptを最も広く使われているJavaScriptの亜種として挙げている。
このカテゴリには3つのアイテムを直接追加した。
React Nativeは、JavaScriptとReactを使ってネイティブモバイルアプリを構築するためのフレームワークであり、クロスプラットフォームのモバイルアプリ構築手段として急速に人気を高めている。
また、最も効率的なJavaScriptアプリケーション構築方法に関して、関数型およびリアクティブ型のプログラミングパターンが議論の中心となっている。lodashのようなライブラリがこうしたパターンを広めるのを助けている。
レイトマジョリティ
JavaScriptのエコシステムが成熟するにつれ、現在、レイトマジョリティのカテゴリには基盤となる技術が入っている。これらは置き換えられる気配はなく、ほぼ全てのJavaScript開発者に使われている。
いくつかのアイテムがレイトマジョリティに昇格した。
IDEとエディタは一般的に広く使われている。デスクトップでは、VS Codeが、Atom、Sublime Text、WebStorm、さらにはvimやemacsを大きく大きくリードしているようだ。CodeSandboxのようなブラウザベースのIDEは、VS Codeでの体験の多くをWebブラウザにもたらし、迅速な開発、実験、開発作業共有を実現している。
Babelのバージョン7が最近リリースされ、JavaScriptの新しいバージョンと開発者が必要に応じてサポートしなくてはならないバージョンとの間で、デフォルトのトランスパイラを提供している。
BabelはJavaScriptトランスパイラで、JavaScriptの新しいバージョンから本番環境でサポートされている言語機能にソースコードを変換する。
ReactはjQuery以来最も広く採用されたフレームワークになっており、今も進化を続けている。Reactのサポートにより、新しいプロジェクトがほぼ毎日発表されている。
Node.jsは広く採用されているJavaScriptのサーバーサイドおよびコマンドライン環境で、NPMは最もよく使われているNode.jsパッケージマネージャだ。ほぼ全てのJavaScriptプロジェクトがコマンドラインおよびビルドツールにNode.jsを利用しており、Node.jsはサーバーサイド開発および組み込みシステムでかなり採用されている。
Expressも最も広く採用されているNode.jsベースのサーバーサイドフレームワークとしてリストに挙がっている。リストにはデファクトのビルドおよびバンドルツールとしてWebpackも挙げられており、これもNode.jsがベースになっている。
HTML5とES6/2015をレイトマジョリティに追加した。今日、ほぼ全てのWebアプリケーションは、これらの機能を最低限のベースラインとして使っている。
ラガード
レポートの締めくくりはラガードだ。これはまだ多くのアプリケーションで使われているが、新規開発にはあまり関心が寄せられていないものだ。ES5とHTML4は新しいバージョンに取って代わられた。Dojo 1.xとAngular 1.xはまだ広くデプロイされているが、メンテナンスモードにある。jQueryは改善されているものの、多くの場合、新しいHTMLとJavaScript機能、あるいはより本格的なフレームワークに置き換えられている。
まとめ
JavaScriptのエコシステムは繁栄している。その変化の速度に遅れずについていくのは難しいかもしれないが、私たちはこの分野の基本部品の多くは安定しており、イノベーションのための新たな領域が生み出されていると思っている。InfoQのチームは、JavaScriptの状況について専門的な情報を提供するためにいる。フィードバック、コメント、外部からの寄稿は大歓迎だ。
著者について
Dylan Schiemann氏は、SitePenのCEOでDojoの共作者であり、JavaScript、TypeScriptおよびオープンソースコミュニティで確固たる地位を築いている。彼の指揮のもと、SitePenは、十分にテストされた高性能かつ持続可能なWebアプリケーションを作成したい企業にとって、確かな情報源となっている。Dylan氏の現在の活動には、Intern、TypeScript、Dojoでの開発を導くことが含まれる。jQuery Foundationと合併してJS Foundationになる前、Dylan氏はDojo Foundationの共同創設者だった。また、Phoenix TypeScriptミートアップグループ、London HalfStackミートアップカンファレンス、TSConfの共催者でもある。SitePenの改良やより良い開発ツールの追求に活発に取り組んでいない時は、旅に出て世界中のカンファレンスで自らの経験を共有することを楽しんでいる。