Vue.js is not Easy. It is Approachable. (ja)
耳馴染み
昨今, Simple/Easy というマーケティング用語がよく使われる.
今回は他の具体的な言語やフレームワークについて言及するつもりはない.
あくまで Vue.js との向き合い方についての物語だ.
「Vue.js is Easy」
このフレーズを聞いたことがあるだろうか?
私は何度も聞いた.
そして, それと同じくらい「Vue.js にはルールがないからダメだ」という言葉もたくさん聞いてきた.
誤謬
私が Vue.js / Web を触り始めたのはおおよそ 2020 の Q4 頃で, それ以前の世界がどうであったかは知らない.
そして, どのタイミングからこのフレーズが流行り始めたのかも知らない.
しかし, 「今」の自分の感覚として, この言葉を使うのが適切なのかどうかについてはいつも疑問を感じている.
「Vue.js is Easy」は私が思うに, 今も限られたコンテキストであれば正しいだろう.
しかしそのコンテキストを理解している人たちはいったいどれくらいいるだろうか.
昨今は「ルールを持つ存在 (Web フレームワークに限らず)」の流行もあり, 彼らは彼らで「〇〇 は △△ である (Easy ではないけれど)」というマーケティングをよくやる.
そしてそれに飛来して,
「Vue.js にはルールがないからダメだ」
「目先の簡単さを求めて堅さを捨てている」
「ルールがないことは, コードをメチャクチャにする」
などの言説が生まれる.
抽象的なマーケティングは抽象的なマーケティングで打ちのめされるのだ.
トレードオフ
先ほども言ったように, 確かに「Vue.js is Easy」というのは一部のコンテキストで正しい.
Vue.js には明確なルールがないので, 何かルールを学んだりしなくても フレームワークの立場としては間違いではない という意味では正しい.
しかし実際にプロダクトを作るには, いろんなことを考える必要がある.
そしてここには トレードオフ がある.
おそらく多くの人たちはこのトレードオフを考えずに, 「ルールはあった方が良い」という意志を先行させ, プログラミングと向き合っている.
もちろん, 「ルールがあった方がいい」ということにすらトレードオフは存在するが, 今日話したいのはここではない.
ある状況下で, 「ルールがあった方が良い」という結論になったことを想像しよう.
ここで考えるべきなのは,
- なんのためのルールなのか (そのルールがあると何が嬉しいのか)
- 今(未来)のチーム(自分)にとって適切なものか (括弧書きにしているのは, コンテキストによって変わるからだ.)
- そのルールがどのようなトレードオフを生むのか
と言ったことだ.
Web アプリケーションはあまりにも多種多様だ.
バックエンドから得たデータに UI を実装し, 単純に表示するだけのものもあれば,
複雑な DOM オペレーションと組み合わせてリッチな UI を提供するものもある.
そしてこれらに必要なルールは全く異なっている.
設計とはかなりアドホックなもので, 銀の弾丸はない のだ.
責任者
ここで重要なのは「誰がそのルールの責任を持つのか」ということだ.
私は Web アプリケーションの場合, 必ずしもフレームワークがルールを持つことが良いとは思わない.
もちろん, 場合によってはフレームワークがルールを持つことが良いユースケースもあるだろう.
しかし「フレームワーク」という我々の基礎となる部分がこの責任を負うというのはやはりトレードオフを含むものだ.
フレームワークがここの責任を持った場合, ほとんどの場合ではそれに準拠することが望まれる.
例えそれが我々のプロダクトにとって重要じゃないことであってもだ.
そして同時に, それによって失われた他のトレードオフについても考えてはおくべきだ (学習コストなど).
加えて「誰がそのルールの責任を持つのか」というのと, 「ルールが必要であるかどうか」というのは全く別の話であることに注意したい.
言葉による抽象化
ここまでの話で私が話したい本質的なことは済んだ.
しかし, どうしても言い切り方の言葉遊びがしたくなるのが私達だ.
「Vue.js is Easy」に対してネガティブな誤謬が含まれやすく, 適切でないならばなんと言えばいいだろうか.
私は Vue.js の公式ドキュメントに登場する「Approachable」という言葉が大好きだ.
先程も言った通り, 「Vue.js is Easy」は「フレームワークとしての責任」の範囲であれば正しいが,「Web アプリケーションの実装 (・保守運用)」の話に拡大されると間違った判断をする可能性を含んでいる.
何かしらの課題 (需要) があるなら規約や設計を考えるというのは当たり前のことだ.
Easy という言葉は,ここをあたかも考えなくても良いものが作れるものだ,という誤謬を与えかねない.
Vue.js は Approachable なのだ.
何かを考える時,邪魔にならない.
しかし,それと引き換えに実装者は少しの責任を負う.
これはトレードオフなのだ.
これは私の単なるエッセイであり,Vue.js Team の公式見解ではありません.