はじめに
Kaigi on Rails 2023に、オフライン参加しました。
全ての発表を見ることはできませんでしたが、それでも多くの学びがありました。
その学びをここにまとめます。
学びは、かなり荒めに書いています。
興味ある学びについては、今後追記するかもしれません。
学び
ジョブ実行中のコンテナ削除を遅延できる
hako-consoleで、アプリで使っているAWSサービスを把握しやすくなりそう
Delegated typesを使えば、委譲(composition)を実現できる
Fiberで非同期処理を実現できるが、リソース管理をプログラマーがしないといけないので難易度高め
Exceptional Rubyという本は、面白そう
例外は、ある事実に対して何かする必要がある時に発生させる
例外に対する処理を、アプリ全体で共通化できる
# 例外を握りつぶす
Rails.error.handle(ActiveRecord::RecordInvalid) do
do_something
end
# 再度raiseする
Rails.error.record(ActiveRecord::RecordInvalid) do
do_something
end
エラーページの表示は、Rails標準搭載のRackミドルウェアに任せるとDRY
Rails 7.1から、テスト環境でエラーページがデフォルトで表示される
Safari v14で、Stimulusのtargetを使う場合は工夫が必要
Gemからアプリケーションコードを1度だけ呼ぶ場合、Rails Executorを使う
Gemからアプリケーションコードを長い間呼ぶ可能性がある場合、Rails Reloaderを使う
KPIの良し悪しによるアクションを事前に決めておくと、ステークホルダーが意思決定をしやすい
RSpecでは初めて visit を使った時に、Railsサーバーとブラウザが起動する
Playwrightテストランナーでの並列テストは難しい
[Hotwire] 部品的アプローチでviewを作成すると、他のviewとの依存関係が生まれて開発しづらくなる
オブジェクト・シリアライザーはMessagePackを使おう
byrootが言ってたけど、色々面倒なのでMessagePack or JSONを使ったほうがいい。
低レイヤーを恐れる必要はない
byrootの発言から
準決定的な振る舞いをするものには、依存してはいけない
byrootの発言から
終わりに
多くの学びがある2日間でした。
「学びが多すぎて、咀嚼するのに時間がかかるなぁ」と思って記事執筆を渋っていました。
しかし、そのまま放置しておくと学びを忘れてしまいそうだったので、荒めに文章化しました。
Thanks
下記の記事に発表資料がまとまっています。
https://qiita.com/Hassan/items/9cc836dd5bfb1aaaabac
この記事を執筆するのに、大変助かりました。
ありがとうございます。