JavaScriptの未来を見る
公開: 2022-03-11すべての市場は特定の共通の概念によって支配されており、JavaScript開発も例外ではありません。
製品ライフサイクルは、いくつかの異なる環境に適用して、それらの動作を理解および予測できる概念です。 これは、製品がその寿命の間に通過する段階を理解するのに役立つビジネスコンセプトであり、これらの段階が人気度(ほとんどの場合、売上)に与える影響を説明します。 市場の行動パターンを観察すれば、製品の現在の段階を推定できるため、その人気についていくつかの予測を行うことができます。
導入、成長、成熟、衰退の4つの段階があり、上のグラフでは、各段階で予想される製品売上への影響を確認できます。 たとえば、スマートフォンの売り上げは5年前のように伸びておらず、実際にはまったく逆のことが当てはまります。したがって、スマートフォンは成熟段階に入っていると言っても過言ではありません。
過去数年間、JavaScriptに多くの新しいテクノロジーが導入されてきましたが、市場がそれらをどのように採用するかを確認するために時間が必要でした。 採用がゼロで終わる別の有望なテクノロジーのスペシャリストになりたいと思う人は誰もいません。 しかし、今こそ、もう一度見直すときです。 この記事では、JavaScriptがどれほど人気になっているのか、そしてこの人気に影響を与えた可能性のある要因を見て、JavaScriptの将来がどのようになるかを予測しようと思います。
JavaScript言語機能の未来
European Computer Manufacturers Association(ECMA)が、標準化されたJavaScript仕様であるECMAScriptの年ベースのリリースサイクルを確立して以来、この言語に多くの新機能が導入されることはありません。毎年わずかです。 これは、TypeScriptやReasonMLなどのES5にコンパイルされる言語の採用が増加した理由のひとつである可能性があり、どちらもコミュニティからの要望が高い言語に機能をもたらします。 これは新しいことではありません。JavaScriptは以前(CoffeeScript)にこのプロセスを経ており、最終的にはこれらの機能が言語標準自体にマージされました。これはおそらく、これらの新しい型付き機能にも期待できる未来です。
しかし今、ブラウザーでのWebAssemblyの可用性の向上に伴い、ゲームチェンジャーがcompile-to-js市場で動き始めています。 今では、ほぼすべての言語を使用してコンパイルし、ブラウザーでほぼネイティブの速度で実行できます。さらに重要なことに、マルチを活用できるスレッドのサポートなど、将来を見据えた機能のサポートが見られ始めています。 -すべてのデバイスの避けられない未来を表すプロセッサアーキテクチャ。
WebAssemblyの公式ツールチェーンはC/C ++のコンパイルに役立ちますが、Rust、Python、Java、Blazor(C#)など、さまざまな言語用にコミュニティが提供するコンパイラが多数あります。
特に、Rustコミュニティは非常に活発で、YewやDodrioのような完全なフロントエンドフレームワークが見られるようになりました。
これにより、ブラウザベースのアプリに多くの新しい可能性がもたらされます。WebAssemblyで構築された優れたアプリのいくつかをテストするだけで、SketchupやMagnumなどのネイティブに近いブラウザベースのアプリが現実のものになっていることを確認できます。
ES5にコンパイルされる型付き言語の採用は十分に成熟しており、プレーヤーは十分に確立されており、近い将来に消える(またはESとマージされる)ことはありませんが、 WebAssembly。
ウェブ
フロントエンドフレームワーク
毎年、Webのフロントエンドフレームワーク市場で大きな戦いが見られます。Reactは過去数年間、議論の余地のない勝者でした。ゲームチェンジャーテクノロジーであるVirtual DOMの導入以来、ほぼ戦闘での関連性を維持するために、相手からの養子縁組を義務付けました。
数年前、Svelteを使用したWebアプリケーション開発への根本的な新しいアプローチの導入を見ました。これは、コンパイル時に消えて、小さくて非常に効率的なJavaScriptコードを残す「コンパイラフレームワーク」です。 ただし、その機能はコミュニティにSvelteに移行するよう説得するのに十分ではありませんでしたが、最近のSvelte 3.0のリリースにより、フレームワークに実際のリアクティブプログラミングが導入され、コミュニティは興奮しています。 -フレームワークを終了します。
運命のオペレーターに触発された:
var a = 10; var b <= a + 1; a = 20; Assert.AreEqual(21, b);
Svelteは、トポロジカル順序で実行されるようにコードに指示することにより、コンパイル時に反応性でラベルステートメントの使用をオーバーロードすることによってJavaScriptに反応性をもたらします。
var a = 10; $: b = a + 1; a = 20; Assert.AreEqual(21, b);
これは、さまざまなコンテキストで役立つ可能性のある根本的な新しいアイデアであるため、Svelteの作成者は、HTMLxで宣言された3Dシーングラフから直接低レベルのWebGL命令を生成するコンパイラフレームワークであるsvelte-glにも取り組んでいます。
言うまでもなく、React、Angular、Vue.jsは一夜にして消えることはなく、コミュニティは巨大であり、今後数年間は関連性があります。Svelteが実際の後継者になるかどうかはわかりませんが、何かを確信することができます:遅かれ早かれ、私たちは別の何かを使用するでしょう。
WebXRと没入型Webの未来
バーチャルリアリティは過去60年間、主流の場所を見つけるのに苦労してきましたが、テクノロジーはまだ準備ができていませんでした。 10年未満前にJonCarmackがOculusVR(現在はFacebook Technologies、LLCの一部)に参加したとき、VRの新しい波が高まり始め、それ以来、さまざまなタイプのVRをサポートする多くの新しいデバイスが見られました。もちろん、VR対応アプリケーションの急増。
ブラウザベンダーはこの機会を逃したくなかったので、WebVR仕様に参加し、WebGLとthree.jsなどの定評のあるライブラリを使用してJavaScriptで仮想世界を作成できるようにしました。 ただし、6dofデバイスを使用するユーザーの市場シェアは、大規模なWeb展開では依然として重要ではありませんでしたが、モバイルWebはデバイスオリエンテーションAPIを使用して3Dエクスペリエンスを提供できたため、多数の実験と360度のビデオが多数見られました。しばらく。
2017年、ARKitとARCoreの導入により、モバイルデバイスやARおよびMRの経験を持つあらゆる種類のアプリケーションに新しい機能が導入されました。
ただし、周囲の世界を探索しているときに、特定のARエクスペリエンス用に特定のアプリをダウンロードするのは少し不自然に感じます。 さまざまな体験を探索するためのアプリが1つしかない場合、これはおなじみのようです。 過去にブラウザでその問題を解決したので、もう一度試してみませんか?

昨年、MozillaはWebXRデバイスAPI仕様(この記事の執筆時点での最後のドラフトは2週間前のものです)を導入して、AR、VR、およびMR(ergo XR)機能をブラウザーに導入しました。
最も重要なブラウザベンダーのいくつかは、重要な例外を除いて、実装を続けました。Safarimobileであるため、Mozillaは、そのポイントを証明するために、iOSプラットフォームのWebXRビューアでWebXR対応のブラウザをリリースしました。
この例でわかるように、ARとVRの組み合わせにより、モバイルデバイスやモバイルデバイスベースのヘッドセット(GoogleCardboardやSamsungGear VRなど)に6dofがもたらされ、6dofデバイスの市場シェアが次のように増加するため、これは重要なステップです。マージンが大きく、大規模なWeb展開の可能性を可能にします。
同時に、Mozillaのスタッフは、A-Frameと呼ばれる3Dワールドとアプリケーションの作成を容易にする新しいWebフレームワークに取り組んでいます。これは、three.jsとWebGLに基づくHTML構文を備えたコンポーネントベースの宣言型フレームワークです。 1つ心に留めておくべきことは、Webプログラミングの楽しさと使いやすさを取り戻すことです。
これは、没入型Webへの彼らの十字軍の一部であり、Webが将来どのように見えるべきかについての新しい一連のアイデアです。 私たちにとって幸運なことに、彼らは一人ではありません。そして、私たちはウェブ上でますます没入型の体験を見始めるでしょう。
試してみたい場合は、WebXR Viewerをダウンロードしてこのサイトにアクセスし、没入型Webの可能性を確認してください。
繰り返しになりますが、標準のブラウザベースのアプリは1、2年で衰退することはなく、おそらく常に存在するでしょう。 しかし、3DアプリとXRエクスペリエンスは成長しており、市場はそれらを手に入れる準備ができており、熱心に取り組んでいます。
ES6のネイティブサポート
過去10年間にJavaScriptで発明されたほぼすべてのテクノロジーは、ブラウザーの基盤となる実装によって生成された問題を解決するために作成されましたが、プラットフォーム自体はここ数年でかなり成熟し、これらの問題のほとんどは、ご覧のとおり消えています。かつてパフォーマンスベンチマークを支配していたLodashを使用しました。
同じことがDOMでも起こっています。DOMの問題は、かつてWebアプリケーションフレームワークを作成するための実際のインスピレーションでした。 これは、フレームワークなしでアプリを作成するために使用できる成熟したAPIです。実際、これがWebコンポーネントです。 これらは、コンポーネントベースのアプリを作成するためのプラットフォームの「フレームワーク」です。
プラットフォームの進化のもう1つの興味深い部分は、言語自体です。 ECMAScriptの最新機能を使用できるようにするために、過去数年間Babel.jsを使用してきましたが、標準自体がここ数年で少し停滞し始めたため、ブラウザーベンダーを許可するのに十分な時間でした。静的インポートステートメントのネイティブサポートを含む、ほとんどの機能を実装します。 これで、Babel.jsや他のコンパイラを使用せずにアプリケーションを作成することを検討できるようになりました。これは、プラットフォーム自体で言語機能が(再び)サポートされており、Node.jsがGoogleChromeと同じV8VMを使用しているためです。 、experimental-modulesフラグの下に静的インポートステートメントがある場合でも、Node.jsでES6のより強力なサポートが見られるようになりました。
これは、アプリがプロレベルでコンパイルされるのをやめるという意味ではありませんが、ブラウザーベースのアプリケーションから始めるのは、かつてのように簡単で楽しいことを意味します。
サーバーサイドJavaScript
JavaScriptは1995年にNetscapeEnterpriseServerでサーバー側から開始されましたが、JavaScriptがサーバー側アプリで真剣に検討され始めたのは2009年のRyanのDahlプレゼンテーションまでではありませんでした。 過去10年間に、Node.jsには多くのことが起こりました。 それは多くの進化と成熟を遂げ、混乱と新しいテクノロジーの機会を再び生み出しました。
この場合、それは、非同期/待機として最新の言語機能をネイティブにサポートするプラットフォームであるDenoを使用して、サーバー側のセキュリティで保護されたアプリの新しい視点に取り組んでいる、独自の作成者であるRyanDahlの手によるものです。また、最も人気のあるcompile-to-js言語TypeScriptは、Rustでの実装とTokioの使用のおかげで最高のパフォーマンスを目標としていますが、さらに重要なのは、Pythonなどのほとんどのサーバー側プラットフォームとは異なる新しいセキュリティ哲学です。 Ruby、またはJava)。 ブラウザのセキュリティモデルに触発されたDenoは、ユーザーがプロセスへのアクセス許可を明示的に付与した後にのみホストのリソースを使用できるようにします。これは最初は少し面倒に聞こえるかもしれませんが、許可することで多くの影響が生じる可能性があります。プラットフォームを信頼するだけで、セキュリティで保護された環境でセキュリティで保護されていないコードを実行できます。
Node.jsは今後も存在しますが、AWSLambdaやAzureFunctionsなどのサーバーレスサービスが、システムでセキュリティで保護されていないサーバー側のコード実行を提供する代わりにDeno機能を提供するようになる可能性があります。
結論
これらはJavaScriptの世界でエキサイティングな時代です。多くのテクノロジーが成熟してイノベーションの余地を残し、活発なコミュニティがその素晴らしい素晴らしいアイデアで私たちを驚かせることを止めませんでした。確立されたツールに代わる多くの新しい選択肢が期待されます。彼らの成熟した段階がすぐに到着しているので; それらの多くは本当に優れていて、戦場にはたくさんの証拠があるので、私たちはそれらの使用をやめませんが、新しくエキサイティングな市場が出現し始めるので、あなたは準備ができているはずです。
開発のペースが速いため、JavaScriptの世界の最新情報を入手するのは簡単ではありませんが、実際に役立つ情報源がいくつかあります。 まず、私の意見では、最も重要なニュースソースはEcho JSであり、1時間ごとに信じられないほどの量の新しいコンテンツを入手できます。 ただし、時間がない場合は、JavaScriptWeeklyニュースレターがJSの週の優れた要約になります。 これに加えて、世界中の会議を監視することも重要であり、JSConf、React Conf、GoogleChromeDevelopersなどのYouTubeチャンネルは非常に役立ちます。
逆に、JavaScriptがどこに向かっているのかについて建設的な批評を見ることに興味がある場合は、JavaScript開発者のJustenRobertsonによる「JS開発者としてこれが私を夜更かしするもの」を読むことをお勧めします。
Toptal Engineeringブログでさらに読む:
- TypeScriptとJavaScript:あなたの頼りになるガイド