パターン(オブザーバ・パターン)とは、プログラム内のオブジェクトの状態を観察(observe)するようなプログラムで使われるデザインパターンの一種。出版-購読型モデルとも呼ばれる。暗黙的呼び出しの原則と関係が深い。分散イベント処理システムの実装に主に使われる。言語によっては、このパターンで扱われる問題は言語が持つイベント処理構文で処理される。リアルタイムのアプリケーション配置の手段として興味深い機能である。クラス図このパターンの基本は、(オブザーバまたはリスナーと呼ばれる)1つ以上のオブジェクトを、(サブジェクトと呼ばれる)対象オブジェクトが発生するイベントを観察するために登録する。イベントを発生するオブジェクトは一般に複数のオブザーバを管理する。以下に、その構造をUMLで描いたものを示す。典型的用法ユーザーが何らかの操作をするなどの外部イベントを待つ。イベント駆動型プログラミング参照。あるオブジェクトの属性値の変化を待つ。複数の属性値の変化でコールバック関数を呼び出すようにしているとイベントの連鎖的発生を引き起こす。メーリングリストで、何らかのイベント(新製品情報など)があったとき、購読者リストに登録している人にメッセージを送る。パラダイムの実装に使われることも多い。通常、モデルの変化を引き金として、ビュー(オブザーバ)にそれを通知する。MVC)は、コンピュータ内部のデータをユーザに提示し、それに対してユーザが何らかの指示を出すタイプの、独自のユーザーインタフェースをもつアプリケーションソフトウェアを、以下に述べるようなmodel・view・controllerの3つの部分に分割して設計・実装するという技法、又はそのような構造をいう。パターンなど)を利用して実装されることが多いところからすると、デザインパターンというより、さらに粒度の大きい1種のソフトウェアアーキテクチャという方が適当であろう[1][2]。部分を別のモジュールに取り替えることが容易となるのが利点である。自動プログラミングなどにも適している。もつソフトウェアにおける有用性から他方面へ広がった。MVCの構造MVCでは、プログラムを3つの要素、Model(モデル)、View(ビュー)、Controller(コントローラ)に分割する。ショッピングの合計額や送料を計算するなど)を表現する要素である。パターンが用いられることもある)。多くのアプリケーションではデータの格納に永続的な記憶の仕組み(データベースなど)が使われている。MVCの概念では、データの(UI以外の)入出力は取り扱わないので、データアクセスも本来MVCの概念の範疇を超えるものではあるが、敢えていえばmodelの中に隠蔽されると考えられる。modelのデータを取り出してユーザが見るのに適した形で表示する要素である。UIへの出力を担当する。ウェブアプリケーションではHTML文書を生成して動的にデータを表示するためのコードなどにあたる。ユーザの入力(通常イベントとして通知される)に対して応答し、それを処理する要素である。UIからの入力を担当する。modelとviewに変更を引き起こす場合もあるが、直接に描画を行ったり、modelの内部データを直接操作したりはしない。UIにおける入力と出力は本質的には不可分なものであり、したがってviewとcontrollerはいつでも分離できるとは限らない。このようなM-VCとなるような構造を拡張MVCと呼ぶことがある。MVCのシナリオMVCの実装は様々であるが、制御フローは一般的に次のようになる。1.ユーザがユーザインタフェースを通してviewに入力する(ボタンを押すなど)。2.controllerがviewからの入力イベントを処理する。controllerは登録されているイベントハンドラやコールバックを通して呼ばれることが多い。3.controllerがユーザのアクションに応じてmodelのメソッドを呼ぶ。その結果modelのデータ(例えば、ショッピングカートの中身など)が書き換えられることもある[3]。4.viewがmodelから関連するデータを取得し、出力を更新する。ショッピングカートの中身の表示を更新する。5.viewがユーザの次の操作を待つ。始めに戻って、新しいサイクルに入る。0:25Webテンプレートは、ウェブデザインにおいてコンテンツと見た目を分離し、Webドキュメントを大量生産するためのツールである。Webテンプレートシステムの基本概念である。Webデザインテンプレート、ホームページテンプレートとも。Webテンプレートはどんなタイプのウェブサイトでも使える。簡単に言えば、Webテンプレートはウェブサイト設定時のテンプレートである。Webテンプレートは個人や組織がウェブサイトを構築する際に利用できる。テンプレートを購入またはダウンロードすると、ユーザーはWebテンプレートに含まれるジェネリックな情報を置換し、その個人や組織(あるいは製品)に対応した内容にする。テンプレートは次のような場面で使える。ブログで、個人情報や日々の活動を表示する。企業や団体に関する情報を表示する。家族の歴史を表示する。フォトギャラリーを表示する。ウェブブラウザ上で演奏されるよう、MP3などの音楽ファイルを置く。動画ファイルを公開する。オンラインでのプライベートなログイン領域を設定する。効率的な分離ウェブ開発経験者の共通の目標の1つは、柔軟かつメンテナンスの容易なアプリケーションを開発し広めることである。この目標を達成するために考慮すべき重要な考え方として、ビジネスロジックとプレゼンテーションロジックの分離がある[1]。開発者はこの分離を行うためにWebテンプレートシステムを何らかの形で使う[1]。この分離を評価する際の困難さとして、その定式化された尺度が存在しないという問題がある[1]。ソフトウェア工学の領域から借用した標準的ヒューリスティックが存在する。(オブジェクト指向プログラミングの原理に基づく)「継承」、(MVC分離の原則に対応した)「テンプレートエンジンと自動プログラミング」がある[2]。各種ガイドラインの違いや、異なるガイドライン間の類似性は議論の的となっている[3]。「効率的な分離」の背景にある主要な論理的根拠として、プレゼンテーションロジックに特化したコードとリソースにおける柔軟性を最大化する必要性がある[2]。クライアントの要求、顧客の嗜好の変化、常に新鮮な見せ方をしたいという要望などにより、Webコンテンツの見せ方はしばしば劇的に変更する必要があるが、その際に根底にある基盤にはなるべく影響を与えないのが好ましい。「プレゼンテーション(フロントエンド)」と「ビジネスロジック(基盤)」の区別は、以下のような理由で重要である。プレゼンテーションのソースコード言語は他のコード資産とは違うかもしれない。アプリケーション製造工程は、違った時間や場所で行われる必要があるかもしれない。労働者にはそれぞれ独自のスキルがあり、プレゼンテーションのスキルとビジネスロジックをコーディングするスキルは共存するとは限らない。コード資産は、異質なコンポーネントが分離され結合度が弱いほど、管理しやすく読みやすい[2]。再利用可能性Webテンプレートの潜在的利用者の全てが、その必要性に合ったシステムを設計する開発者を雇えるわけではない。中には、Webを使いたくても技術を(ほとんど)持たない人もいる。そこで、複数の開発者やベンダーが技術を持たない人々のための再利用可能なWebテンプレートをリリースしている。Webテンプレートの再利用可能性は高いスキルや技術を持った開発者にも重要である。単純で既製のWebソリューションを求めている人には重要と言える。そのような既製のWebテンプレートはフリーなものもあるし、個人が容易に作成できる場合もある。特殊なWebテンプレートはオンラインで販売されている場合もある。ライセンス料を徴収する商用サイトも多数存在するが、フリーで「オープンソース」のサイトももちろん存在する。