フロントエンドカンファレンス北海道2024のプロポーザルを書いた

takahashim
·

フロントエンドカンファレンス北海道2024のプロポーザルを書きました。

フロントエンドカンファレンス北海道2024の存在はTwitterでちらほら確認していたのですが、なにぶんフロントエンドは疎いのでスルーしていました。

が、よく見るとちょうど今日まで(※見たのが5/5でした)プロポーザルを受け付けてるみたいだし、せっかく道民に出戻ったこともあり北海道でやるイベントは応援したいという気持ちもあるので、今の私が話せる内容として書いてみたものです。あと、RubyKaigi 2024の発表の選考をして、プロポーザルの書き方について思うところがあったことも若干影響しています。

とはいえフロントエンドカンファレンス北海道2024のプロポーザルの文字数制限はわりときつくて(これはひょっとしてforteeの仕様なんでしょうか?)、いろいろ書こうとしたことが書けなかったこともあり、その補足の意味も込めてこのエントリを書いています。もっとも、選考自体はもうだいたい終わってるかもしれませんが、まあそれはそれとして。

HotwireとDeno (Fresh + Deploy) のこと

私自身は現在の開発仕事だとRailsのバックエンド開発で手を動かすのがメインなので、フロントエンドの話をするならHotwireの話をするのが筋かと思うのですが、Hotwireはクセが強くてフロントエンド開発をもりもりやりたい人に向いているものでもないので(あと個人的にStimulusはあんまり好きではないので)、フロントエンドのイベントでそれだけの話をしてもなーというのがあります。そんなにHotwire使い込んでるわけでもないですし。

しかし少し前にDeno Fresh + Deno KV + Deno Deployを使う機会があって、これが大変良かったのです。もっとも、Deno KVは良くも悪くも特徴的なのでこれとRailsとを比べてどうこうというものでもないですが、このスタックを使いこなせるといろいろうれしそうだし、Islands Architectureは普通のフロントエンド開発者にも素直に受け入れてもらえそうです。

そして、Deno Freshについて調べていた時に、「You Don't Need a Build Step」という公式ブログのエントリを見つけました。

これってまさに、Railsを作ってるDHHが最近強調している #nobuild の話に通じるものですよね。もちろん厳密に言うとビルドとはなんぞや、just-in-time buildingはビルドに入るのか入らないのか、みたいな話もありそうですが、まあ方向性としては随所に近しいものを感じました。

そもそもNodeにせよDenoにせよ、どちらにしても1990年代から2000年代に渡って注目を集めてきたDynamic Language、あるいはLightweight Languageと呼ばれる言語・処理系の流れを汲むものです。端的に言うとコンパイルをわざわざしなくていい、同等のことを処理系が勝手にやってくれる、という言語(処理系)です。なのに、ビルドを頑張らないといけないのはいかがなものか、という気持ちもあります。もちろんブラウザという制約が大変厳しいのは、ES4とかE4Xとかをリアルタイムで見ていた世代なので承知していて、TypeScriptの成功もすごいなと思うんですが、それでもトランスパイルしないといけないのには引っかかるものがあったわけです。なので、それをjust-in-timeで乗り越えようとするDenoは素晴らしいと思うし、それを実現させてみせてるDeno FreshとDeno Deployは感動をおぼえるわけです。

技術の方向性と螺旋の行方

技術の振り子と螺旋の話があります。t-wadaさんがよく話しているやつですね。

この「振り子」の一つに、以下のような対立軸があります。

  • 大量のリソースを投入して最高の性能を求める

  • 最小限のリソースを投入して必要十分な性能を求める

もちろんこの2つは完全に分かれるわけではなくて、たとえば一つのプロジェクトの中でも両方混ざることもあるはずです。また、現実的なところでは両方を追い求めるものも難しいのでその中間あたりに落ち着くことも多々ありそうです。でも、方向性としてはまさに振り子が振れるその両端のように、どちらも重要な価値観として君臨し、様々な技術がその間をぐるぐると螺旋を描いているわけです。

で、私が好きなのは圧倒的に後者なのですが(なのでずっとRubyと関わったりしているわけですが)、フロントエンドの技術的な傾向としては比較的前者が優勢のような気がしています。これはフロントエンドではUIが大きく関わる上、UIの使い心地を向上させるにはどうしても大量のリソースで複雑さをねじ伏せるようなことが必要なのかなと思っています。よく分からないですが(その辺にはあまり愛がないというのもあります)。

とはいえ現実にはそんなにリソースが潤沢ではないことも少なくないわけで、後者の方向性も大事なはずで、そういう技術も盛んになってほしいと思います。その意味でも、Deno FreshのNon-building(あるいはJust-in-time building/transpiling)というポリシーは非常に興味深いと思うわけです。

……とまあ、そんな背景の話を、例えばビルドパイプラインのメンテに疲れてるみたいな人を想定しつつ話してみたいなあと思いながらプロポーザルを書いたのでした。(それにしてもどう考えてもLT枠の5分でできる話ではないですよね……かといって20分話せるほどのしっかりした内容があるわけではないのですが)