Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

週刊Railsウォッチ: Rails 8.0 Beta 1リリース、Railsのメンテナンスポリシー更新ほか(20241024)

こんにちは、hachi8833です。Railsウォッチの間が空いてしまい申し訳ありませんでした🙇🙇。キャッチアップ頑張ります🙏。

週刊Railsウォッチについて

  • 各記事冒頭には🔗でパーマリンクを置いてあります: 社内やX.comでの議論などにどうぞ
  • 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
  • お気づきの点がありましたら@hachi8833までメンションをいただければ確認・対応いたします🙏

TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)

🔗 Rails

🔗 Rails 8.0 Beta 1がリリース(Rails公式ニュースより)


つっつきボイス:「9/26〜9/27に開催されたRails Worldの会期中にRails 8.0 Beta 1がリリースされました」「"No PaaS required"についてリリース記事ではあまり詳しく触れられていないけど、37signalsがやっているのと同じようにKamal 2を使ってRailsアプリをセルフホステッドな環境でもすっと動かせるよ、という意味なのかな🤔」「Kamal 2はこの後でもう少し触れる予定です」

"Rails 8 Beta 1: No PaaS Required"がリリースされました!Hello Worldアプリを動かすときも、Linuxサーバー上で本番アプリを動かすときも、デプロイ先がクラウドVMでも押入れに置いたPii(訳注: これはRaspberry Piか何かのつもりだったと想像しています)でも、必要なものはすべて提供します。
同ポストより

参考: Platform as a Service(PaaS)- Wikipedia

Rails: Kamalデプロイツールはゲームチェンジャーになるか?(翻訳)

「RailsはもともとPaaS以外のところにもデプロイできるものだと思うので、Rails 8のKamal 2やThrusterを使えば、HerokuのようなPaaSを使わなくても楽にデプロイできるよ、というのを強調したかったのかもしれませんね」「そんな気もしますね: Thrusterが何だったのか忘れかけてたんですが、nginx的に使えるHTTP/2プロキシでしたね(ウォッチ20240328)」

basecamp/thruster - GitHub

「なお、以下のwillnetさんの記事は今年1月のものですが、Rails 8のマイルストーンはこのときと大きくは変わっていないようなので参考までに貼りました↓」

参考: Rails8.0.0マイルストーンの現状 - おもしろwebサービス開発日記チラシの裏

🔗 Railsのメンテナンスポリシーがより詳細になった


つっつきボイス:「先週のRailsセキュリティ修正記事↓でも触れましたが、Rails 7.2で更新されたメンテナンスポリシー(ウォッチ20240819)が、Rails Worldの会期中にRailsのメンテナンスポリシーがまた更新されました」

Railsセキュリティ修正がリリースされました: 7.2.1.1 / 7.1.4.1 /7.0.8.5 / 6.1.7.9

「お〜、メンテナンス終了期限を"最初のバージョンリリース後何年"という表示に加えて、公式のメンテナンス情報に具体的な期日も明示するようにしたのはいいですね👍」「新機能が半年に1回リリースされるようになったそうです」「こうやってメンテナーへの問い合わせを減らす努力も大事ですね: フレームワークを採用するときはこういうメンテナンス情報が詳しく示されているかどうかも決め手のひとつになるので」


Ruby on Rails — Maintenance policyより

🔗 Kaigi on Rails 2024が今週開催

https://twitter.com/kaigionrails/status/1846883878675665401


つっつきボイス:「今年のKaigi on Rails 2024の開催が近づいてまいりました」「ボク行きます〜」「私も」「今年はスロットが2つなんですね」「そういえば今回の会場は船で有明桟橋からでもアクセスできるのを思い出しました」

参考: 有明桟橋(有明客船ターミナル) | 桟橋・乗船場所 | 貸切クルージングなら東京湾アニバーサリークルーズ

🔗 Rails World 2024の動画が公開(Rails公式ニュースより)


つっつきボイス:「遅ればせながら,Rails World 2024のまとめ記事と、DHHとMatzの対談動画です」「Aaron Patterson(@tenderlove)さんがクロージングのキーノートを務めてたんですね」「Railsルーターの"30 minites of bullshit"って何なのか気になる」「Railsのルーティングはいろいろ大変なので、そういうトピックなんでしょうね」

🔗 Rails公式のコミュニティアンケート2024の結果発表(Ruby Weeklyより)


つっつきボイス:「Rails公式が今年5月にアナウンスしていた、Planet Argon社によるRailsアンケート結果が発表されていました」「国のリストに日本が載ってないということは、日本の人はあまりアンケートに答えてなかったんだろうか、惜しい」

「CIはGitHub Actionsが1位なのね」「昔CIっぽいものを自作したこともあったな〜」「2016年まではCI使っていないところがトップだったとは!」「データベースでSQLiteが上昇している」「エディタはVS Codeが1位だけどVimの人も結構多い」「結果を見始めているうちにページがすごく長いことに気づいたので、後で見てみよう」

🔗 スライド「Rails vs Node.js - 最終章 Prisma」


つっつきボイス:「フロントエンドで有名なmizchiさんのこのスライドはいい話がいっぱいでよかった👍」「以下の動画は発表後に再度追いかけたものみたいで3時間ぐらいあるんですが、これもいろいろ参考になりました」「このスライドでmizchiさんの前歴を初めて知ったんですが、昔はRailsを結構長くやっていたんですね」

「"Railsガイドの完成度がすごい"としきりに感心していたのが個人的に嬉しかったです」「フロントエンドというかNode.js方面はRailsのような"フルスタック"という考え方ではありませんし、さまざまな開発者や組織が自分たちのベストプラクティスとして各種ライブラリの組み合わせ事例やそのチュートリアルドキュメントを公開することはあっても、Railsのような"みんなが同じライブラリスタックの組み合わせを使おう"という方向には今後もならないんじゃないかな」「そんな気がします」


mizchi-20241002-cf-meetup.pages.dev/#20より

「Node.js方面を使うとプロジェクトごとにセットアップが大きく違うことになるので、自分のようにたくさんのプロジェクトを扱っているとライブラリの細かな違いがつらくなってくるんですが、そういうつらさが解消されればRailsからNode.jsに移行してもいいという気持ちはあるかも」

🔗Rails: 先週の改修(Rails公式ニュースより)

🔗 Solid CableとSolid CacheがRails 8のデフォルトになり、Redisがdevcontainerのデフォルトでなくなった


つっつきボイス:「今週はRails 8に関連する大きめのトピックを追いかけることにしました」「Solid CacheとSolid QueueがRails 8でデフォルトになるのは知ってたけど、新しくSolid CableがAction Cable用アダプタとして入るのか(#50480)」「RedisみたいなのがなくてもAction Cableを使えるようにするんですね」「これでSolidで始まるライブラリが3兄弟になった」

Solid Cache README: DBベースのキャッシュストア(翻訳)

Solid Queue README -- DBベースのActive Jobバックエンド(翻訳)

「それに関連して、Rails 8のdevcontainerにはデフォルトでRedisをインストールしないようになったそうです」「この流れでいけば当然そうなるでしょうね」

「今後はSolid3兄弟を使えという話なんでしょうか?」「デフォルトがそれらになったおかげでRedisを用意しなくてもすぐ使えるというのがメインで、パフォーマンスやスケールが必要ならいつでも別のものに差し替えられるということだと思います」「実際、Solid Cacheみたいなものをメインと同じデータベースで使うと負荷上昇につながる可能性もあるので、無理にSolid系ライブラリを使わなくてもいいでしょうね」

「Redisサーバーを導入・運用するコストは結構大きいので、最初はRedisをセットアップしなくてもSolid Cache/Query/Cableが使えるようになってくれば、特にプロジェクトを最初に立ち上げるときに依存関係を増やさずに済むので、実際ありがたいですね👍」

🔗 RailsがKamal 2に対応


つっつきボイス:「1個のRailsモノリスアプリをファットにしすぎないために、ある程度のドメインや対象機能群ごとに複数のRailsマイクロアプリを扱う構成にして、さらにドメイン層の共通化されるモデルのソースコードやgemバージョンを共有・同期するために、複数のRailsアプリ同士のバージョン依存を維持したまま同時にデプロイしたいことがあるんですよ: Kamal 2のようなデプロイツールはそういう場合に便利なはずですし、実際必要だと思います👍」

「Kamalは当然ながらRails以外でも使えますけど、Next.jsでも評判がいいというポストを見かけました↓」「JavaScriptベースのサーバーサイドアプリには、たしかにセルフホステッドな環境への共通デプロイツールには広く使われているものがなさそうですね」「結局VercelとかCloudFlareあたりに金払って使ったりしがちですよね」「Kamal 2によって特にエンタープライズ方面で使いやすくなりそうですし、特定のホスティングサービスにも縛られにくくなるでしょうね」

「こちらの記事も見つけました↓」「ところで、インフラに詳しくないと公言してしまうレベルの人が今の時代にVPSで新規にサーバー公開するのはセキュリティ面のリスクが高いので、そもそもあまり推奨しない方がよいのかも?」「それド正論ですよね😆」

🔗 Rails 8からアセットパイプラインがPropshaftだけになる


つっつきボイス:「プルリクのタイトルはひねってますが、ついにRails 8からPropshaftが唯一のアセットパイプラインになるそうです」「rails newのオプションからSprocketsが消えるんですね」「長年お疲れさまでした👋」

Propshaft gem README(翻訳)

🔗 PostgreSQLとMySQLのfloat関連改修

カラムのショートハンドメソッドunsigned_floatunsigned_decimalを非推奨化。

MySQL 8.0.17以降は、 FLOAT型、DOUBLE型、DECIMAL型のUNSIGNED属性が非推奨化された。
今後はこれらのカラムではシンプルなCHECK制約を検討すること。

MySQL :: MySQL 8.0 Reference Manual :: 13.1.1 Numeric Data Type Syntax

Ryuta Kamizono
同Changelogより

PostgreSQLの浮動小数点でfloat4float8が区別されていなかったのを区別するようになった。

修正: #52742

Ryota Kitazawa, Takayuki Nagatomi
同Changelogより


つっつきボイス:「その他のプルリクのうち、DBの浮動小数点の改修です」「MySQLにunsigned_floatunsigned_decimalがあったとは知らなかった」

「今までのPostgreSQLはfloat8を選んでもfloat4になっていたのをfloat8も使えるようにしたんですね↓」

# activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L674
-         m.register_type "float4", Type::Float.new
-         m.alias_type "float8", "float4"
+         m.register_type "float4", Type::Float.new(limit: 24)
+         m.register_type "float8", Type::Float.new

参考: PostgreSQL 16ドキュメント: 8.1. 数値データ型

🔗Ruby

🔗 Ruby 3.4.0 preview2リリース(Ruby公式ニュースより)


つっつきボイス:「お、もうそんな季節になったんですね」「クリスマスまでもうすぐか〜」「frozen_string_literalの扱いはいろいろ議論されてきたけど、-W:deprecatedオプションを付けてRubyを実行すればfrozen_string_literalコメントなしで文字列が改変されたときに非推奨警告を出せるようにしたんですね(#20205): gem側が対応する期間も必要なのでこういう対応になったのはわかる」

🔗 Rubyのデフォルトパーサーがparse.yからPrismに切り替わった(Ruby Weeklyより)


つっつきボイス:「以前からそういう流れになっていましたけど、公式にPrismに移行するんですね: 大きな変更だけど、パーサーが読みやすくなるのはありがたい👍」「巨大なparse.yともついにお別れ👋」

Ruby: 2024年までのPrismパーサーの長い歴史を振り返る(翻訳)


今週は以上です。明日のKaigi on Railsでお会いしましょう。

バックナンバー(2024年度第3四半期)

週刊Railsウォッチ: Rails 7.2でメンテナンスポリシー更新、書籍『Ruby on Railsパフォーマンスアポクリファ』ほか(20240819)

ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp SlackやRedditなど)です。

Ruby 公式ニュース

Rails公式ニュース

Ruby Weekly


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。