1706116866
2024-01-24 09:47:12
エヴァン・ユーのクリエイター、 Vue.js、ユーザー インターフェイスを構築するための進歩的な JavaScript フレームワークのバージョン 2 からバージョン 3 への移行でいくつかの厳しい教訓を学んだ、と同氏は 2023 年にトロントで開催された VueConf で参加者に語った。
「私たちが犯した最初の間違いは、それぞれに小さな重大な変更が多すぎることでした」と You 氏は記事で述べています。 11月のメッセージのビデオ 「ここでの問題の核心は、すべての変更は単独では管理可能であるように見えましたが、多くの変更が組み合わされると実際には複雑さが指数関数的に増大するということです。」
その結果として、彼は、変更を加えるときはデフォルトで機能し続けることが賢明であることを学びました。 これにより、フレームワークのメンテナーのワークフローが変更され、将来的には非推奨サイクルが使用されることになると同氏は付け加えた。
「変更したいもの、壊したいもの、削除したいものはすべて、私たちは常に最初にすべてを動作させ続けてから、それを非推奨にします」と彼は明確にしました。 「その後、フラグの下で新しい動作が導入されるオプトイン フェーズがあり、ユーザーは何も壊さずに新しい動作を明示的にオプトインできます。 そして最終的に、非推奨の動作は将来のリリースで削除されます。」
また、Vue のメンテナは、リリースごとに変更をずらして行うため、「大量の互換性を破る変更」が再び行われることはなくなると同氏は説明しました。 同氏はこの計画を、比較的長い期間にわたってメジャー バージョン間で小さな破壊的変更を分散させる Angular と Ember のアプローチと比較しました。
「Vue は、これが長期的に非常に重要になると確信する段階に達しました」と彼は言いました。 「短期的には、重大な変更についてはまったく考えていないことを保証します。 そして長期的には、V3 を安定した基盤にしたいと考えています。 そして私たちはこの種の変化を非常に真剣に受け止めます。」
エコシステムに配慮する
彼が学んだ 2 番目の教訓は、変更があった場合にエコシステム ライブラリの作成者に連絡し、リリースがレジストリに登録される前に問題が確実に解決されるようにすることです、と You 氏は言いました。
「間違いその 2 は、生態系ライブラリへの影響を過小評価していることです」と You 氏は言いました。 「ライブラリの作成者がこれほどの作業量を必要とするという状況では考えていませんでした。 [do] 既存のライブラリを V3 に適合させるためです。」
その結果、多くの内部 API やその他の内部動作が変更されたため、これらの内部動作に依存する大規模なライブラリが Vue 3 にアップグレードすることが「非常に困難になった」と同氏は述べました。 そのため、Nuxt や Beautify などの主要なエコシステム ライブラリのアップグレード時間が長くなっています。
「実際、これら 2 つは、依存関係からのアップグレードが難しいため、相互アプリケーションが古いバージョンのままになっている最も顕著な例でもあります。」と彼は言いました。 「したがって、ここで学んだ教訓は、明らかにエコシステムへの依存関係が重要であるということです。」
Evan You は、Vue 3 のリリースで学んだ教訓を共有しました。
この可能性に対抗するために、Vue はエコシステムによる自動化を採用しました。 継続的インテグレーションシステム これにより、Vue コアのすべての変更を、そのダウンストリーム エコシステムの依存関係および Vue に依存するダウンストリーム プロジェクトに対して実行できるようになります。
「現在、15 を超えるプロジェクトがシステムに統合されていますが、将来的にはさらに追加する予定です」と彼は言いました。 「リリースを作成する前に、これらすべてのダウンストリーム ライブラリに対してすべてのコミットを実行でき、リリースを行う前に問題が発生するかどうかがわかります。 リリースが実際にレジストリに登録される前に、これらのエコシステム ライブラリの作成者に連絡して、協力して問題を解決することができます。」
これに関連して、Vue は内部 API の使用を阻止し、禁止したいと考えています。なぜなら、それがライブラリのサブグループにとって困難の主な要因であることに気づいたからである、と同氏は付け加えました。
「幸いなことに、 TypeScript 最近では、これらのプロジェクトのほとんどで、型レベルとランタイム レベルの両方でそれを強制できるようになりました。」と彼は言いました。 「公式ツールやライブラリに接続できるように、いくつかの内部 API を公開する必要があります。 しかし、私たちが直接制御できないエコシステム ライブラリについては、基本的に、これらのプライベート API を型定義から移動し、これらのライブラリがそれらを使用する傾向がある場合はエラーになるようにします。」
すべてを一緒に解放する
すべてを一緒にリリースしなかったのは間違いだった、と彼は続けた。 3コアを表示 は 2020 年 9 月にリリースされましたが、エコシステムの多くの部分はまだ作業中です。 ドキュメントに問題があり、当初はコンポジション API がドキュメントに第一級の概念として紹介されていなかった、と同氏は述べました。 公式ライブラリ、移行ビルド、開発ツールのサポートは、Vue コア安定版がリリースされた時点ではすべて不足していたと彼は付け加えました。
「私たちがそのようなことをした理由は、エコシステムが次のようなインセンティブを持つことができるように、ドアから何かを引き出すことが重要であると感じたからです。 […] 物事を試し始めてください」とあなたは言いました。 「しかし、その結果、エコシステムが完成しないままリリースしたことで、多くの初期導入者に混乱が生じました。」
大きなリリースでは、何かをすぐに世に出すよりも、物事を磨き上げ、すべての準備が整っていることを確認することが重要であると同氏は認めた。
「さらに重要なのは、大規模なリリースの前に、フィードバックを収集し、ライブラリ管理者と協力してリリース前にプロジェクトをアップグレードする方法を見つけたいということです」と彼は言いました。 「これは利害関係者とエコシステムの協力においてより積極的であり、将来的に大きな変化を起こしたい場合には、これを必ず改善したいと考えています。」
Vue 3 が正しく理解した点
そうは言っても、Vue が今回のリリースで正しく得た点はいくつかあり、まず TypeScript を採用することから始めた、と彼は続けました。
「現在、型チェックはフロントエンド ソリューションにとって極めて重要です」と You 氏は言いました。 「主要な TypeScript を見てみると、 [or] 主要なフロントエンド ソリューション、現時点では TypeScript 統合 [and] TypeScript のサポートは、人々が最初に注目することになるでしょう。」
TypeScript は、特に長期プロジェクトに取り組む大規模なチーム環境において、保守性を「大幅に向上させる」ことが証明されていると同氏は述べています。 コードベースで TypeScript に移行したことで、Vue 自体の保守性も大幅に向上し、将来の反復のための優れた基盤が構築されたと彼は付け加えました。
Vue が正しかったもう 1 つの点は、構成を採用したことだと彼は言いました。 それは人々が当初疑問に思っていたことでしたが、Vue ではうまく機能したと彼は付け加えました。
「私たちはまだ初期の頃のことを覚えています。 合成API が紹介されました。 インスピレーションを得たのは、 反応フック当然ですが、これは Vue 独自の反応性システムに根ざしています。しかし、初期の頃は多くの論争がありました。 なぜ私たちがそれをやっているのか、人々はよく理解していませんでした。」と彼は言いました。
実際、オプション API を好む人は今でもいますが、オプション API には合成 API にはない制限があります。 その理由の一部は、Vue のユーザーベースが変化したためだと同氏は述べた。 初期の頃、ほとんどのユーザーは、既存のバックエンド システムへの簡単な統合に焦点を当てた小規模から中規模のユースケースに焦点を当てていました。 しかし、時間の経過とともに、Vue のメンテナは、ユーザーがより複雑で要求の厳しいユースケースや大規模な単一ページ アプリケーションを構築しているのを目にしてきました。
「Vue がまず変化するユーザー ベースに適応し、さらに変化する業界の要求にも適応するには、これらの新しい要求に伴って発生する新しい問題に対処するものを考え出す必要があります。それがスケーラビリティです。」と彼は言います。言った。 「そこで、コンポジション API は、本質的に、Vue でルーティングされているユーザーフレンドリーさを可能な限り維持しながら、この種のスケーラビリティを解放する方法を提供しようとして発明されました。」
コンポジション API を採用した人は、それが実際の利点があることに気づいたと彼は付け加えました。
「これはまた、次のような非常に強力なコミュニティの取り組みにもつながりました。 見る使用するこれは、多くの問題に対処する非常に便利なユーティリティのコレクションを提供します。 [aren’t] これは Vue コアに含めるのに非常に適していますが、コミュニティによってうまく対処されています」と彼は言いました。 「実際、VueUse はおそらく、コンポジション API から直接得られる最大の利点の 1 つであると私は信じています。」
開発者エクスペリエンスへの投資が報われる
Vue は開発者のエクスペリエンスに投資するという点でも正しい選択をしたと同氏は付け加えた。 これが実際に、Vue 専用の開発サーバー プロトタイプから生まれた人気の Web 構築ツール Vite の作成につながりました。 現在、Nuxt を含む多くのフレームワークが Vite を利用しています。
Vue は、IDE への投資が、Web 開発者全体に利益をもたらすエコシステムの拡大という形で報われていると同氏は述べました。 IDE への投資は、Vue の言語サーバーと Vue TSC を含むプロジェクトのサブセットの包括的なプロジェクトである Volar につながりました。Vue TSC は、TypeScript をラップし、Vue コンポーネントのコマンド ライン時間チェックを提供するコマンド ライン インターフェイスです。
「このツールセット全体は、当初は Vue 専用でしたが、これも Vite に似ていましたが、フレームワークが改善された IDE と TypeScript サポートを構築するのに役立つツールのコレクションのエコシステムに拡張されました。」と You 氏は言いました。 「Volar は現在、Vue をサポートするだけでなく、 アストロ そして MDX そして […] これを採用する他の潜在的なフレームワーク。」
それは Vue のエコシステムに特有のものだと彼は主張しました。 「私たちは、エコシステムから始まり、Vue エコシステムだけではなく、より大きな影響を及ぼし始める多くの優れたアイデアを目にしています。」と You 氏は言いました。
最後に、Vue 3 は、パフォーマンスの向上、サポートの種類の向上、スケーラビリティの向上、開発エクスペリエンスの向上など、Vue 3 が設定した目標を達成したと同氏は述べました。 Vue 2 のサポートが今月終了するため、Vue 3 のダウンロードは 50% 近くに達し、V3 の採用は過去 1 年間でほぼ 2 倍になりました。
編集者注: 写真のキャプション内のエヴァン・ユーのファーストネームが修正されました。
YouTube.COM/THENEWSTACK
テクノロジーの進歩は速いので、エピソードを見逃さないでください。 YouTube チャンネルに登録すると、すべてのポッドキャスト、インタビュー、デモなどをストリーミングできます。
購読する
#Vue #の作成者が #Vue #で苦労して学んだこと