Posted by s-jack on January 21, 2011 at 10:15am
drupal含め、コンテキストという言葉によく触れるようになりました。
いろいろ辞書を調べて、他のOSSやソフトウェアで考えてみても、いまいちすっきり理解することができません。
コンテキストという意味を、drupalでいう例で、わかりやすく教えていただけませんでしょうか。
よろしくお願いいたします。
drupal含め、コンテキストという言葉によく触れるようになりました。
いろいろ辞書を調べて、他のOSSやソフトウェアで考えてみても、いまいちすっきり理解することができません。
コンテキストという意味を、drupalでいう例で、わかりやすく教えていただけませんでしょうか。
よろしくお願いいたします。
Comments
自分も正しく理解できているかは不明ですが、私なりの考えとし
自分も正しく理解できているかは不明ですが、私なりの考えとして、
コンテキストは「帰納的な定義」だと思います。
Drupalではcontextモジュールという、ブロックを様々な条件から配置、表示を制御するモジュールがあります。
ブロックモジュールのパスとロール権限ではブロック毎にロジックを立てて、条件を書き込んで行きますが(AならばB)
コンテキストモジュールではサイト全体に対して条件を書くだけです。(AだからB)
あるブロックをログイン状態かつフロントページの場合にサイトに表示する際に、
ブロックモジュールでは「ブロック」に対して
フロントページかつログインしているユーザーには見せる。
という考え方で条件を書きますが、
コンテキストモジュールでは「サイト」に対して
フロントページかつログインしているユーザーにはこのブロックを見せる。
という考え方で条件を書きます。
他の例なら、
人が死ぬ死因は突き詰めれば心臓停止か脳停止ですが、
心臓停止した理由(事故?病気?)や背後関係(恨み?偶然?)がコンテキストとも言えるのかなと思います。
背後関係からなんとなく理解できました
背後関係ということ、またwindowsの右クリックがコンテキストメニューということで、なんとなーく理解できました。
自動車事故アイコンを右クリックすると、
原因 - 事故
- 病気
要因 -疲れ
-偶然
みたいに背後関係が現れ
車アイコンをクリックすると
特徴 - セダン
- FF
長所 - 低燃費
- 事由
各アイコンごとに背後関係(環境構成要素)が異なるといったことでしょうか。。。
デザインパターン−ストラテジーバターン
より専門的な話になりますが、ソフトウェアの設計では、インターフェイスと実装を切り分けることによって柔軟かつ再利用可能なソフトにすることができます。ソフトウェア設計方法論のひとつとしてデザインパターンがありますが、そのデザインパターンの Strategy パターンではインターフェイスはそのままで振る舞いを変えるときに実装部分のオブジェクトを「コンテキスト」といってたりしますね。
drush にも $context という変数がガンガン使われているし(偶然今日ソースコードを読んでいて発見)、私のところで開発しているクラウド管理モジュール(http://wiki.openstack.org/web-cloud-management-system)も、Amazon EC2、Eucalyptus、OpenStack nova と、それぞれクラウドはまったく異なるものの、Eucalyptus と OpenStakc nova は Amazon EC2 互換の API (REST コールの仕様が EC2 と同じ)なので、まずは AWS の API をサポートするモジュールを作ってその中で $cloud_context 変数の中身に呼び出し元が EC2 の場合は amazon_ec2、Eucalyptus の場合は eucalyptus、そして OpenStack の場合は openstack_nova という文字列を与えることによって1つのモジュールで3つのクラウドに対応させていてます。
コンテキストは日本語で「文脈」と訳されますが、ソフトウェア開発の場合は状況に応じて振る舞い(アルゴリズム)を変えたりするという意味に使われるのだと捉えています。
ウィキペディアで Strategy パターンを調べてみると、context クラスで説明されていることがわかります。
http://ja.wikipedia.org/wiki/Strategy_パターン
ソフトウェア技術者(アーキテクト)であれば、これはもはや必須というか当然知っておかなければならないパターンのはず。
--- yas
@yasさん オブジェクト指向、デザインパターンでの解説あ
@yasさん
オブジェクト指向、デザインパターンでの解説ありがとうございました。
Strategyパーターンではもろに使われているようですね。
私は仕事も頭も文系でプログラマーではないのですが、phpには興味があって、最近のCMSはオブジェクト指向を理解できないと、ソースを見てもわけわからないため、オブジェクト指向の書籍を複数買って読んでいます。
・PHPによるデザインパターン入門
・デザインパターンとともに学ぶオブジェクト指向のこころ (Software patterns series)
なかなか各デザインパターンも頭に入らないわけですが、Strategyパターンに絞ってよくよく理解してみようと思います。
contextという言葉は、日本語で理解するのがほんとムズカしい言葉です。。。。