❣️

プログラミングの楽しさを思い出した Kaigi on Rails 2024

2024/10/27に公開

ごきげんよう🙋‍♀️ツクリンクEMのあっきー(@kuronekopunk)です。
Kaigi on Rails 2024にSilver Sponsorとして協賛、参加してきました。
今回は、同僚のエンジニアめばしいさん(@aiuhehe)がオーガナイザーとして参加を含めツクリンクからは4名での参加となりました。
去年はチケットを買い忘れたメンバーが多発し2名の参加だったので成長を感じます(?)

Day1

基調講演 Rails Way, or the highway

https://speakerdeck.com/palkan/kaigi-on-rails-2024-rails-way-or-the-highway

Rails Wayに乗っていこう、そして外れないように拡張していこうというお話。
Rails Wayにも隙間がありそれをどう埋めていくのかというところで、フレームを歪ませてしまうと怪獣 on Railsになってしまうという話が面白かったです。
Rails8.0で強化された機能なども紹介していて、Solid infrastructureは個人的にもかなり気になっています。他の公演でも触れられていたので触ってみようと思いました。

英語のセッションですがスライドでは翻訳も記載されていて、直訳ではなく意図を適切に表現し、ユーモアあるのある翻訳になっていて感動しました。

特にこの翻訳が大好きでした。
導きの星をちゃんと見つけ進んでいけるようRails Wayを理解し開発をしていけるよう学んでいこうと思いました。

レイヤードアーキテクチャをRails対応させた表も秀逸で自分は全く別物のイメージだったのでこういった話が聞けたのもありがたかったです。

Railsの仕組みを理解してモデルを上手に育てる - モデルを見つける、モデルを分割する良いタイミング -

https://speakerdeck.com/igaiga/kaigionrails2024

モデリングのやり方から実装方法まで、ステップバイステップで解説されていて明日から使えるお話でした。
最近は増やしていませんがService層を導入してしまった過去もあり、直近はFormObjectを試していたのもありとてもタイムリーな話が聞けて良かったです。
Railsの練習帳をまだ読んでいなかったので履修してこようと思います。

https://zenn.dev/igaiga/books/rails-practice-note

Sidekiqで実現する長時間非同期処理の中断と再開

https://speakerdeck.com/hypermkt/pausing-and-resuming-long-running-asynchronous-jobs-with-sidekiq

あるあるな非同期処理の課題のお話。あまり長時間非同期処理は無いので課題に上がったことはないのですが今後起こる可能性や、その他の課題に対しても改めて認識できて助かりました。
またSidekiq Iterationなど新機能のキャッチアップをしていかないと車輪の再開発(なんなら自前の粗悪な車輪の開発)をしてしまう可能性も高いので情報収集含めもっとやっていこうと思いました。強い人達はどうやってキャッチアップしてるんだろうか…

リリース8年目のサービスの1800個のERBファイルをViewComponentに移行した方法とその結果

https://speakerdeck.com/katty0324/ririsu8nian-mu-nosabisuno1800ge-noerbhuairuwoviewcomponentniyi-xing-sitafang-fa-tosonojie-guo

数年前にパフォーマンス改善やERB内での分岐の多さ改善のため少しViewComponentを検証していたので楽しく聞けました。
ERBをパースしてViewComponentを自動生成するのは感動しました。
view_pathsを活用したカナリアリリースの方法も他の検証にも使えそうに思いました。

Rails APIモードのためのシンプルで効果的なCSRF対策

https://speakerdeck.com/corocn/kaigionrails-2024-csrf

弊社では現在Remixでフロントエンドの分離を検証しているためタイムリーな話題でした。
CSRFの基礎的なところからAPIモードでの対策の具体例まで勉強になりました。
このあたりはブラウザにもよるところなので「モダンブラウザでは」などになると少しぐぬぬ…というお気持ちもあります。(弊社ではIEは対応切れていて基本最新とは明示していますがお気持ちどこまでフォローしたいかは考えたいので)

デプロイを任されたので、教わった通りにデプロイしたら障害になった件 〜俺のやらかしを越えてゆけ〜

https://x.com/12u3i_tomo/status/1850008410038608017

話の流れやあるあるに現場感を感じられ、会場に一体感があった最高のセッションでした。
本人も言ってますがマジでアーカイブ動画で見てほしい。
「デプロイ?緑のボタン押すやつですよね」とか言わんとすることはわかるしあるある。
障害が起きたとき、違和感を感じたときにちゃんと立ち止まって調査や報連相を行い、部署を超えて対応しているところが本当に素晴らしいと感じました。
過去に無視されたエラーはその後でも無視されやすいし問題提起しづらいと思うのでそれがしやすい組織や仕組みづくりをしたいなと思うとても良いセッションでした。

Hotwire or React? 〜Reactの録画機能をHotwireに置き換えて得られた知見〜

https://speakerdeck.com/harunatsujita/hotwire-or-react

試してみたいとは思いつつ触れていなかったHotwireの実例を聞けるのはありがたい。
これまでの考え方ではうまくいかなかったあたりが学びが深かったです。
小さなところから検証してみようと思いました。

Day2

Day2は朝から子供の習い事を送ったりして昼からの参加。午前はスキマ時間でオンライン視聴をしていました。オンライン配信めちゃくちゃありがたい…!そしてアーカイブにも期待。
昼に現着して弁当を食べ終わったら、弁当が余っているらしくスタッフさんからアナウンスが。友達と「フードロス対策じゃ~!」と2個目の弁当をかっこんで午後セッションに、こういった助け合い(?)ですぐ動ける人たちがいるのがとても良いなと改めて思いました。

都市伝説バスターズ「WebアプリのボトルネックはDBだから言語の性能は関係ない」

※まだ資料出てないかも?

一番嬉しかったのがRailsでのプロセス、スレッドでのCPU利用の流れを理解できてMAX_THREADSをどのように設定すれば良いかの見方がわかったことです。
SREチームにも共有して現状の利用比率を見てパフォーマンス改善に当てていこうと思いました。

ActiveRecord SQLインジェクションクイズ (Rails 7.1.3.4)

https://speakerdeck.com/kozy4324/activerecord-sqlinziekusiyonkuizu-rails-7-dot-1-3-dot-4

サニタイズSQLのメソッドが色々あるのが学びになりました。
こういった知っていれば便利に安全になるものの手数を増やしていきたいです。
https://api.rubyonrails.org/v7.1/classes/ActiveRecord/Sanitization/ClassMethods.html

入門『状態』

https://speakerdeck.com/shinkufencer/state-for-beginners-with-rails

状態が増えると実装が大変になるのでシンプルにしていこうという話。
サンプルコードのリファクタを自チームでやると良い学びになりそうだなと思いました。
近い内にワークショップとかやりたい。

Sidekiq vs Solid Queue

https://speakerdeck.com/willnet/sidekiq-vs-solid-queue

最近、地域rbのLTでもちらほら聞くようになったSolid Queueと現状のデファクトスタンダードのSidekiqの比較。ユースケースごとにどちらが良いのかの意見が聞けたのがとても良かったです。
Sidekiq Proやエンプラの大事さも知れて、自社プロダクトでcron実行の課題などもあるので改めて比較してアーキテクチャを改善していこうと思いました。Willnetさんと話してみたかったけど機会を逃したので次のカンファレンスなどでタイミング見ていければと思いました。

Importmapを使ったJavaScriptの読み込みとブラウザアドオンの影響

https://speakerdeck.com/swamp09/importmapwoshi-tutajavascriptno-du-miip-mitoburauzaadoonnoying-xiang

新しくImportmap出てきたなとは思っていたけどそもそもの仕組みを知らなかったので最初は座学としてとてもよかったです。
Importmapに移行して、アドブロック関係で発生した不具合の話はたしかに。今回の話では気付ける仕組みはあるものの根本解決は難しそうに感じたので中止していきたい。

Data Migration on Rails

https://speakerdeck.com/ohbarye/data-migration-on-rails

Data MigrationをDB Migrationとデータ移行・変更とに定義を説明してから始まり認識がしやすく助かりました。
Data Migrationのよくあるアプローチ、rails consoleからの直接操作はよくやってしまうので反省しながら手を挙げました…
Maintenance Tasksは興味はあったけど詳しく見れていなかったので検証していこうと思いました。実行するコードに引数とか渡せるのかな…渡せると嬉しいけどテストは危ないよなあというお気持ちもある。

大事なデータを守りたい!ActiveRecord Encryptionと、より安全かつ検索可能な暗号化手法の実装例の紹介

https://www.docswell.com/s/free_world21/ZQRM4V-2024-10-26-165756

暗号化完全に理解した!!!
証券というドメインにより強固にしないといけないという成約からレコードごとに暗号化できるというのに驚き。
検索用にハッシュテーブルを作る話も面白かったのですが他の方もツイートされていたように完全一致しか検索できないなどなかなか難しそうに感じました。

omakaseしないためのrubocop.yml のつくりかた

技術的な話というより、どうやってチームの文化を明文化していくかという話。
緊急度、優先度の下がるこういった取り組みは「既存のMTG時間に入れていく」というのはTLでも賛同が多かったように思います。継続できる仕組み含め話されていたのがEMらしいなと思いました。

Type on Rails: Railsアプリケーションの安全性と開発体験を型で革新する

https://speakerdeck.com/kazzix/type-on-rails-railsapurikesiyonnoan-quan-xing-tokai-fa-ti-yan-woxing-dege-xin-suru

RBIの型のお話。地域rbなどではRBSの話は聞いていた気がするので新鮮でした。
Enum型の条件分岐も型カタしていて好みが分かれそうな印象。あのあたりがもう少し書きやすくなると個人的には嬉しいなと思いました。

WHOLENESS, REPAIRING, AND TO HAVE FUN

https://speakerdeck.com/snoozer05/wholeness-repairing-and-to-have-fun

“良い設計には物事の正確な観察が必要”
現実の課題を一つずつ解いていった結果そういうアーキテクチャになるという話は首がもげるほど頷きました。そのためにも個別のコンポーネントについて詳しく知り、個別の解決策の手数を増やしていくことが大事だなと改めて思いました。

“修復とは、「元の状態に戻す」のではなく「変わった後の全体と再度調和させる」”
確かに壁の塗装にしてもくすんでいたらその色に合わせて塗り直すだろうしリアルの感覚としても納得のお話。
修復をし続けて変化に適応していくためにもRails Wayなどベターな選択肢を増やしていかねばと思いました。

Day1の基調講演と同じフレーズがここで出てきて感動しました。
Rails Wayへの理解はだいぶ浅いのでまずはそこからやっていこうと思いました。

セッションやコミュニティで話す方に共通する点はここで、本当に技術を楽しんでいると思います。
自分はあまりコードを書かなくなり情報のキャッチアップばかりになっていますが手を動かして楽しんでいこうと改めて思いました。

Kaigi on Rails 2024を終えて

登壇者の方、運営の方たちみなさん本当にありがとうございました!
Railsのことを改めて好きになったカンファレンスでした。
Rails Way(導きの星)を見て、楽しみながらやっていこうと思います。

コミッターの方や、こういったカンファレンスやコミュニティのおかげで技術発展にも繋がり自社プロダクトも恩恵を受けられていると強く感じます。
今年はSilver Sponsorとして協賛させていただいていますが、プロポーザルを出すなども含め継続して貢献していければと思います。

宣伝

2024/11/22(金) 12:00 〜 13:00にはKaigi on Rails After LT会を企画しています。
オンラインで開催するのでお昼休憩がてらご参加いただけると嬉しいです。

https://tsukulink.connpass.com/event/334880/

採用も行っていますので少しでも興味を持っていただければDMでも構いませんのでご連絡いただけると嬉しいです。カジュアル面談よりもカジュアルに雑談も募集しているのでお気軽にご連絡ください。

Discussion