フェイク・テクノロジー

2022/09/04

ひと月近くかけて、著名ライブラリのReact.jsを除去する実装を継続し、ようやく完了した。
今年の夏は、観測史上2番目の暑さであったこともあり、ジリジリとした灼熱地獄の耐久戦だった。

この手の作業は、実施したところで機能に何も違いがなく、メリットがゼロであるかのように感じやすい。
そのため「技術負債の返済」と呼ばれている。

しかし実際には機能外の要件もあらかじめ存在している。
このケースでは、Flaky testのかたちで品質不良を検出しており、React除去により収束した。

Reactは画面をレンダリングする役割を持つが、そのレンダリングが安定しない。

技術要素は時間をかけて進化していく性質があるが、中にはいつまで経っても主目的の効果が得られないものもある。
そのような技術を、僕はフェイク・テクノロジーと捉えて注意している。

Reactの場合は、注意していたものの選択ミスがあった例と言える。

Webの描画ライブラリは何も成熟していない

選択ミスによりフェイク・テクノロジーを埋め込んでしまうと、今回のようにどこかで必ずやり直しを迫られる。
その展開はつねに意識しているので、選択ミスがあった以上、行きがかりの経緯に見落としがあったということだ。

思い返すとReactを採用した当時、目ぼしいオルタナティブはangular.js程度で、要するに選択肢そのものが乏しかった。
そのため、採用理由が安直であった。

そしていま振り返れば、Reactの本質的な問題はv16.8で導入されたHooksというAPIへの移行である。
Hooksは、レンダリングのオーバーランを抑制する方法に乏しい。これは端的に設計ミスだと思う。

しかしこの観点は数ある問題の中で目立ちにくいポイントであり、現時点でも一般的に意識されていない。
Hooksへの移行により品質はデグレードするが、Reactのプロジェクトを素朴にアップグレードすることで無意識に採り入れる展開となる。

Reactのコア開発者ならこの問題には気づいていると僕は見ている。
Hooks移行から3年経過し、v17, v18とバージョンアップしたが根本的な対策はない。この先も改善はないと考えるのが自然だ。

一方で、オルタナティブにもさして進展がなく、相変わらずReactがメジャーであり続けている。
シェアと技術を総合的に考えると、今後はVue.jsがもっとも優れているように見えるが、現時点ではマイナーである。

状況を総合すると、Webブラウザ向けの描画ライブラリという分野じたいが、さして優れた技術ではないという結論に至った。
Reactは登場からすでに9年以上たっている。基礎的な描画が安定しないという状況は、他の分野であれば考えにくい。

これはJavascriptで描画するという手法じたいにそもそも無理があり、この間ブラウザプラットフォームに進展がなかったことが原因だと思う。
WebはAndroid/iOSのネイティブアプリと競合しているため、Webアプリという分野に技術投資のキャップがかかっているように見える。

そしてReactの停滞を見る限り、現状の手法すべてが吹けば飛ぶような存在であるのではないかと思う。

ユーザーコミュニティに頼れなくなってきた

著名なソフトウェアの場合、アーキテクチャに欠陥があると体系的な批判を書く人が英語圏で出てくるものだったが、近年はそれも見かけなくなった。
分野そのものが行き詰まっていて、対案を出しにくい状況なのかもしれない。

また、情報爆発ならぬノイズ爆発も背景にあると思う。
出版業界が日に日に弱くなっていることと、Web検索にノイズが増えていることの相乗効果で、物の見え方そのものが歪む傾向が強まっているように見える。

世の中の誰かが気づくことがあてにならないとすると、失敗することじたいが情報源であり、フェイク・テクノロジー識別の必要経費になったとも言える。
逆説的ながら、ムダな実装こそが長期的に見ると適切な技術選択のプロセスの一部なのかもしれない。

ひとつ分かっていることは、フェイク技術を利用する機会・期間が増えるほどやり直さねばならない範囲も広がるため、早期発見・早期除去が重要だということだ。
これまでは技術採用前の検証を重視してきたが、不適切な状態の検出と特定のような事後的な監視アプローチがより重要になったと言える。

⁋ 2022/09/04↻ 2022/09/04