Kaigi on Rails 2023
#Kaigi_on_Rails
Day 1
makicamelさんのN+1問題の話
https://kaigionrails.org/2023/talks/makicamel/
BulletmarkRepairer をつくった https://github.com/makicamel/bulletmark_repairer
bullet で N+1 を検知したら自動で修正(includes)するgem
どこで includes する?という問題
資料: https://speakerdeck.com/makicamel/bulletmarkrepairer-auto-corrector-for-n-plus-1-queries
mozamimyさんのdelegated typesの話
https://kaigionrails.org/2023/talks/mozamimy/
おもしろかった〜
自分の中の設計の選択肢に delegeted types はなかったので、今度検討してみよう
外部キー制約を捨てることになったあたり、SQLアンチパターンとともに深掘りしたいな
willnetさんの "Railsにおける「想定していない事象」とどのように付き合っていくと良いのか" 話
https://kaigionrails.org/2023/talks/willnet/
いつどういうシチュエーションで例外を上げる/捕捉するべきか
fugakkbnさんのパフォーマンス改善の話
https://kaigionrails.org/2023/talks/fugakkbn/
パフォーマンス改善に向き合うための心構えや方法論について
わかるわ〜という感じだった
資料: https://speakerdeck.com/fugakkbn/chu-metenopahuomansugai-shan
moroさんのRailsアプリケーションをシンプルに保つための考察
https://kaigionrails.org/2023/talks/moro/
moroさんSMSの方だったのか。カジュアル面談でコード見せられるからぜひ、とのこと
Railsが得意な設計に落とし込む
scaffold がヒントになるはず
現実世界とのギャップはある
このギャップを埋めるためのヒントになるのが今回の発表
RDB
エンティティ
リソースエンティティ = モノを記録する
イベントエンティティ = コトを記録する
REST
イベントエンティティをうまく定義できるとRESTで表現しやすくなるよね〜
https://www.slideshare.net/nay/smell-in-rails-apps-in-sapporo-rubykaigi03#39 このスライドをいつも思い出す
Ruby
ActiveModelなどを活用して開発・リファクタリングしていく
FromObjectとか
自分自身こういう観点で実装するようにしているし、他のメンバーにもフィードバックすることが多いから、こういう前提をもっているチームで開発するのはよさそうだな〜
ginkounoさんのgemをアップデートする時の話
https://kaigionrails.org/2023/talks/ginkouno/
railsアップデート等の記事で「まずはgemを最新にアップデートしましょう」とあるけど、それ大変じゃん、という話ね。わかる
負債の借り換え
利子が小さくなるように
手数料が小さい方法で
gogutanさんのseedづくりの話
https://kaigionrails.org/2023/talks/gogutan/
https://twitter.com/tanaken0515/status/1717830358933348847
開発環境をゼロから構築することっていまの自分のチームだとそんなに多くないけど、今後はプルリクごとに環境作ったりとかクラウドにサクッと開発環境をつくって機能開発するとかやっていきたいから、そういう運用になると良いseed手軽につくりたくなりそうだなぁ #kaigionrails
pockeさんのAcvireRecordクエリクイズ
https://kaigionrails.org/2023/talks/pocke/
勉強になった
mameさんのQuineで動くゲーム
https://gist.github.com/mame/9833a830b08afb5fa36917f58cd4fbe3
すごすぎるよな〜どうやったらこんなのつくれるんだ
Day 2
ksss(Kurihara)さんのRailsにおける型ファイル自動生成の話
https://kaigionrails.org/2023/talks/ksss/
https://github.com/ksss/orthoses-rails
課題: RBSを導入したのに誰も使ってくれない
型ファイルをコミットする
勉強会する
課題: アプリケーションコードの型がついていない
rbs prototype runtime
krpk1900(Terai)さんのCQRS(Command and Query Responsibility Segregation)アーキテクチャの話
https://kaigionrails.org/2023/talks/krpk1900/
https://twitter.com/tanaken0515/status/1718082043316416594
CQRSアーキテクチャって認識してなかったけどこの構造(UseCase->Command)で開発してるプロジェクトに携わったことあったわ、名前しれてよかった #kaigionrailsA
ShoheiMitaniさんの "サービスのコアとなるモデルの仕様を大きく変え、テーブルの定義変更やモデルの機能拡張をしたお話"
https://kaigionrails.org/2023/talks/ShoheiMitani/
オンラインDDL
MySQL 5.6で追加された
無停止でテーブル定義(DD)の操作ができる = データ操作(DM)をロックしない
注意点1
適用できるテーブルの条件がある
MySQL 5.5以前でつくられたテーブルはできない
Generated Columnがあるテーブル?には適用できない
注意点2
メタデータロック
注意点3
時間がないので別途資料配布
repeatablereadのときなど
リリースフロー
古いアプリケーションが新しいテーブル定義で動く時間が発生する