Skip to main content

技術の螺旋とAngularの昔話

昨日は久しぶりに、オンサイトでのミートアップに参加してきた。内容としては、WASMに対する理解を深める内容のもの。[^1]

内容もさることながら、少し昔の話を思い返して、当時無駄だと思ったことがどこで活きてくるのかわからない(使い古された表現だけど"Connecting the dots"というやつ)、を感じる機会だったので振り返る。



人気であることだけが重要なわけではないという前提を置いた上で、今では、フロントエンドのフレームワークの人気といえばReact、それを使わない事情があるとするならVueというのが流れなのかなと個人的には認識している。


5年前はどうだったか。

あの頃はもう少し拮抗していて、そこにはAngular(AngularJS)がいた。そして当時の自分はそこにBetしていた。


もう少しだけ昔話を。

このAngular、触り始めた頃はAngularJSという名称だった。ただ、フレームワークの進化の過程で互換性のない変更を加えたいというコミュニティの方針が出てきていて、その結果として、元々あった(v1と呼ぶこともある)をAngularJS、それ以降のバージョンをAngularと呼ぶようになった。


自分が触っていたのはv1からv6の頃までだったかと思う。

ちょうど、Angularに新しいレンダリングやビルドのシステムとしてIvy(Apache Ivyかと思ったら違ったのでびっくりした)やBazelの導入がされてまた新しい風が吹いた頃に、自分の中のフロントエンド熱は冷めた。周りではReactとVueが多数だったこともあり、「勝ち馬」に乗り損ねた、というのも遠因にはなっていると思う。そして思った、ああ、投資する技術選定に失敗したな、と。



話を戻してミートアップ。

WASMの話をする中で、聞き覚えのある内容をいくつも耳にした。


「JITではなくAOTで高速化を......」

「Tree-shakingをマニュアルでやるなんて......」


このミートアップの参加者の基本プロファイルはRustの開発者。Rustの前はC, C++, Pythonあたりを触っていた人が多いという印象。その言語の文脈では、あまり耳馴染みのない言葉のように思う。[^2]

でも、自分にはわかる。わかる。


Angularで散々見てきたからわかるんだ。AOTすることで読み込み時間を短縮したから。prodフラグをつけてビルドしてTree-shakingを有効にした結果、予期せぬ形でドロップさせられたリソースがあって苦労したから。


そしてこの時、不意に技術は螺旋、という話を思い出した。

同じようなことをやっていても、それは振り子のように戻ってくるというものではなく、コンテキストも徐々に変わって登っていく螺旋階段のようなものだという話[^3]を。


少し螺旋の話とは文脈は違う。

ただ、役に立つかもと思っていたら役に立たない方向になっていったということがあったとしても、なぜそれらが導入されたのだろう、どうしてこうしたのだろう、という点を概要や実装などを通じて吸収していくと、その考えが別のところで援用できることは5-10年のスパンではきっとあるということを体感させられた。[^4]



そういうわけで、目の前で与えられている課題は度々、色々な制約で望まない形での解決を強いられてしまうことはある。そして、その制約が受け入れがたくて取り組みにモチベーションが高まらないことはある。

そうなのだけど、これもまた過ぎ去るだろう、ということであまり腐らず、真剣に取り組むといつか次の螺旋階段を上がるときの助けになるのかもしれない。


おしまい。



[^1]: I was understanding WASM all wrong! 🤯 - Speaker Deck https://speakerdeck.com/yujiosaka/i-was-understanding-wasm-all-wrong

[^2]: ここでは、自分は過去の経験のおかげでわかってよかった、という趣旨で書いているけど、オーディエンスを踏まえるとスピーカーがWeb系開発者だとはいえ、あのあたりはもう少しだけ解説があってもよかったかもしれない

[^3]: 技術選定の審美眼。時代を超えて生き続ける技術と、破壊的な変化をもたらす技術を見極める(前編)。デブサミ2018 - Publickey https://www.publickey1.jp/blog/18/2018.html

[^4]: また文脈違いだけど、BazelもAngularで少し触っていたから、突然業務でBazelを使用することになったときに一段だけ気持ちのハードルを下げることができたように思うという経験があった。それも今回の経験と合わさって、自分の考えを強化するものになったと言えそう