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