こんにちは! Optimal Biz開発チームの石元、石井、保苅です。 今回はオプティムから3名でKaigi on Rails 2024に参加してまいりましたので、会場の雰囲気や内容をレポートします!
Kaigi on Rails 2024について
Kaigi on Rails 2024は、Ruby on Railsを中心とした技術カンファレンスで、「初学者から上級者までが楽しめるWeb系の技術カンファレンス」というコンセプトで運営されています。Kaigi on Railsは2020年から実施されており、今回で5回目の開催となりました!
私たちのチームではRuby on Railsを活用した開発を行っており、今回のカンファレンスでは、新たな知識や技術を学び、プロジェクトに応用できるものがあれば積極的に取り入れていきたいと考えています。
会場の様子
会場は、有明セントラルタワーホール&カンファレンスでした
入り口には大きなロゴパネルがありました
多くのスポンサーのブースが設けられていました!
懇親会もとても盛り上がりました!
気になったセッション
石元
Rails開発では基本的な機能はRailsのgenerateコマンドを使いMVCに則って開発していればアプリケーションが出来上がります。 しかし、実際の開発ではどのクラスにどの責務を負わせるか悩むケースがあります。 この講演では例として「ユーザー登録時に各設定項目を1ページ1項目として登録する」UIを開発する際に複雑なコードになりがちな点が取り上げられていました。これは、Railsが標準では複数のステップからなる登録処理に対応しておらず、その実装方法が開発者に委ねられるからです。 では、開発者は何を持って良い実装か判断すれば良いでしょうか?
Railsらしい開発方針のことを度々「Rails Way」と表現します。 本公演のスピーカーであるVladimir氏はRails Wayを開発における「導きの星」と表現していました。方法論、哲学とも表現されています。 必要に迫られRailsで表現できない構造を実装する際は、既存の実装に融合させるのではなく拡張する、アプリの開発者ではなくフレームワークの開発者視点で構造を考えることがRailsらしい開発につながると提案されていました。 先の例の場合、MVCに加えてFormという抽象化レイヤーを追加し、一連の設定操作を管理する責務を負わせることで、モデルやビューではRailsらしさを維持しつつ求めていた機能を実現できました。
私もRailsに則った開発を心がけていますが、イレギュラーなパターンでは正解が見えず悩むことも多いです。そんなときRailsの思想、哲学に照らし合わせる重要さとその具体例が本公演では分かりやすく言語化されていました。実装方針に悩んだ時、皆様もぜひ一度「Rails Wayな方法は何か」を考えてみてはいかがでしょうか。
石井
私はRackを理解するためのハンズオンワークショップに参加しました。 Rackは、RubyでWebサーバーとWebアプリケーションをつなぐインターフェースで、Railsは内部的にRackを使っています。RailsはRackを意識することなく開発できるようになっているので、私自身普段の開発でRackを意識したことはありませんでした。
ワークショップでは、まずはRackのみを用いて最もシンプルなサーバーアプリケーションを実装してみて、次にRackミドルウェアとRackサーバーの実装を行うという流れでした。サーバーの実装は初めてだったので、クライアントからRails(Rack)アプリまでリクエストが来て、返すまでの解像度が上がりました。
今まで触れてこなかった部分なので純粋に興味深かったのと、不具合などがあったときの原因切り分けに役立ちそうで今回学ぶことができてよかったです。
保苅
Ruby/Railsの開発では、通常カラムの追加やデータ操作においてメモリ使用量をあまり意識せずに進めることができます。これは、Railsがデータベース操作を高度に抽象化しているため、開発者が直接メモリ管理を行う必要がないからです。しかし、大量のデータを保持するテーブルへのカラム追加や、重い計算を伴う処理では、メモリに大きな負荷がかかる場合があります。
この講演では、Migrationのadd_column
実行時にActiveRecordでどの程度メモリサイズが増加するかをイメージすることがテーマに取り上げられていました。
具体的には、ObjectSpaceを使用してメモリサイズを測定する方法が紹介されました。まず、Primary KeyとtimestampsだけのActiveRecordインスタンスのメモリサイズを調べます。次に、integer型のカラムを追加して前後のメモリ使用量を比較することで追加がメモリに与える影響を確認できるという内容でした。
また、integerカラムを追加した際に増加するRubyオブジェクトの詳細な分析も行われ、CRubyのメモリレイアウトに基づき、メモリ増加の原因となるオブジェクトとそうでないオブジェクトの違いについて解説されました。
開発の初期段階からメモリサイズを把握することで特に大規模プロジェクトにおいて重要なパフォーマンス管理がより効果的になると感じました。また、CRubyのメモリレイアウトに関する知識が増えてオブジェクトの扱いについてより深く理解できました。
おわりに
今年はオフライン参加者が過去最多の692人でした!
講演はどれも多くの学びがあり、とても楽しかったです!
OPTiMでは、Ruby on Railsを利用したアプリケーションを開発しています。ご興味のある方は、ぜひ一度ご連絡ください。