1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kaigi on Rails 2025参加レポート

Posted at

Kaigi on Rails 2025に参加してきました

IMG_7198.jpeg

今回2025年9月26日(金)~27日(土)にかけて開催されたKaigi on Rails 2025に参加してきました!
私はエンジニアになってから今年で3年目なのですが、初めてカンファレンスに参加してきたのでレポートに残したいと思います!

拝聴したトークセッション

9月26日

9月27日

9月26日

Keynote: dynamic!から始まり、非常に動的なことについて言及されたセッションが多かった印象です。
特に印象に残っているのは

フロント面では'react_router_rails_spa'のgemを公開されているNaofumi Kagamiのセッション高度なUI/UXこそHotwireで作ろうWeb Componentsで実現する Hotwire とフロントエンドフレームワークの橋渡しのセッションになります。
HotwireのセッションではReactとHotwireの対比やHotwireの拡張可能性を示唆してくださり、VanilaJSで使用できるHeadlessUIのライブラリとHotwireの統合でReactに頼らなくてもReactっぽいことが簡単にできることが紹介されていたりしました。また、Stimulusを使用することでJSXを簡単に統合することができることなども知れてよかったです。
WebComponentsのセッションでは既存のJSフレームワークですでにあるデザインシステムをHotwireの環境にどのように統合するかの方法についてわかりやすく解説いただきました。
デザインシステムをWebComponents化することで再利用性を高めるアイデアがすごく良いなと感じました。

他にも以下3つが印象に残りました。


  • あなたのWebサービスはAIに自動テストしてもらえる?アクセシビリティツリーで読み解く、AIの『視点』
    ちょうど業務でPlaywrightなどを用いてE2Eテストを自然言語で実施する環境を整えようとしている最中だったので、AIがどのようにしてWebページを認識しているのかということについて非常に参考になりました。
    ポイントとしてはあクセシビリティツリーを使用しているという部分で、特殊フォントやaltの設定などによってはAIからは見えない要素が生まれてしまうということでした。普段あまりアクセシビリティについては考えて実装していなかったので今後はAIを活用する上で注意しようと思いました。

  • Railsによる人工的「設計」入門
    AIを活用しての実装などで最近設計について改めて考える機会が多かったので非常に参考になりました。
    完成状態から「逆算」して実装する詳細をコードを書かずに洗い出していくのがポイントとお話しされていて、確かにAIでのSpec駆動開発などでも同様のアプローチがなされているのかなと感じました。
    また、名前をつけることが大事とお話しされていて、最近読んだ「Clean Architecture 達人に学ぶソフトウェアの構造と設計」と合わせて考えるとコンポーネントに名前をつけることで責務を明確化して境界を引くことでその境界を超えて影響が染み出さないようにするのがいい設計にする上で大切なのかなと感じました。(ここは理解間違ってるかもですが・・・)

9月27日

2日目は非同期処理についてのセッションが多かった印象です。

特に印象に残っているのはやはり非同期処理についてです。

  • Sidekiq その前に:Webアプリケーションにおける非同期ジョブ設計原則
    非同期処理を作成する際にその非同期処理は本当に非同期処理として実装するべきなのかについてのポイントについて複数解説をして頂きました。特に大事だなと思ったのは、処理実行スレッド数と待ち時間についてを考えることと処理の冪等性と処理結果をアプリケーションに対してどのように伝えるのかです。長時間実行される非同期処理はできるだけ作らないようにすることでスレッド占有を少なくし、負荷を抑えるということと、webhookかポーリングで非同期実行の結果を取得しにいくというのが自分の頭の中になかったので大事だなと感じました。特に非同期処理で実行しつつ、JavaScriptでポーリングして結果があるかを確認するというのは今までの実装でやってなかった方法なので良さそうと思いました。(同期的に重い処理して待機しなきゃいけないというのを減らせそうな気がしました。)

  • 非同期処理実行基盤、Delayed脱出〜SolidQueue完全移行への旅路。
    SolidQueueを使用することで非同期処理を速く完了させることが可能になり、RailsWayに、乗れるようになったというお話しでした。特に印象的だったのが、SolidQueueで処理が速くなりすぎることでキューを管理するDBの負荷が大きくなりサービスが落ちてしまうという問題点で、キューイングするストレージの負荷については普段あまり意識せず使用していたのでこの点も注意する必要があると発見できたのがよかったです。

  • 非同期jobをtransaction内で呼ぶなよ!絶対に呼ぶなよ!
    transaction内でエンキューした時にtransactionが完了してDBにcommitが完了する前に非同期処理がスタートすることでDBに存在しないデータを取得しにいってしまうことでエラーが発生するというものでした。
    対策としては「非同期Jobのエンキューをトランザクションの外に記載するようにする」「after_commit_every_whereなどのgemを使用する」
    「enqueue_after_transaction_commitをRails7.2以降であれば使用する」というのがありました。
    この問題については以前同僚に教えてもらって知っていたのですが、改めてtransaction内でエンキューしないようにするのを徹底しようと思いました。

ほかにも以下2点が印象に残りました。

  • 2重リクエスト完全攻略HANDBOOK
    2重リクエストを防ぐための様々なTipsを紹介してくださっており、冪等性の担保や、悲観的ロック・楽観的ロック・ワンタイムトークンなど様々あり勉強になりました。
    TurboStreamを使用しているとレスポンスが帰ってくるまではサブミットボタンが非活性なのですが、その後にリダイレクト処理等を入れると一瞬ボタンが再活性化したりするのでこのテクニックを使って防いでいきたいと思います。

  • Building and Deploying Interactive Rails Applications with Falcon
    Pumaの代わりにFalconを使用することでRailsアプリの動作効率を飛躍的に向上させることができるということが紹介されていました。
    正直なところ、全編英語だったので1/3ほども内容を理解できていたとは思えませんが、Shopifyで実際に数百万ドルのコスト削減ができたというのにとても驚きました。
    また、gemを使用することでAgents.md等を一瞬で作成し、Rails8への導入作業がスムーズに行えるというのにも驚きました。今後はこのパターンでのgemの導入も増えるのかなと感じました。

まとめ

エンジニアになって初めて大規模なカンファレンスに参加することができて非常に学びの多い2日間になったと感じています。
最新技術のトレンドや実際に業務で遭遇した悩み事の解決の糸口を見つけられそうでよかったです。
また、企業ブースも数多く出展しており他社のエンジニアの方々がどういう環境で業務をされているのかというのが知れたことも良かったなと思います。特に今来てるAIツールは何かみたいな話とかもできたのは面白かったです・・・笑

改めて、今回Kaigi on Railsに参加することを快く送り出してくださったチームメンバーの皆さんに感謝です。:pray:
ここで得た気づきを日々の業務に活かしていきたいと思います!:raised_hands:

余談: 企業ブースでいただいたものの一部

IMG_7202.jpeg
IMG_7204.jpeg

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?