0Pricing
JavaScript Academy · レッスン

Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善)

Big-Oの感覚を身につけ、ホットパスに注目します。入れ子の走査をSet/Mapに置き換え、繰り返し処理を避け、小さく明快なコードを保ちます。

「Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善)」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJavaScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 JavaScript Academyコースには全3レッスンが含まれています。

全体像

目標: 複雑な理論を使わずに、すぐに改善します。

  • Big-O の感覚: 二重ループを避けます
  • ホットパスとコールドパス: 最も頻繁に実行される処理を最適化します
  • 高速な検索には Set/Map を使います
  • 一度だけ処理することで、結果を再利用します
Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善) — イラスト1

ネストした走査はコストが高い

走査をネストすると処理量が増えます。各 includes が配列をもう一度走査するためです。

// Bad pattern: nested scan for membership (can be ~O(n^2))
const haystack = ["a","b","c","d","e"];
const needles = ["b","e","x"];
const foundSlow = [];

for (const n of needles) {
  // includes scans the array each time
  if (haystack.includes(n)) {
    foundSlow.push(n);
  }
}
console.log("slow found:", foundSlow);
Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善) — イラスト2

メンバーシップ判定に Set を使う

Set を一度作成し、has で高速にメンバーシップを判定します。これにより内側の走査をなくせます。

// Better: build a Set once, then O(1)-ish checks (~O(n) overall)
const fastSet = new Set(haystack);
const foundFast = [];
for (const n of needles) {
  if (fastSet.has(n)) {
    foundFast.push(n);
  }
}
console.log("fast found:", foundFast);
Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善) — イラスト3

件数には Map を使う

Map に件数を保存すると、後で O(1) に近い計算量で読み取れます。配列を再走査して数え直す必要はありません。

// Build a frequency map once instead of scanning many times
const words = ["a","b","a","a","c","b"];
const freq = new Map();

for (const w of words) {
  const old = freq.get(w) || 0;
  freq.set(w, old + 1);
}

console.log("count a:", freq.get("a"));
console.log("count b:", freq.get("b"));
Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善) — イラスト4

一度だけ行う(キャッシュ)

同じ値が繰り返し使われる場合は、結果をキャッシュしてください。初心者にも分かりやすいよう、キャッシュは小さく保ちます。

// Do work once and reuse (tiny cache)
function heavy(x) {
  // pretend heavy math
  return x * x + 1;
}

const cache = new Map();

function heavyCached(x) {
  if (cache.has(x)) return cache.get(x);
  const val = heavy(x);
  cache.set(x, val);
  return val;
}

console.log("first:", heavyCached(5));
console.log("second:", heavyCached(5)); // cached
Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善) — イラスト5

ホットパスに集中する

ホットパス: 何度も実行される処理です(ここを最適化します)。コールドパス: まれにしか実行されないコードです(シンプルに保ちます)。

  • ホットコードから内側のループを取り除きます。
  • 頻繁なメンバーシップ判定や件数集計には Set/Map を使います。
  • 計測は後で行い、まずは分かりやすさを優先します。
Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善) — イラスト6

メンバーシップ最適化クイズ

簡単な確認: ネストした走査を減らします。

Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善) — イラスト7

まとめ

まとめ: ネストした走査を避け、検索と件数集計には Set/Map を使い、処理は一度だけ行います。ホットパスに集中し、コールドコードはシンプルに保ちます。

Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善) — イラスト8

よくある質問

「Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善)」レッスンは無料ですか?

はい。「Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全3レッスンが含まれています。

「Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善)」で何を学びますか?

Big-Oの感覚を身につけ、ホットパスに注目します。入れ子の走査をSet/Mapに置き換え、繰り返し処理を避け、小さく明快なコードを保ちます。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

JavaScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJavaScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/3です。

「Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善)」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJavaScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのJavaScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善)
  2. メモリリークを避ける — クロージャ、タイマー、参照
  3. プロファイリング入門(Node/DevTools) — 小さな計測習慣
← JavaScript Academyに戻る