【Kaigi on Rails】2日目の参加レポート

こんにちは、Plex Job 開発チームの高岡です。

Kaigi on Railsの2日目に参加してきたので、栃川さんの1日目のレポートに続き、2日目の参加レポートを書きます 📝 product.plex.co.jp

会場にて

会場では、池川さん、栃川さんと一緒に参戦しました🔥

会場の雰囲気に関しては、1日目に会場で参加した栃川さんが臨場感のある参加レポートを上げてくださったので、ぜひそちらをご覧ください!
補足としては、発表する会場は2つあり、どちらとも大きなスクリーンでどの位置からでもはっきり見えてよかったです。

発表を行なっている会場

お弁当やコーヒーもいただけて、休憩室や作業室などもあり、会場内はとても満足して過ごすことができました!
スポンサー企業のノベルティがたくさんあり、どれもデザインが良かったです👏
栃川さんはX(旧Twitter)のアイコンで缶バッジを作成していただいていました、、すごい 👀

印象に残ったセッション

約9000個の自動テストの時間を50分から10分に短縮、偽陽性率(Flakyテスト)を1%以下に抑えるまでの道のり

参加したセッションはどれも興味深いものでしたが、特にhatsuさんのセッションが印象的でした! このセッションでは、自動テストの数が8871個、CIにかかる時間が50分、偽陽性(Flaky)によってCIが失敗する確率が15%という状況から、CIの時間を10分、失敗率は1%程度まで大幅な改善を達成した道のりについて、振り返りを交えつつ、詳しく説明されていました。

特にテスト時間の削減は、改善に寄与した施策を

  • 手軽さ
  • 効果

の2つの観点から紹介していてとても分かりやすかったです。

施策の中では、Capybaraやtest-profなどのgemを使用して、ボトルネックとなっている箇所を解消していくアプローチがありました。 以下、具体的なアプローチになります。

Capybaraの機能に任せてsleepを削除
APIレスポンスを待ってテキスト表示を確認するテストのために、sleepが使用されている箇所が複数存在していて、そのsleepでテスト時間が増加している課題があったようです。
その対応として、Capybaraの「特定のテキストを確認するまで指定した秒数の間、監視し続けてくれる」have_textメソッドを使用して、sleepしている箇所を削除して解決されていました。

test-profのbefore_allメソッドを使ってデータ作成を省略
テストデータをテストケース分だけ再生成を行なっていて、テスト時間の中でテストデータ生成時間が大きな割合を占めている課題があったようです。
こちらは、test-profのbefore_allメソッドを使用して、1度生成したテストデータを共通するテストケースで再利用することで、データ生成時間の課題を解決されていました。

Flakyテストの対応は、1つずつ地道に発見して潰していく中の苦労や工夫したことを説明されていました。
特に気になったのは、Allure Reportというテスト結果をダッシュボード化するツールで、Failedしたテストのログやスクリーンショットの可視化を行い、原因が分かりづらいFlakyテストを解消していました。

私のチームでは使用していないgemやツールも多く、いいアプローチだと思ったのでぜひ積極的に取り入れていきたいと思いました 🙆‍♂️

▼ 発表スライド  speakerdeck.com

一緒に向かった池川さんにも気になったセッションの感想をお聞きしてみました 🙌

▼池川さん
推し活のハイトラフィックに立ち向かうRailsとアーキテクチャ

株式会社TwoGate取締役CTOのHayato OKUMOTOさんの発表がとても印象的でした!(まずタイトルに惹かれますね)

前半では、ハイトラフィックに対してどのような対策をとっているのか、在庫テーブルの例を用いて説明されていました。
注文時に在庫数を更新する処理でDBのデッドロックを回避するために、商品単位で在庫数を管理するのではなく、在庫一つひとつをレコードで持たせる形でテーブル設計を採用されるなど私にはない観点だったので参考になりました!
また、後半は決済×パフォーマンスの話で、話の中で出てきた「正しく諦める」という言葉が印象的でした。
外部の決済システムを使っている場合、そのシステムの限界というものがあります。
サービスを作るにあたって、解決できない問題にこだわるのではなく正しく諦めたうえでUXを損なわない実装をすることが大切だと感じました。

▼ 発表スライド  speakerdeck.com

さいごに

このようなオフラインの技術イベントは初めて参加したので、とても刺激になる体験でした!
技術的な学びはもちろん、スライドの構成や発表スタイルなども私自身が登壇者になった際に参考になる部分が多くありました!
来年はプレックスジョブのエンジニアメンバーもプロポーサルを提出して、登壇に挑戦したいと思います 💪

最後に現在プレックスではソフトウェアエンジニア、フロントエンドエンジニア、UIデザイナーを募集しています。
この記事を読んで来年の Kaigi on Rails に一緒に参加したいと思った方は、是非気軽にご連絡をください! dev.plex.co.jp