Rails直球キャリアって?
かつては「Railsだけを書く人」というと語弊があるかもしれませんが、とにかくRailsが軸になっている人が結構いた気がしていて(少なくとも自分の周りには)、本稿ではそんな人のキャリアをRails直球キャリアと呼んでみます。そんなRails直球キャリアの人が最近ではすっかり少なくなってしまったように感じます。
様々な要因があると思いますが、フロントエンドとバックエンドの分業が進んでいたり、また、組織としてTypeScript/JavaScriptで一貫してサーバとクライアントを書くという戦略を採っているところも見受けられます。後者について、Blitzをはじめ様々な野心的なフレームワークが散見されますが、今のところ支配的なものはないという印象です。
Rails7に高まる期待
その現在において、まだ見ぬRails7は技術選定の際に結構有力な選択肢に挙がるのではと密かに期待しています。
昨年末の記事ですが、この記事ではRailsで仕事をしている人の切迫感がよく表れています。
Railsを主戦場としている自分が今後学ぶべき技術について(随筆)
こういった思いを抱えている人がどれほどいるのかわかりませんが、先日発表されたRails7のアルファ版をふまえて、Rails直球キャリアは全然アリなんじゃないかということを伝えたく、このアドベントカレンダーの場をお借りして書いてみます。
現在のRailsの立ち位置
自分のキャリアを振り返った時に、常に一貫しているのは自分の作りたいものを表現できれば手段は問わないということです。HTMLを手書きすることからはじめて、GUIのアプリケーションをつくるためにJavaを書いてみたり、掲示板のようなものをつくるためにPerlやPHPを学んだこともありました。
そんな中出会ったGitHubやそれを構成していたRailsとの出会いは今でも格別な思い出で、憧れでありスーパースターでした。特にCoffeeScriptは、Babel以前のフロントエンドに大きな影響を与えたはずです。
「Railsらしくない」解決
仕事として関わることも多くあったので、Railsに対する毀誉褒貶は感情抜きに受け取ることが難しいものでした。しかし、多くの方が指摘しているようにWebpackerは妥協の産物であり、私にとっても「Railsらしくない」解決だったように思います。
結果的に、RailsはAPIモードで使うことにして、フロントエンドは別立てで、となり、ではAPIにRailsを採用する意味はあるのだろうか? と議論が進んでいくのが、ジリジリとRailsの請け負う範囲が狭まっていくような感覚をおぼえ、なんとも物悲しかったことが何度もありました。仕事でも何度かWebpackerと折り合いをつけようとしたのですが、難しかったです。
Rails7アルファ版の衝撃
そんな中アナウンスされたRails7のアルファで、そういった過去にキッチリと落とし前をつけるアンサーが書かれていて衝撃を受けました。以下の記事で原文の日本語訳が読めます。(ありがたい!)
JavaScriptのバンドルとトランスパイルが不要なモダンWebアプリ
併せて動画等も公開されているので、ぜひ見てみてください。特にフロントエンドまわりの変更が興味深く、また私自身がフロントエンドを生業としているのでそちらについて少しだけご紹介します。
ざっくりRails7のフロントエンドの変更点まとめ
長くなるのでここでは詳しく解説しませんが、ざっくり言うと下記になります。
- IEの公式のサポートが終了したことでES modulesで依存を解決すればWebpackなどのバンドラが不要になった
- とはいえバージョン管理などを含め全てをESMでやるのはメンテが大変なので、importmapにのっかる形でRailsが面倒をみてくれる
- ブラウザで発生するインタラクティブな挙動にはHotwire(Turbo,Stimulus)を使って表現する
以下の記事が詳しくまとまっています。
Turbo、そしてHotwireの野望
TurboやStimulusなどの要素技術はうっすら知っていたものの、単体ではイマイチ掴みにくかったものが、Railsと合わさることで「なるほど!」と膝を打つものになっていたのです。一方で、フロントエンド寄りのエンジニアとしては、ここ数年慣れ親しんできたツールチェインから若干離れることになるため少々引っかかりがあったりする面は否めず「これでアプリケーションが書けるんだろうか…?」と少々不安になりましたが、Reactが登場した当初のJSXのように摩擦があっても定着する時はするので、どのように受け入れられるのか見守りたいです。
アプリケーションが複雑化した時のためにjsbundlingやcssbundlingそしてWebpackerも引き続き提供されるようですが、執筆時点では期待していた挙動と少々違うのもあり、個人的にはこれらを使わないといけなくなった時はフロントエンドを別に作るフェーズになってくるのかなと思います。
私はまだ試せていませんが、TurboはiOSやAndroidのネイティブアプリ向けにパッケージを提供していて、Hotwireの枠組みの中でStradaというウェブとネイティブのハイブリッドのアプリケーションを作成できるようにするという野心的なプロジェクトも進んでいるようです。
過渡期こそチャンス
プログラミングやものづくりに対して取り組むモチベーションは人それぞれだと思います。言語そのものが好きな人もいれば、たくさんの人に使われるライブラリをメンテするのが好きな人もいるでしょう。
私は冒頭にも述べたように、アプリケーションやサービスをつくることが好きです。そういうモチベーションの人にとってRailsは依然として有力なツールなのではないでしょうか。
これまでバックエンドしかやってこなかった、フロントエンドしかやってこなかったという人にとってRailsを学んでおくことは、自らの視野を拡げることにつながると思います。
また、今が過渡期であることは間違いなく、ドキュメントが少なかったり謎のエラーに苦しめられたりすることもあるかもしれません。しかし、それは裏返せば、まだ多くの人がたどり着いていない未踏の地だということです。そこで得た知識や経験はかけがえのないものだと考えているので、過渡期こそチャンスであり自らの価値向上につながるのだと私は信じています。
キャリアの話はどうしても生存バイアスがバリバリかかってしまうので、あまりすることはないのですが、本稿で少しでも興味を持っていただける方がいれば幸いです。Rails7育ちのRails直球キャリアの人と同じチームで働ける日がくることを楽しみにしています!