
学習時間 | 10時間 |
---|---|
難易度 | 中級 |
質問投稿 | 可 |
Railsアプリケーションのパフォーマンス改善をしながらN+1問題を解決するスキルを身に付けよう!
N+1問題によってパフォーマンスが悪化している状態のRailsアプリケーションに対し、実際にチューニングを行いN+1問題を解消していく事で、RailsでのN+1問題自体の理解、考え方や対応方法など正しい対応スキルを身に付ける。
『処理時間が95%削減』N+1問題を理解しRailsアプリケーションでの適切な対応スキルを身につけよう
アプリケーションのパフォーマンス劣化を引き起こす要因の1つに、不要なSQLを大量に発行してしまうN+1問題という問題があります。 N+1問題の知識は高トラフィックサービスの運用から、小規模サービスまで規模に関係なく全てのRailsアプリケーション開発に必須のスキルです。
しかしながら、N+1問題のスキル習得というテーマは複雑な内容で、現在N+1問題自体の説明から解決方法まで一貫して学べる教材はほとんど無い状況です。
そこで、そのギャップを埋める為に、パフォーマンスチューニングや大規模システムの開発に多く携わった経験を活かし、学習者が途中で挫折しない様に丁寧な、それでいてしっかりと実践で役立つスキルを習得する内容にしようという想いで本教材を作成しました。
実際の開発現場でのチューニング業務に近い形式での学習を通してN+1への理解を深める
本教材では、N+1起因でパフォーマンスが悪化している状態のRailsアプリケーションに対し、実際の開発現場でのチューニング業務に近い形式で学習する事で、N+1問題自体の理解、考え方や対応方法など正しい対応スキルを身に付けます。
教材内では、パフォーマンスが悪い状態から全てのN+1を解消する事で95%の処理時間を削り、5%の処理時間でページ表示を実現します。
学習内容
- N+1の現象の理解
- RailsアプリケーションでN+1が発生する原因の理解
- RailsでのN+1対策メソッドの理解
- preloadを使用したN+1解消スキル
- eager_loadを使用したN+1解消スキル
- joinsを使用したN+1解消スキル
- eager_loadでネストした関連モデルのデータの一括取得
- eager_loadとpreloadの注意点
- includesメソッド
- bulletの初期設定
- bulletでのN+1検知の確認方法
- bulletを使用する上での注意点
作成するアプリケーションのイメージをつかもう
シンプルなユーザー情報の一覧ページです。 初期状態では筆者環境で表示に7秒弱もかかっているページに対してチューニングを行います。
本教材の対象者
- Railsアプリケーションで構築された高負荷システム開発に現在携わっている、これから携わる人、あるいは今後携わりたい方
- Railsアプリケーションのパフォーマンスチューニングという、より高度なスキルを身につけたい方
- N+1問題に対して興味がある方
受講における必要条件
- 基本的CRUD処理を実装できる程度のRailsの知識
- SELECT句、WHERE句などの基本的なSQLの理解
- 基本的なGit及びGitコマンドの知識
学ばないこと
本教材はN+1の解消及び、対策方法の理解を目的に作成しています。 その為、Ruby on Railsの特徴であるMVCやオブジェクト指向などのアーキテクチャや、 SQLについての詳しい説明、N+1以外のパフォーマンス改善手法については解説しません。
本教材の対応バージョン
- Ruby 3.0.0
- Rails 6.1.0
- Node.js v12.16.2
Rails5系でも動作しますが、バージョンが異なると微妙に動作が異なる為Rails6系での学習をお勧めします。
本教材の対象OSや環境
- Mac OS