2019年に注目すべきWebテクノロジー6選

以下は[Interesting Web Technologies to follow in 2019](https://medium.freecodecamp.org/trending-web-technologies-to-follow-in-2019-fc382b09198b)の日本語訳です。

# Interesting Web Technologies to follow in 2019

Web開発の世界は絶えず変化し続けており、起こっていること全てに目を配ることは困難です。
来年はどのフレームワークがまだ生き残っているでしょうか？
そして、あなたのWebアプリケーションにはどのプログラミング言語が最も適しているでしょうか？
Web開発のための興味深い技術を6個、選んで解説してみます。

この記事ではフロントエンドとバックエンドの技術を区別しています。
まずフロントエンド開発フレームワークを3点紹介し、次にバックエンド開発フレームワークを3点紹介します。

## Front-end Frameworks

### 1. React.js

[React](https://reactjs.org/)を使うと、開発者はそれぞれが独自のstateを持つ再利用可能なコンポーネントを作成できます。
あるコンポーネントを更新する必要がある場合(たとえばユーザがいいねボタンを押したなど)、Reactによって、ページ全体ではなく変更された一部分だけが更新されます。

Reactは仮想DOMを使ってこれを実現しています。
これはメモリに格納され、訪問者の目に触れる実DOMと常に同期されています。
Reactの仮想DOMは効率的に機能するため、ブラウザを問わず、常により高速にレンダリングされます。

AirbnbやNetflixなどの大企業が、ここ何年もの間Reactを使ってきました。
そして、このテクノロジーはますます多くの企業に採用されつつあります。
開発者の間でReactへの関心は非常に高く、今後数年間でさらに人気を得るテクノロジーになるでしょう。

Reactには他にReact Nativeもあります。
これはひとつのソースコードでiOSとAndroid両方のモバイルアプリを開発することを可能にするフレームワークです。
このフレームワークはReactと同じ技術的基盤を使っているため、Web開発者がWebアプリケーションと同じように容易にモバイルアプリを開発できるようになり、企業にとって非常に興味深い展開です。

### 2. Vue.js

フロントエンド開発においてReactと双璧をなすもうひとつの新参者が[Vue.js](https://vuejs.org/)です。
現在最も急成長しており、おそらく開発者コミュニティが最も熱心なJavaScriptフレームワークです。
非常に詳しいドキュメントと、非常に低い学習曲線により、Vue.jsは開発者が新しいフレームワークを試してみたいときに最適の選択肢です。

アーキテクチャとしてはReactやAngularに似ているため、他フレームワークからの移行も容易です。
その小さいサイズ(20キロバイト)、速度、柔軟性が愛されており、他フロントエンドフレームワークに比較して[パフォーマンスも良い](https://www.stefankrause.net/js-frameworks-benchmark6/webdriver-ts-results/table.html)です。

Vue.jsの市場シェアはReactやAngularに比べるとまだ小さいものです。
従って、Vue.jsの開発経験を持つ開発者を見つけるのは、ReactやAngularより難しいです。
Vue.jsがReactやAngularほどの人気を得られるかどうかは結果を待たなければなりませんが、開発者コミュニティの熱気や使用者の増加から見ると、Vue.jsは今後も熱心に開発が続けられると思われます。

### 3. jQuery

さて[jQuery](https://jquery.com/)はどうですか？
最も有名なJavaScriptライブラリだった時代に比べると、開発者はどんどんjQueryから離れつつあるように見えます。
理由のひとつは、jQueryはReactのような最新ライブラリと相性が悪いことです。
さらに最新のブラウザはjQueryのような機能を最初からサポートしているため、多くの場合jQueryなしでもどうにかなります。
これらの理由により、最近はピュアJavaScriptによる実装が増えつつあります。
たとえば[GitHub](https://github.com/)は最近、全てのjQueryをピュアJavaScriptに置き換えたことを[発表しました](https://githubengineering.com/removing-jquery-from-github-frontend/)。

新規プロジェクトにおいて、jQueryが最初の選択であるとは限りません。
しかし、それは一日30万ダウンロードされており、2017年初頭に比べて300%という伸びを記録しています。
さらに驚くべきことに、上位50万サイトの実に90%がまだjQueryを使用しています。
これらが示すことは、必ずしも新しくクールなライブラリが必要であるわけではないということです。
あるライブラリを使用するかしないかは、そのプロジェクトの性質によって異なるということです。

フロントエンドWeb開発は、驚くほど高速で進化し続けています。
全てに追従することはとても現実的ではありませんが、重要なフレームワークをチェックして理解しておくことで、新たなプロジェクトではより良い選択をすることができるようになるでしょう。

各フレームワークやライブラリは異なる哲学を持ち、それぞれ独自の強みを持っています。
しかし確実に言えることは、JavaScriptがそれらの技術の基礎であるということです。
従って、JavaScriptに関する強力な知識と経験を持つ開発チームこそが、モダンなWebサイトやWebアプリを構築するために必要なものです。

## Backend-Frameworks

### 4. Kotlin

[Kotlin](https://kotlinlang.org/)は近年人気が急増しつつあるプログラミング言語です。
これはモダンなオルタナティブJavaであり、習得がより容易です。
Androidの開発言語として正式サポートするとGoogleが発表して以来、爆発的に成長を始めました。
SlackやNetflixなど、多くの企業がKotlinを使ってAndroidアプリを開発しています。
NetflixのシニアエンジニアであるRob Fletcherは[こう述べています](https://www.quora.com/What-do-Software-Engineers-generally-think-of-the-Kotlin-programming-language)。

> Kotlinは革命的な言語ではないが、他の言語から優れた部分だけを注意深く集めたような言語だ。

[Pusherの調査](https://pusher.com/state-of-kotlin)によると、Kotlinは2011年の登場以降、最初の一年間は開発歴の長い開発者によって使われていましたが、Googleの発表以降大きく成長しているのは若い開発者、特に学生であるというのは興味深いところです。
ほとんどの開発者がAndroidアプリの開発にKotlinを使っていても驚くべきことではありませんが、さらにバックエンドやサーバサイドアプリケーションの開発にもKotlinを使用することができます。


### 5. Elixir and Phoenix

関数型言語[Elixir](https://elixir-lang.org/)で構築された[Phoenix](https://phoenixframework.org/)は、開発者コミュニティでますます話題になりつつある新しいフレームワークです。
開発者がPhoenixに多大な興味を持っている理由のひとつは、そのパフォーマンスです。
たとえばRailsでは1.5秒かかる巨大なJSONを返す処理が、Phoenixでは400ミリ秒で完了します。

テクノロジーが、それを適用したいプロジェクトに対して適応するかを確認することは大事です。
たとえばElixirとPhoenixはリアルタイムアプリケーションに適しています。
リアルタイムアプリケーションでは、多数の接続を同時に処理する必要があります。
逆に、多大な計算処理を必要とするアプリケーションには、Elixirはあまり適していません。

Elixir開発者の数は、現在はかなり限られています。
ElixirとPhoenixは比較的新しいため、このフレームワークを業務で使用している企業はそれほど多くありません。
この傾向は今後きっと変わるはずなので、それまでElixirとPhoenixには注目し続ける必要があります。


### 6. GraphQL

[GraphQL](https://graphql.org/)についてはおそらく聞いたことがあるでしょう。
Facebookが開発したオープンソースのクエリ言語で、WebAPIを構築する最も近代的な方法のひとつです。
GraphQLの人気は急激に高まっており、Twitter、Shopify、Amazonといった企業が既にこのテクノロジーを使用し始めています。

GraphQLはデータの取り出しと処理をより簡単にし、開発者が取り組んでいるいくつかの問題に対する現実的な解決策を提供します。
REST APIとGraphQLの大きな違いのひとつは、GraphQLはどのデータが欲しいのかを正確にAPIに伝える必要があることです。
これにより、一回のAPI呼び出しで必要なデータの全てを確実に取得できるようになります。

アプリケーションに複雑なモデルや関連付けが多数含まれている場合には、より有効に働きます。
GraphQLは、たとえばモバイルアプリを開発する際、必要なデータのみを取得することで、モバイルネットワークの負荷低減に役立ちます。
GraphQLは、REST APIが持つオーバーヘッドを解消し、バックエンドとフロントエンドの両方に益をもたらします。

## Conclusion

開発者は、できるかぎり最新の技術情報をキャッチアップしていくことが重要です。
機会を見つけて試すだけではなく、またリスクについても検討する必要があります。
様々なフレームワークを定期的に実験することは、利点だけでなく欠点を経験するのにも役立ちます。

開発者の仕事は主に技術的な課題を解決することです。
そのためには、実績のあるテクノロジーで仕事を行うことがとても重要です。

読んでくれてありがとう。
この情報が役立つことを祈っています。
[Twitter](https://twitter.com/jakeprins_nl)やInstagramもよろしくね。


# コメント欄

「[Fortune 500](http://www.fortune.com/500)のほとんどはAngularを使っているし、2019年にそれがなくなるわけではない。」「せやな。」
「単純なフォームだけならjQueryでいい。でも中規模以上ならReactを選んだ方がいい。」
「うちのチームはほとんどVueだけ使ってる。」
「WebAssembyと、MicrosoftのBlazorも触れる価値があると思うです」
「Web Componentsが進化して、フレームワークにとらわれないWebアプリの世界になるかも。」
「Go、Dart、Rust、Julia他、プログラミング言語についての記事も見てみたい。」
「jQuery?2019年にもなってjQuery??????」「本文読めや。」

Angularがないぞどうなってんだ、という(攻撃的な)コメントが多かった。


# 感想

よくいるよね、『未だに○○を使ってないやつは××』『未だに○○なんて使っているやつは××』

未だにjQueryは現役だし、未だに[Struts2](http://www.itmedia.co.jp/enterprise/articles/1808/23/news064.html)は現役だし、未だに[PHP5.1は](https://www.star.ne.jp/manual/homepage_php_ver.php)[現役](https://www.sixcore.ne.jp/dedicated/man/program_php_ver.php)だし、未だに[IE6は現役](https://netmarketshare.com/?options=%7B%22filter%22%3A%7B%22%24and%22%3A%5B%7B%22deviceType%22%3A%7B%22%24in%22%3A%5B%22Desktop%2Flaptop%22%5D%7D%7D%5D%7D%2C%22dateLabel%22%3A%22Custom%22%2C%22attributes%22%3A%22share%22%2C%22group%22%3A%22browser%2CbrowserVersion%22%2C%22sort%22%3A%7B%22share%22%3A-1%7D%2C%22id%22%3A%22browsersDesktop%22%2C%22dateInterval%22%3A%22Monthly%22%2C%22dateStart%22%3A%222018-12%22%2C%22dateEnd%22%3A%222018-12%22%2C%22pageLength%22%3A25%2C%22segments%22%3A%22-1000%22%7D)なのだ。
IE6の2018年12月シェア0.31%なんてほぼ0じゃないかと思うかもしれないが、新宿駅の1日の利用客のうち一万人がIE6を使ってるってことだからな。
そう考えると意外と多いな。

斜陽技術の中でもjQueryは大半のサイトで使われているし、大半のサイトは意味もなくReactやVueに移行する動機もないので、これからも当分使われ続けるでしょう。
2018年に至ってはダウンロード数が大幅増加している有様です。
いずれ消えゆくことは間違いないとはいえ、『jQueryは有害』『今すぐ消せ』などという意見を今すぐ相手にする必要はありません。

ではjQueryだけ知っていればいいか、というとそんなことは全くないわけで、新技術を吸収していくことももちろん重要です。
この記事で出てくる技術は、新技術というほど最先端というわけではありませんが、既に『最低限知っておいた方がいい』レベルにはなっていると思います。

でもWebにElixirが来るかって聞かれたら来ねーよ、って答えるしかない。
熱狂的に受け入れている分野があるのは確かだろうけど、ではWebサイト構築に誰もがElixirを使う時代が来るかって言われるとねぇ。
いくらマイクロセカンドオーダーだちょー早い！とか言ったところで、実のところ大半のWebサイトはそんなパフォーマンスを必要としていません。
それよりも誰でもわかる、どこのサーバでも使える、といった要素のほうが重要です。
検索件数は2018年末で[GraphQLの半分程度](https://trends.google.co.jp/trends/explore?q=%2Fm%2F0_lcrx4,GraphQL,%2Fm%2F0pl075p)ありますが、でも[2014年以前からずっと引っかかってる](https://trends.google.co.jp/trends/explore?date=2010-01-04%202019-02-04&q=%2Fm%2F0_lcrx4,GraphQL,%2Fm%2F0pl075p)し、これ錬金術用語のほうのElixirが大半だろ。