垂直ツールチェーン
現代のツールにおける最も強力な本能の 1 つは、専門化です。
コンパイルには 1 つのパッケージを使用します。 もう一つは糸くず用です。 もう一つはフォーマット用です。 もう 1 つは型チェック用です。 もう 1 つはコンポーネントのドキュメント用です。 もう 1 つはエディターのサポート用です。
その本能は理解できます。小さなツールは、公開、交換、説明が簡単です。
しかし、ツールについては別の考え方もあります。
ユーティリティのゆるやかな山としてではなく、ツールチェーンとして。
そして、ツールチェーンで考え始めると、垂直統合は行き過ぎには見えなくなり、明確さのように見え始めます。
垂直統合とは
この文脈において、垂直統合とは、同じ開発者ワークフローの複数の接続されたレイヤーを所有することを意味します。
解析中
意味解析
編集
糸くず
フォーマット
型チェック
言語ツール
ランタイムまたはバンドラーの統合
それは、ツールが単に共存するだけではないことを意味します。これらは、共有コアを通じて同じプログラムを理解するように設計されています。
それは人々が思っている以上に重要なことです。
最初の利点: プログラムについての 1 つの理解
断片化されたツールスタックの最大の問題はパフォーマンスだけではありません。 それは意見の相違です。
多くの場合、各ツールには独自のものがあります。
パーサー
AST
構成モデル
スコープの概念
フレームワークのセマンティクスの近似
これにより、すべてのツールが「同じファイル」について話しながら、実際には異なるバージョンのファイルを理解するという奇妙な状況が生じます。
ここで垂直統合が強力になります。
コンパイル、lint、フォーマット、型チェックがすべて同じコード構造モデルから行われる場合、次の結果が得られます。
矛盾が少なくなる
エッジケースの不一致が少なくなる
重複した作業が減ります
より予測可能な診断
システムは一貫性のあるものになります。
そして、一貫性は、開発者ツールにおいて最もまれな品質の 1 つです。
2 番目の利点: 繰り返しの作業ではなく、作業を共有できる
断片化されたツールチェーンは、同じファイルを複数回再解析することがよくあります。
コンパイルに 1 回
糸くずに一度
フォーマットするのに 1 回
型チェックのために 1 回
もう一度エディター内で
これは文字通りの意味で無駄です。
同じ構文が繰り返しデコードされます。 同じ関係が繰り返し再発見されます。 同じフレームワークのセマンティクスが繰り返し再構築されます。
垂直統合されたツールチェーンは、レイヤー間で作業を再利用できます。
1 つのパーサーが多くのツールにフィードします
1 つの AST が多くの出力をサポート
1 つのセマンティック パスで多くの診断が可能になります
1 つのファイル モデルで CLI とエディタの両方のワークフローをサポート
それはただ速いだけではありません。 建築的にはよりクリーンです。
3 番目の利点: フィードバック ループの改善
ツールは最終的な出力だけを意味するものではありません。それはフィードバックについてです。
スタックが垂直統合されると、各層はより自然に他の層に情報を伝えることができます。
コンパイラの知識は言語ツールを向上させることができます
セマンティック分析によりリンティングを改善できる
型情報によりテンプレートの診断を鮮明にすることができます
フォーマッタの決定はフレームワーク構造をよりインテリジェントに尊重できるようになります
エディタツールは CLI と同じ真実を反映できます
ここで、ツールチェーンはコマンドの集まりではなくなり、単一の機器のように感じられるようになります。
スタックにそのような性質があると感じることができます。 診断が並びます。 エディターと CLI は同意します。 修正には意味があります。 パフォーマンスはアーキテクチャと争っているわけではありません。
4 番目の利点: 認知的オーバーヘッドの低減
個別のツールの広い表面積は、通常、個別のメンタル モデルの広い表面積を意味します。
覚えておく必要があります:
どの設定ファイルが何を制御するか
どのツールがどの警告を所有しているか
どのパーサーがどのトランスフォーマーと一致しないのか
どのプラグインにパッチを適用するか、どのフレームワークに問題があるか
これは、最新のフロントエンド ツールの隠れた税金の 1 つです。
垂直統合によりその負担が軽減されます。
複雑さがなくなるからではなく、その複雑さをユーザーに押し付けるのではなく、システム内に多く保持するからです。
それは過小評価されている開発者のエクスペリエンスです。
最高のツールチェーンは、単にパワーを公開するだけではありません。 これらは、使用する人に代わって付随的な複雑さを吸収します。
5 番目の利点: AI ツールの基盤が強化される
これはAI時代にも直結します。
AI システムは、基礎となるツールがコードの一貫した決定論的な理解を公開する場合に、さらに役立ちます。ツールチェーンの各層が同じファイルの異なる方言を話す場合、AI はその断片化を継承します。
しかし、スタックが垂直統合されている場合、AI は共有基盤の上で動作できます。
構造の 1 つのソース
意味論的真実の 1 つの情報源
1 つの診断情報源
修正機会の 1 つのソース
これは自動化を改善するだけではありません。 信頼性が向上します。
それでは、美しさはどこに含まれるのでしょうか?
これは主観として片付けられがちな部分ですが、私は重要だと思っています。
優れたツールチェーンは役立つだけではありません。それは美しいかもしれません。
ブランディングやスクリーンショットという意味での「美しい」という意味ではありません。 デザインという意味で美しいという意味です。
少数の強力なアイデア
パーツ間の明確な関係
不必要な重複はありません
偶然の矛盾がない
システムが適切に組み合わされているという感覚
ツールチェーンには、フォーマッタ、リンター、コンパイラ、エディタのツールがすべて同じオブジェクトの異なるビューのように感じられる、ある種の美しさがあります。
その美しさは装飾的なものではありません。 それは、アーキテクチャが誠実であることを示しています。
水平方向の構図は依然として価値がある
これは、垂直統合が常に正しい答えであることを意味するものではありません。
コンポーザブル ツールは強力です。 フレームワークに依存しないインフラストラクチャは貴重です。 Vite+ や Oxc のような一般的なエコシステムは非常に重要です。
多くの場合、正しい措置は「すべてを交換する」ことではありません。 それは次のとおりです。
強力な汎用基礎を水平に使用します。
真の一貫性を生み出すフレームワーク固有の垂直統合を構築します
それは私が Vize について考えていることに非常に近いです。
Vize は、自社の統合ストーリーを正当化するために、より広範なエコシステムを拒否する必要はありません。汎用ツールと連携できる一方で、Vue 固有の作業では、より統合されたスタックを使用することには大きな利点があります。
これが Vue にとって重要な理由
Vue は、.vue ファイルが既にマルチレイヤー アーティファクトであるため、ツールチェーンの考え方に特に適しています。
これには以下が含まれます:
テンプレートの構文
スクリプトロジック
スタイルブロック
SFC規約
それらの層にまたがるフレームワーク固有のセマンティクス
それぞれの懸念事項が、緩やかに接続された別のツールに引き渡されると、その構造は断片化を招きます。
垂直統合された Vue ツールチェーンには、より良いことを行う可能性があります。
SFCを単体として理解する
レイヤーを意図的に調整する
コンパイラ、リンター、フォーマッタ、型チェッカーの調整を維持する
それはパフォーマンスの最適化だけではありません。 それは概念的な改善です。
私がそれを美しいと思う理由
私が垂直統合に惹かれるのは、人間関係が尊重されることです。
パーサーはコンパイラーと無関係ではありません。 コンパイラは診断と無関係ではありません。 診断はエディターのツールと無関係ではありません。 エディター ツールは AI ツールと無関係ではありません。
これらのことは、私たちが認めるか否かに関係なくつながっています。
断片化されたエコシステムでは、これらの関係がアダプター、プラグイン、ラッパー、重複したインフラストラクチャの背後に隠蔽されることがよくあります。 強力なツールチェーンは、関係を直接モデル化しようとします。
その真っ直ぐさが私には美しいと思います。
それは構造が隠されていない建築のようなものです。 各部分が存在する理由と、他の部分がどのようにサポートされているかがわかります。
これも Vize の魅力の一部です
これが、Vize がプロジェクトとして私にとって魅力的な理由の 1 つです。
すべてのレイヤーがすでに完了しているからではありません。 垂直統合が簡単だからではありません。 それは、デフォルトで 1 つのプロジェクトがすべてを所有する必要があるからではありません。
しかし、次のような考えには強力なものがあるからです。
1 つのパーサー
AST 1 つ
Vue ファイルについての 1 つの理解
同じセンターから構築された複数のツール
この種のツールチェーンはより高速になる可能性があります。 ユーザーにとってはより簡単になる可能性があります。 推論するのは簡単かもしれません。
そしてそれがうまくできれば、それは美しくもなります。
偶然に美しくなったわけではありません。 デザインが内部的に完全性を持っているため、美しいです。