こんにちは。新人のT.Tです。(泣いてるわけではありません)
皆さんは普段の開発で、ソフトウェアフレームワークを使用されていますでしょうか?
ソフトウェアフレームワークって何?必要であればそんなの自分で作ってるよ。と、人によって解答は様々だと思いますが、私は最近、初めて業務で使用する機会がありましたので簡単に概要をまとめてみました。
フレームワークとは?
フレームワークは、開発・運用・意思決定を行う際に、その基礎となる規則・構造・アイデア・思想などの集合のこと。とあり、ソフトウェア開発においては、効率的な開発の為の枠組みです。フレームワークには大きく分けて次の2種類があります。
- アプリケーションフレームワーク
特定のオペレーティングシステムのためのアプリケーションの標準構造を実装するのに使われるクラスやライブラリの集まり、とあり有名なものでは先ほどのAndroidやCocoa、またRuby on RailsなどのWebアプリケーションフレームワークもこちらに分類されます。一般的にはこちらを指すことが多いかもしれません。
- ソフトウェアフレームワーク
一般的な機能をもつ共通コードをユーザーが選択的に上書きしたり特化させたりすることで、ある特定の機能をもたせようとする抽象概念のこと、とあり、こちらも要はライブラリの集まりと言うことになります。
では、このフレームワークとライブラリの違いはなんでしょうか。
制御の反転
ライブラリは、再利用を目的としてプログラムを部品化した物の集まりで、プログラマのコード上で使われることを目的として作られています。これに対しフレームワークは、アプリケーション設計を再利用することを目的として作られています。アプリケーション設計のテンプレートと言うとわかり易いかもしれません。
このように、ライブラリがプログラマから呼ばれることを目的として作られているのに対し、フレームワークはプログラマのコードがフレームワークから呼び出されることを目的として作られています。従来のプログラマからライブラリを呼び出しライブラリを部品として扱うことに対し、プログラマのコードを部品として扱いフレームワークに主導権があるため、システム制御の流れが逆転していることから、”制御の反転”(Inversion of Control – IoC)と呼ばれています。
メリット/デメリット
続いてフレームワークを使うことで得られるメリット、デメリットを見ていきましょう。
フレームワークのメリット
テンプレートと表現したように、一般的なソフトウェアを作るために必要な枠組みはすでに出来ているため開発コストが下がり、ある程度の品質が保証されます。また、アプリケーション設計、パッケージ構成などの枠組みはすでに出来ており、機能が明確に分離されているため、保守性が上がり、またコードが読みやすくなる、というメリットもあります。
フレームワークのデメリット
上記に挙げたメリットは、フレームワークの構造に沿った作りにしなければ享受することが出来ません。その為、フレームワーク自体を習得するのに大きなコストがかかってしまいます。ただし、一度習得してしまえばそのメリットは多大なものとなることは言うまでもありません。
というわけで、今回はフレームワークの概要について書かせていただきました。
フレームワークについてどういった印象を持たれたでしょうか?実際サンプルを見てみないとよくわからないって?そうですか。そうですね。
ということで、次回はソフトウェアフレームワークを使ったサンプルについて書いていきたいと思います。