制御の反転
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/12/15 06:28 UTC 版)
コンピュータプログラミングの用語で制御の反転(Inversion of Control、IoC)とは、なんらかの種類のプログラムにおいて、プロシージャを「呼び出す側」と「呼び出される側」が、従来のプログラムとは逆になるようにする、ということである。たとえば従来の、シェルのコマンドで実行される古典的なアプリケーションではメインループが最上位で動いており、そこからライブラリなどのAPIを呼ぶのに対し、ウェブブラウザ中で実行されるJavaScriptアプリケーションでは、各種のハンドラがブラウザから呼ばれてアプリケーションが動く、というのも大きく見ればそのような「反転」の一種と言える。これが使われる一例としては、プログラムのモジュール化を促進して、その拡張性を高めるために用いられている [1]。用語として Inversion of Control を略した IoC を広めたのはロバート・マーティンとマーティン・ファウラーらである。IoC は彼らの「依存性反転原則」とは関係しているが異なるものである。依存性反転原則は、共有された抽象化を通じて、高次と低次の抽象化レイヤー間の結合度を下げることを示している。従来からのプログラミングでは、フローはコードの中核部分で制御されている。IoCを使うと、これが全く変わってくる。呼び出し側は応答を得るが、いつどのようにして応答を得るかは呼び出し側が制御できない。逆に呼び出された側がいつどのようにして応えるかを決定する。
- ^ Ralph E. Johnson & Brian Foote (June?July 1988). “Designing Reusable Classes”. Journal of Object-Oriented Programming, Volume 1, Number 2. Department of Computer Science University of Illinois at Urbana-Champaign. pp. 22?35. 2014年4月29日閲覧。
- ^ Dependency Injection.
- ^ エリック・フリーマン、エリザベス・フリーマン、キャシー・シエラ、バート・ベイツ 『Head First デザインパターン』オライリー・ジャパン、2005年、296 - 298頁。ISBN 4-87311-249-4。
- ^ Inversion of Control on Martin Fowler's Bliki - Martin Fowler
- ^ Design pattern – Inversion of control and Dependency injection - Shivprasad Koirala
- ^ Design Better Software with the Inversion of Control Pattern - Mani Malarvannan
- ^ a b The Dependency Inversion principle - Robert C. Martin
- ^ Inversion of Control Containers and the Dependency Injection Pattern - Martin Fowler
- ^ IoC Types
- ^ Tanenbaum, Andrew S. (1979). Structured Computer Organization. Englewood Cliffs, New Jersey: Prentice-Hall. ISBN 0-13-148521-0
- 1 制御の反転とは
- 2 制御の反転の概要
- 3 説明
- 4 例
- 5 脚注
- 制御の反転のページへのリンク