こんにちは、 id:sezemi です。 いよいよ「地面師」を見るかと思いながら 2 ヶ月がたち、腰が重くて、一つも見ない現象に名前をつけたい、この頃です。
さて、アンドパッドが心待ちにしていた Kaigi on Rails 2024 が開催されたので、参加レポートをまとめました ! 前半は主に広報目線でブース出展をふりかえり、後半は Rubyist 目線でトークをふりかえります。
少し遅めのアフターイベントも告知していますので、ぜひご覧下さい !
アンドパッドブースで行ったクイズの解答を発表 !!
アンドパッドブースではアンドパッドの Rails アプリケーションが解決している、建築・建設業界が抱えている課題と、実際に ANDPAD が解決している事例を紹介し、それにまつわるクイズも出題しました。
上の展示したパネルをよ~く見ると答えが載っているのですが、念のため、そのクイズの内容と回答をお知らせします !
Q. 建築・建設業界の就業者のうち、 2020 年時点で 29 歳以下が占める割合はどれぐらいだと思いますか? (任意)
- 約 1 割ぐらい
- 約 3 割ぐらい
- 約 5 割ぐらい
- 約 7 割ぐらい
答えは 約 1 割ぐらい でした。
総務省労働力調査をもとに国土交通省が算出したデータ *1 では、 2020 年時点で 11.7% であり、これは 2023 年時点でも同じ数値です。
Q. 大工就業者数はこれまでの 40 年間でどれぐらいに減少したと思いますか? (任意)
- 3/4
- 2/3
- 1/2
- 1/3
答えは 1/3 でした。
2018 年に発表された野村総合研究所の調査 *2 によると、 1985 年に 81 万人いた大工の就業者数は、それから 40 年後の 2025 年に 25 万人(調査当時の予測値)になっています。
ブース来場者にも建築・建設業界が抱えている課題の深刻さと待ったなしに解決が急がれている様子が伝わったのか、口々に「本当ですか !?」「まずいですね」といった感想が聞かれました。 アンドパッドが解決しようとしている問題の一端が少しでも伝わっていることを願っています。
rails stats
などアンドパッドの Rails アプリケーションや開発における取り組みも出題
そのほかのクイズとして、アンドパッドの Rails アプリケーションにおける rails stats
の様子や、 Ruby/Rails での取り組みも出題しました。
Q. ANDPAD で一番開発が活発な Rails アプリケーションの
rails stats
の LOC はどれぐらいだと思いますか?(任意)
- 10000 ぐらい
- 80000 ぐらい
- 130000 ぐらい
- 5000000 ぐらい
答えは ... このあと告知するイベントで発表します !! ぜひお越しくださいませ 🙏🙏
Q. アンドパッドが行っている Ruby に関する取り組みはどれだと思いますか?(任意 / 複数選択可)
- プロダクションで Ruby 3.3.4 へのアップグレードが完了している
- アンドパッドにはリアーキチームが開発しているプロダクト間通信用に Ruby で実装された gRPC API 群の tsugite がある
- ライブラリアップデートが滞らぬよう、朝会で行われたり、ワークショップなどが開催されている
- アンドパッドの Rubyist たちは Ruby のエコシステムに対し、年間で 4371 コミットしている( 2023 年)
- 福岡県での DX 事例ならび Ruby への貢献を評価され、第 16 回 フクオカ Ruby 大賞 副県知事賞を受賞した
- アンドパッドのアドバイザーに a_matsuda さんが就いている
答えは 全部 でした !
どれもこれも自慢なので、詳しく取り組みを知りたい方は、ぜひイベントなどでアンドパッドの Rubyist を掴まえるか、カジュアル面談へ !!
ブースアンケートからわかった、同じ Ruby を扱うカンファレンス、 RubyKaigi と Kaigi on Rails に出展する意味
これは採用広報ネタではありますが、アンドパッドは Kaigi on Rails だけでなく RubyKaigi にも協賛し、 2024 年にはどちらにもブース出展しています。
アンドパッドのブースではアンケートで参加者のプロフィールの一部も入力いただいています。 そこで得た情報をもとに Kaigi on Rails 2024 と RubyKaigi 2024 のブース来場者を比較してみました。
Kaigi on Rails 2024 と RubyKaigi 2024 との重複は ・・・ ほぼ無し !!
当初の予想では、 RubyKaigi 2024 と Kaigi on Rails 2024 に参加する Rubyist は相当数重複するだろうと予想を立てていました。 このためブースの訴求も、ブースで配布する秘蔵の esa やノベルティも新作を投入するなど、新しさを出すように工夫していました。
ところが結果をみると、 Kaigi on Rails 2024 と RubyKaigi 2024 で重複したのは、本当に少数でした。
Rubyist には当たり前かもしれませんが、 Ruby そのものを扱う RubyKaigi に対して、 Rails ならびにアプリケーション開発全体を扱う Kaigi on Rails とでコミュニティ内では棲み分けが出来ている可能性がありそうです。 また、 RubyKaigi と Kaigi on Rails では開催地が異なり、エンジニアの居住地との兼ね合いも影響するのかも知れませんね。
いずれにせよ、アンドパッドでのブース来場を見る限り、 RubyKaigi と Kaigi on Rails とでは参加者層が似ているようで、違っていることがわかりました。
同じ分野のカンファレンスに何度も出展することには効果がある !
続いて、これも採用広報の関心事ですが、「同じ分野の技術を扱うカンファレンスに何度も出展することに価値はあるのか?」という、広報あるあるの問いについても調べてみました。
アンドパッドのブースアンケートでは定常的にアンドパッドへの関心度を聞いています。
アンドパッドの関心度を伺えますか? (任意)
- もっと詳しく知りたいので、カジュアル面談を希望したい
- アンドパッドの Rubyist たちとプライベートイベントや座談会で話したい
- イベントやテックブログなどの技術情報を知らせて欲しい
- その他
ブース来場者のうち、 Kaigi on Rails 2024 と RubyKaigi 2024 で重複した方に限定し、この設問の回答結果を調査すると、アンドパッドへの関心度を上げられた結果になり、同じ分野で重ねてブース出展することは効果的ということがわかりました。
この結果をもとに、来月 12 月の RubyWorld Conference 2024 、年明けの 東京Ruby会議12 でもブース出展が控えているほか、来年もアンドパッドは Kaigi on Rails や RubyKaigi 、地域 Ruby 会議にも協賛したいと考えていますので、様々に切り口を変えながら、新しい魅力を発信したいと思います。
Kaigi on Rails 2024 のトークを堪能してきた !
ここからは Kaigi on Rails 2024 に参加したアンドパッドの Rubyist 、 金近 歩 、 kkitadate 、 kei_s が印象に残ったトークを、内容とともにふりかえります !
基調講演 Kaigi on Rails 2024 Rails Way, or the highway
Rails Way に乗り続け、迷子にならないようにしようという発表でした。 Rails Way は、単なる Rails アプリケーションの構築方法ではなく、哲学であると。
(その後の Kaigi on Rails 2024 での数多くの発表や交流などを通じて、価値観や考え方、知識の共有などが強固な文化の基盤や哲学を継続的に育み続けているだなと強く感じました。)
トークの前半では Rails は「 Rails scales from HELLO WORLD to IPO 」であり、 Rails フレームワークは構造を提供し、「意思決定から解放」を提供してくれるものと話されていました。 ただし、一定の段階を超えると各チームが独自の構造の必要性があると。
それをうけ後半では、具体例として Form オブジェクトを取り上げ、隙間を埋める方法やその考え方が示されていました。 「カスタムアプリケーション開発者の考え方」ではなく、「フレームワーク作者の考え方」を持つべきであるという内容が印象的でした。
Rails の「隙間」をどう埋めるかについてのヒントが得られる発表でした。
Palkan さんの以下の著書もぜひ読んでみようと思いました。
Layered Design for Ruby on Rails Applications
(金近歩)
Data Migration on Rails
「データベースシステム全体の移行や変更に焦点を当てる」発表でした。
体系的に現状の Data Migration が調査されており、非常に参考になりました。
私もアプリケーションエンジニアとして、数十、百以上のデータマイグレーションを独自の方式で行ってきたと思います。 発表で紹介されていた代表的なアプローチには「 SQL による直接データ操作」「 Rails console や Rails runner の利用」「 db と同時に実行」「 rake task や Ruby スクリプトの実行」などがあり、それぞれの方法に実績があります。 しかし、これらのどれもが完璧な方式ではありません。
発表者の熱意も伝わり、「 Data Migration on Rails 」の理想について議論するための土台づくりが、この発表からさらに進んでいくように思っています。
また、過去の gem が衰退していく流れも整理されていて、無常さも感じました。
このように共通の概念を整理し、議論や方向性を定めることで、多くの Rails アプリケーションエンジニアが意思決定の負担から解放されるのではないでしょうか。 そして、将来的には何か新しい「 Data Migration on Rails 」の形が生まれてくるかもしれないと感じました。
(金近歩)
Rails の仕組みを理解してモデルを上手に育てる
Rails way を行くためのモデルの探し方と、その隙間を埋めるための方法としてのフォームオブジェクトの紹介といった内容で、まるで基調講演と繋がりがあるかのように感じる発表でした。
勉強になったポイントとして PORO のルールづくり(例:クラス名は返すオブジェクトの名詞で統一する)や Service 層のデメリット( Service オブジェクト間でのメソッド共有ができない、みんなの理解や認識がバラバラになりがち)、モデルを分割すべきとき(バリデーションを条件分岐したくなったとき、フォームオブジェクトをつくって DB 用と異なる(フォーム用の)バリデーションを担当させる)といった点がありました。
また、地味に「へえ〜」となった小ネタ (?) として ActiveModel::Model = ActiveModel::API + ActiveModel::Access
という学びがありました。
(kkitadate)
Identifying User Identity
ユーザーとは何か?から始まり、ユーザーのアイデンティティを探求していくという発表でした。
User モデルは id しか持たないという、一見「それでいけるの…?」という実装例の紹介と、その実装により享受できるメリットが挙げられていました。 その中で『 Rails の仕組みを理解してモデルを上手に育てる』のセッションでも言及されていたイベント型モデルの事例 (UserRegistration) があり、点だったはずの知識がつながっていく感覚が非常に良いと感じました。
また、管理者とユーザーを分けることが権限制御の難しさを減らすことに繋がる話も「なるほど!」と頷いていました。 権限で表すとどうしても後々複雑になっていく、そんな辛さをなるべくなくすため機能の実装レベルで分ける(例: User モデルに対し管理者は Staff モデルとする)手法が学びでした。
(kkitadate)
Sidekiq vs Solid Queue
バックグラウンドでジョブを実行するための仕組みについて、歴史上の変遷と Rails 8.0 時代の指針について簡潔にまとまった発表でした。
Delayed::Job や Resque, Sidekiq, GoodJob などこれまでリリースされたメジャーなライブラリとその特徴について紹介し、それぞれのライブラリのパフォーマンス上の工夫を時にコードを例示して説明しており、バックグラウンドワーカーではジョブ取得の方法でパフォーマンスに影響が出ることを示していました。
また Active Job 登場後、例えば Sidekiq など Active Job を前提としていないライブラリとどのように組み合わせると良いかについて、 Active Job のアダプタとして使うことで機能を完全には使えない場合があることなど、疑問になりやすい点をわかりやすく解説していました。
Rails 8.0 からのデフォルトとなる Solid Queue について詳細に説明したのち、バックグラウンドワーカーの選定基準の考え方について、ストレージ、インターフェース、機能の三つの観点を示していました。 バッググラウンドワーカーの調査をする際に非常に参考になる発表でした。
(kei_s)
基調講演 WHOLENESS, REPAIRING, AND TO HAVE FUN: 全体性、修復、そして楽しむこと
『Ruby のしくみ』や『ソフトウェアアーキテクチャの基礎』などの著者・訳者である島田浩二さんの基調講演では、島田さんがソフトウェアを設計する際に大事だと考えていることを、やさしい語り口で発表していました。
一つ目には、アプリケーションコードに閉じないシステム全体が機能するよう設計することが重要で、そのためにはシステムを構成するコンポーネントを理解し、現実世界の問題を一つずつ解いていくことで結果として全体の構造が現れるものである、ということを述べていました。
二つ目として、変化に向けて設計する重要さを説明しました。 設計開始の時点は最もわかってないタイミングで、将来的に振る舞いを変更するオプション(将来的な選択肢を買う権利)のために設計することが大事だということであり、そのためにはシンプルに作ることが重要で、「 Rails scales from HELLO WORLD to IPO 」( 1 日目の基調講演で出た Rails 公式に掲載されている言葉)を引用し Rails はオプションのための設計をサポートしてくれるフレームワークだと述べていました。
これらの本当の難しさはシンプルさを維持し続けることで、このためには元に戻すのではなく、変わった後の全体と再度調和させる作業である「修復」が重要であり、 Rails 本体がお手本であると述べました。
最後に、 DHH や Matz 、 Martin Fowler の言葉を引用し、楽しむことこそが重要であると述べ、 Kaigi on Rails 2024 最後の発表を締めていました。
初日の基調講演につながる内容でもあり、Kaigi on Rails 2024 全体の締めとしてとても印象的な発表で、その後の懇親会では感化された人をたくさん見受けました。 島田さんの人柄に溢れた発表で感銘を受けました。
(kei_s)
アフターイベントとして rails stats
2024 を見せ合う会(仮)を開催します 予定です !!
最後に採用広報からイベントのお知らせです。
アンドパッドの Rubyist をはじめ、多くの参加者の印象に残った「 Rails scales from HELLO WORLD to IPO 」にちなみ、アンドパッド、スマートバンクさん、 SmartHR さん、 STORES さんと共催し、各社の rails stats
を見せながら、どのような歴史とどのような工夫をして Rails Way を進んでいるのか発表いただくイベントを開催します !
12/10 19:00 開始で、アンドパッド秋葉原本社の 9F イベントスペース ANDPAD コミュニティで開催します !! 現在、 connpass でイベントページを準備中ですので、ぜひ connpass の ANDPAD グループをチェックしてみてください ! (イベントページがオープン次第、このブログの内容を変更します) connpass でイベントページを公開しましたので、ぜひご参加ください !!
https://andpad.connpass.com/event/337371/andpad.connpass.com
まとめ
Kaigi on Rails 2024 でのアンドパッドブースの模様、そして、アンドパッドの Rubyist が学びの多かったトークをふりかえりました !
そのトークのパートでも挙がっていましたが、 Kaigi on Rails 2024 ではコミュニティ内の議論が活発になるトークが多かった印象です。 User や Data Migration 、言語性能とパフォーマンスなど話題に挙がったテーマを今後 SNS やイベントやその廊下で、「ウチはこうしている」という話が繰り広げられるといいですね。 アンドパッドでもイベント開催時や、カンファレンスに出展した際はコミュニティ内の議論をより進められるよう工夫したいと思います !
では、 9/26, 27 に JP Tower Hall & Conference で開催される Kaigi on Rails 2025 でまたお会いできることを願っています !
アンドパッドではプロダクト開発だけでなく Ruby/Rails コミュニティで、より最適なものを模索し、工夫できる Rubyist を求めています !! ぜひ語らい、実現していきましょう !