共通ドキュメント

Frameworkの概要

概要

  • フレームワークとは
  • 色々なフレームワーク
  • デザインパターン

フレームワークとは

wikipediaによる定義

ソフトウェアフレームワーク
プログラミングにおいて、ジェネリックな機能を提供する共通コードを特化した機能を提供するユーザーコードで選択的に上書きしたり特殊化したりすることができる抽象化である。
アプリケーションフレームワーク
プログラミングにおいて、特定のオペレーティングシステムのためのアプリケーションの標準構造を実装するのに使われるクラスやライブラリの集まりである。

e-wordsによる定義

フレームワーク

フレームワークとは、枠組み、下部構造、構造、組織という意味の英単語。

ソフトウェアの世界では、アプリケーションソフトを開発する際に頻繁に必要とされる汎用的な機能をまとめて提供し、アプリケーションの土台として機能するソフトウェアのこと。アプリケーションの雛型。開発にフレームワークを利用すると、独自に必要とされる部分だけを開発すれば済むため開発効率の向上が見込める。具体的なソフトウェアだけでなく、汎用的に適用できるプログラムの設計モデルや典型的な処理パターンなどを含めてフレームワークと呼ぶ場合もある。

問題解決のための定義

プログラムの基本構造の定義

例 - コントロールブレーク処理基本構造の定義

  • リストの終わりまで[処理]を実行する
  • 前のブレークキーと現在のブレークキーを比較する
  • ブレークしたときに[処理]を実行する

///コントロールブレーク用リストのアイテムの抽象
abstract class BreakableItem{
	abstract bool KeyEquals(BreakableItem previousItem);
}

///コントロールブレーク処理の抽象
abstract class ControlBreak{
	List items;
	void MainProcess(){
		BreakableItem previousItem = null;
		foreach(BreakableItem item in items){
			//ブレークしたら[処理]を実行
			if(!item.KeyEquals(previousItem)){
				this.OnBreak();
			}
			//明細に対する[処理]
			this.ProcessItem();
			
			previousItem = item;
		}
		//if needed last ??
		if(...){
			OnBreak;
		}
		
	}
	abstract void OnBreak();
	abstract void ProcessItem(BreakableItem item);
}

いろいろなフレームワーク

名前対象言語、環境
MFC(Microsoft Foundation Class)C++
Visual BasicVisual Basic
.Net FrameworkC#,VB,C++,J#,...(.Net環境)
ASP.NetC#,VB,C++,J#,...(.Net環境)
ASP.Net MVCC#,VB,C++,J#,...(.Net環境)
StrutsJAVA(Servlet/JSP)
SpringJAVA
CakePHPPHP
SymfonyPHP
Zend FrameworkPHP
CodeIgniterPHP
Ruby on RailsRuby
DjangoPython
GWTJAVA

デザインパターン

wikipediaによる定義

デザインパターン
過去のソフトウェア設計者が発見し編み出した設計ノウハウを蓄積し、名前をつけ、再利用しやすいように特定の規約に従ってカタログ化したものである。

Gang of Four

GoF(Gang of Four)による23のパターン

  • 生成
  • 構造
  • 振る舞い

その他

ソフトウェアアーキテクチャ
  • クライアントサーバー
  • 三階層モデル
  • MVC
フッター