はじめに
みなさん、こんにちは。 はたらく未来図構想統括部 JobQ部でエンジニアをしている川村、飯嶋と、プロダクト改善を担当している安蒜です。 私たちはいま、キャリアや転職に特化した相談サービス「JobQ Town」の開発を担当しています。 キャリアに関する不安や悩みの解消と支援を目的としたサービスで、Ruby on Railsのフレームワークを使用しています。
2024年10月25日、26日に開催されたKaigi on Rails 2024に参加してきました。 今回はJobQ部を代表し、エンジニアとディレクションメンバー計5名が参加となりました。 本記事では、当日のイベントの様子やセッションで得られた学びを共有していきます。
5月に参加したRuby Kagiの記事はこちらです。
Kaigi on Railsとは
Ruby on Rails(以下、Rails)はプログラミング言語Rubyをベースにした webアプリケーションフレームワークです。 「Kaigi on Rails」は「初学者から上級者までが楽しめるWeb系の技術カンファレンス」というコンセプトのもと、2020年に始動し、今年で5回目の開催となっています。 今年は東京にある「有明セントラルタワーホール」で行われ、700人の参加者がオフラインで集まりました。 2本の基調講演、36本の一般セッションでは、幅広い知識やノウハウが共有され、業務に直結する実践的な学びが得られる内容が多かったです。 発表は後日アーカイブ配信される予定です。興味のある方はぜひご覧ください。 また、会場には昨年同様、各スポンサーのブースも設置され、賑わいを見せていました。
印象に残ったセッションと全体を通しての感想
聴講したセッションの中で印象に残ったものをいくつか紹介していきます。
川村(エンジニア/2回目の参加)
印象に残ったセッション:Identifying User Identity
ユーザー管理の設計に新たな視点を提供してくれるものでした。 一口に「ユーザー」といっても、サービスの事業領域ごとに異なるユーザーが存在するという最初の掴みにはハッとさせられました。 「ユーザーが存在すること」を正確に表現することが大切であり、そのためにUsersテーブルには主キーIDのみを保存し、詳細情報は別テーブルで管理するアプローチが推奨されていました。これにより、テーブルの責務が明確化され、セキュリティや拡張性が向上します。また、ユーザー検索しやすくデータの整合性も保ちやすくなります。RailsのActive Recordがこうした複雑な関連をシンプルに処理できる点にも改めて感動しました。
moroさんが昨年発表された「Simplicity on Rails」は何度もアーカイブを拝見し、チームでも共有させていただきましたが、今年の発表も非常に参考になりました。弊社も人材系のサービスでありUsersテーブルが肥大化してきている状態にあるため、今回得た知見を活かしてシンプルで堅牢に進化させていきたいと感じました。
全体を通しての感想
実践的で役立つ内容が多く、すぐに取り入れられるアイデアが満載でした。 セッションでの学びに加え、他のエンジニアとの意見交換ができたことで仕事や学習へのモチベーションも高まり、定期的にカンファレンスに参加する意義を改めて感じました。 2度目の参加となる今回は、開発チームの視点からも多くの気づきを得られたことも収穫でした。
飯嶋(エンジニア/初参加)
印象に残ったセッション1:入門『状態』
このセッションではしんくう (@shinkuFencer)さんが 「状態」とは一体何か?といった説明から、 「状態」がどうなるとつらくなってくるのか、そのつらさをどう抑えればよいのかを具体例を交えてお話ししてくださいました。 つらさの正体は「状態」の変化の回数の多さと、変化の幅の大きさでした。 変化の回数が多いと最終的な状態を追うのが困難になり、「状態」の変化の幅が大きいと考慮点が増えてしまうためです。 再代入をさせないこと、値を変更できるルートと幅を限定すること、「状態」をよりシンプルに保つことがつらさを抑制する方法であるとして、実際のコード改善の例とともに紹介してくださいました。 後述する基調講演でも触れられていたことからも、「シンプル」というのが開発をする中で非常に大切なポイントであることが改めて伺えます。 今自分が書いているコードにおいて「状態」がつらくなっていないか?自問自答することを心がけていこうと思います。
印象に残ったセッション2:WHOLENESS, REPAIRING, AND TO HAVE FUN: 全体性、修復、そして楽しむこと
こちらはKaigi on Rails 2024を締めくくる島田浩二 (@snoozer05)さんによる基調講演です。 Railsによるアプリケーション開発をする上で大事だと考えていることをお話ししてくださいました。
大事なこと1. 全体が機能するように設計する
- アプリケーションは「システムである」という視点を意識すること
- 概念の図は非常に簡素化されているが実際はもっと複雑で、なぜそこにあって、何をしているか正確に知ること
日々目の前の開発に夢中になりがちでしたが、こういった基礎の部分を改めて勉強しようと思いました。 「概念の図が簡素化されている」という箇所の例で「DB(データベース)も実際はただの円柱ではないですよね」という言葉で会場中が和んでいたのが印象に残っています。
大事なこと2. 変化に向けて設計する
- システムの前提がわからない中で設計をはじめなくてはいけない、そのためにどうするか?
- オプションを手に入れる(将来的な選択肢を買う権利) といった話から、 オプションのための設計とは「標準の道具、標準の方法で作る、シンプルに作る」ことである、 Railsはそんなオプションのための設計をサポートしてくれるフレームワークであると展開していきました。 「柔軟に対応できるように!」と構えた設計こそが選択肢を狭めている、という点にハッとさせられました。 数ヶ月前から新機能の開発に携わっていますが、構えすぎていたかもしれないと自身を立ち返るきっかけをもらった気がします。
本当の難しさ
今度は設計した後の話です。真の難しさは「シンプルを維持すること」であり、 機能追加や変更は付きもの、でも維持できるだろうか?という辛さがあるという点に共感しました。 (それと同時に自分自身が変化を恐れていたのだと気づきました。自信のなさの表れですね、、><)
そんな心の拠り所として『時を超えた建設の道』で言われている「修復」を紹介してくださいました。 ここでいう修復とは「元に戻すのではなく、変化は必然。変化に適用するかたちで、再度調和させる」という意味です。 修復を続けることで変化に適応し続ける、その修復のお手本こそがRailsであるというお話でした。 これは開発以外の面にも繋がる考え方だと感じました。 変化を恐れ構えるのではなく変化を必然のものとして受け入れ調和するものを作っていく、そんな開発者になりたいと思います。
「我々ができることは設計、修復し続けることである」とした上で、「楽しんで開発し続けましょう」というメッセージで締め括られました。 これを書いている今も思い出してぐっときてしまうくらい、優しくて温かいメッセージがこもった講演でした。
全体を通しての感想
技術的な内容はもちろん、開発をしていく中で大切な考え方や取り組みといった内容まで幅広いテーマの発表があり、とても得るものが多い二日間でした。 自身と異なるプロダクトや環境で開発している方だからこその視点から得られた知見や経験と触れられるのは、こういったカンファレンスならではであると実感しています。 休憩時間や懇親会といった参加者の方と交流もまたモチベーションや活力アップに繋がる貴重な機会でした。 時間が被っていて会場で聴講できなかったセッションについても、スライドやアーカイブでぜひ視聴しようと思います!
安蒜(プロダクト改善/初参加)
印象に残ったセッション
1日目 Railsの仕組みを理解してモデルを上手に育てる - モデルを見つける、モデルを分割する良いタイミング五十嵐邦明さん
今後、自分が開発する際に振り返りたい言葉がいくつかありました。特に印象に残ったのは、「機能の実装方法をチーム全員に聞いたとき、同じ答えが返ってくる状態を作る」という考え方です。 シンプルな設計にするには、その背景や理由を説明できることが大事で、これはプロダクトづくり全般に共通するポイントだと感じました。
Hotwire or React? 〜Reactの録画機能をHotwireに置き換えて得られた知見〜(Haruna Tsujitaさん
アプリ構成についての議論では、「ReactをやめてHotwireに移行することへの不安」について触れられていました。そこで、その不安の要因を細かく分解し、課題ごとに本質的な解決策を見つけるアプローチが示されました。 実装方法を何度も検証しながら、JavaScriptの依存を減らす工夫もされており、非常に専門的で難しい内容でした。複雑な課題も仕様を深く理解することで分解しやすくなるという点が印象的で、プロダクト改善においても多くの学びとヒントを得ることができました。
2日目 都市伝説バスターズ「WebアプリのボトルネックはDBだから言語の性能は関係ない」osyoyuさん
RubyとGOのHTTPサーバで性能を検証するというお話 発表では、CPU性能においてGOが優勢である状況を示しつつも、Rubyで3~10倍の速度向上を実現し、GOのパフォーマンスに迫る結果が紹介されていました。わからない用語が多かったですが、今回違う言語のお話を聞ける機会でしたので興味深かったです!資料公開後にチェックします。
企業ブースの様子 飯嶋さんがクラシルさんのクイズに正解して素敵なボトルをゲットしていた! KOMOJUドラゴンのキーボードのキーホルダー押したら光るのが めちゃくちゃ可愛かったです。 1日目アフターパーティーのご飯とても美味しかったです。
全体を通しての感想
初のエンジニア向けのイベントに参加し、内容の濃い2日間を過ごしました。私はオンラインスクールでRubyを勉強中です。まだ理解が浅く、序盤は不安でした。ですが、飯嶋さんから「RubyKaigiの発表はわからなくても大丈夫」と伺い、途中から楽しめるようになりました。
川村さんと飯嶋さんに同行し、オンラインスクールの方々とも交流できたのも嬉しかったです。企業はアイコン付き缶バッジを使い、参加者同士が自然に会話できる工夫をしており、「あのアイコンの人だ!」と気づける楽しさもありました。
運営の方々によって素晴らしいイベントとなり、竹山さんには、お声がけいただいたことに感謝しています。 次回は大手町!!
おわりに
カンファレンスを通し 、Railsに関する最新のトレンドやベストプラクティスなどの新た知見を多く得られ、今後の開発に大いに活かせそうです。 また、多くの参加者と交流できたことで、今後の開発へのモチベーションがさらに高まりました。
最後に、この場をお借りして、素晴らしい場を提供してくださった発表者の皆様、そして運営スタッフの皆様に深く感謝申し上げます。 また、今回の参加をサポートしてくださったマネージャーや関係者の皆様にも、心より御礼申し上げます。
来年のカンファレンスも楽しみに、今よりも成長した姿で臨めるよう努力していきたいと思います!
川村 将矢 Masaya Kawamura
カスタマーP&M本部 はたらく未来図構想統括部 JobQ部 エンジニアリンググループ エンジニア
オンラインスクールでの学習を経て、看護師からWebエンジニアにキャリアチェンジ。好きなものはラジオ、ランニング、居酒屋巡り
飯嶋 Iijima
カスタマーP&M本部 はたらく未来図構想統括部 JobQ部 エンジニアリンググループ エンジニア
2年間のオンラインスクールでの学習を経て、経理からジョブチェンジしました。猫、野球、日本語ラップが好きです。
安蒜 薫 Kaoru Ambiru
カスタマーP&M本部 はたらく未来図構想統括部 JobQ部 プロダクトグループ
元美容師からIT業界へキャリアチェンジ 現在はオンラインスクールでプログラミング学習中。インテリア巡り、サウナ、トレーニング、最近は山があるところへの旅行が好きです。
※2024年11月現在の情報です。