【せいぎょのはんてん】
制御の反転(IoC) とは?
💡 「自分で呼ぶ」から「呼ばれるのを待つ」へ——主導権の大逆転
📌 このページのポイント
制御の反転って何なの?制御がひっくり返るってこと?
えっ、じゃあ自分で処理の順番を決めなくていいの?
そうだよ。たとえばレストランで考えてみて。自分で料理するのが「通常の制御」、シェフにオーダーして待つのが「制御の反転」。シェフ(フレームワーク)が調理のタイミングも順序も決めて、できたら呼んでくれるんだ。
なるほど!でもどうやって自分の処理をフレームワークに渡すの?
IoCを使うと何がうれしいの?
一番大きいのはテストしやすさと柔軟性だね。部品を差し替えられるから、テスト用のダミーに入れ替えたり、本番とテストで振る舞いを変えたりできる。コードの結合度が下がるから変更にも強くなるよ。
「ハリウッド原則」って聞いたことあるけど、関係あるの?
IoCとDIって同じものなの?
よく混同されるけど違うよ。IoCは「制御の主導権を外部に渡す」という設計原則で、DIはそれを実現する具体的なテクニックの一つ。他にもテンプレートメソッドパターンやイベント駆動もIoCの一種だね。原則と実装手段の関係だよ。
まとめ:ざっくりこれだけ覚えればOK!
「制御の反転」って出てきたら「フレームワークが主導権を握って自分のコードを呼んでくれる仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Inversion of Control」 = 制御の反転
💬 従来はアプリケーションがライブラリを呼んでいたのを「逆転(Inversion)」させるという意味だよ