広告スペース(バナー)
💎Ruby レッスン
基本文法の基礎8▾
データ構造とオブジェクト指向7▾
構文の基本を深める9▾
関数とデータ構造の応用9▾
アルゴリズムとテストの基礎8▾
文字列・数値操作の応用8▾
実務で役立つ機能8▾
レッスン 38 / 68
メモ化(キャッシュ)で計算を高速化する
このレッスンでは、メモ化(キャッシュ)というテクニックを学び、重い計算を効率よく高速化できるようになることを目標にします。「Ruby メモ化 とは」で調べている方向けの内容です。
メモ化は、一度計算した結果を「保管箱」に保存しておき、同じ入力が来たら計算し直さずに保管箱から取り出すテクニックです。「毎回同じ質問をされたら、覚えておいた答えをそのまま返す」ようなイメージです。
サンプルコードでは、cacheというハッシュを保管箱として使い、slow_squareメソッドの中でcache.key?(n)によって「すでに計算済みか」をチェックしています。すでに計算済みならキャッシュから即座に値を返し、まだなら計算してから結果をキャッシュに保存しています。
初心者がよくつまずくのが、キャッシュを引数として明示的に渡す設計です。この例ではキャッシュをメソッドの外に用意し、引数として渡すことで、メソッドの外側の状態を安全に扱っています。グローバル変数を使わない、より安全な設計と言えます。
メモリを多く使う代わりに計算時間を節約する、という典型的な「時間とメモリのトレードオフ」の例でもあります。特に再帰的な計算やAPIの呼び出し結果をキャッシュする場面で、体感できる速度改善が得られます。
📖 お手本コード
✍️ あなたのコード
コードを書いたら「実行する」を押してください
🧪 このサイトではRubyを直接コンパイル・実行できないため、お手本コードと同じ内容を入力できたかをその場で判定します(採点はブラウザ内だけで行われ、どこにも送信されません)。
🎯
ここまでできればゴール達成!
同じ計算を繰り返さない、高速な処理が作れるようになります。
同じ計算を繰り返さない、高速な処理が作れるようになります。
広告スペース(バナー)
広告スペース(記事内)