ウィジェットとは?

「ウィジェット(Widget)」という用語は昔からコンピュータの世界では使われている言葉で、用語の指す対象は様々ですが、
共通して「なんらかの機能をもった部品」という意味で使われています。
最近はMac OSXのデスクトップユーティリティや「Yahoo!ウィジェット」( http://widgets.yahoo.co.jp/ )などと一般的な
用語になりつつありますが、古くは「X Window」のMotifライブラリでボタンやメニューなどの部品の呼び方で使われて
いた記憶があります。

Magic3のコンポーネント部品である「ウィジェット」は、それぞれがブラウザ上で独立的に動作する単体のミニアプリケーションのように
考えられます。
Webサイトにアクセスしたときのブラウザの画面を、機能のまとまり単位で矩形に区切った領域が、
それぞれ独立したアプリケーション的に動作するという考えがMagic3の「ウィジェット」の概念です。
Magic3の「ウィジェット」は、Webブラウザ上で見ると単なる画面上の矩形領域のHTMLです。
ブラウザ上での視覚的な矩形領域と、その領域に関するサーバ側での処理が完全に1つのコンポーネント部品として
パッケージ化されています。
つまり「ウィジェット」は、特定の矩形領域についての、クライアント側とサーバ側の両方の処理を含んだコンポーネント部品です。

Webブラウザからのアクセスで、その画面作成に必要なウィジェットがすべて順番に起動されていきます。
画面は個々の領域のウィジェットの出力を連結した結果として返ります。
「ウィジェット」は画面上に存在している場合のみ、Webサイトの機能として動作します。
視覚的に画面上にウィジェットを載せることによって、Webサイトにそのアプリケーション機能を追加でき、
はずすことによってアプリケーション機能を取り除くといった画面管理機能を用意することによって、
Webアプリケーションの機能の組み込み状況が視覚的にリアルに把握できるようになります。
この作業は、テンプレートウィジェットを配置する方法で行います。(画面の作り方)

個別の「ウィジェット」のサーバ側では、自領域に対するHTMLの生成処理を行います。
サーバ側では、DBとのデータのやり取りしたり、任意の処理をPHPプログラムで行い、HTMLを生成します。
この範囲にはJavascriptも含めることができるので、Ajaxを使ってウィジェット独自にサーバと通信を行うこともできます。
このようにMagic3の「ウィジェット」は、画面の矩形領域を描画するのに必要なリソースやプログラムである、HTML、Javascript、
PHP、CSSなどで構成され、独立したアプリケーションとして動作する部品となっています。
ウィジェットはユニークなウィジェットIDで識別されます。
ファイルシステムから見た場合、それぞれの「ウィジェット」に必要なファイルは単一のディレクトリ以下にすべて格納され、
ディレクトリ名がウィジェットIDになります。(ディレクトリ構成)
このウィジェットディレクトリはディレクトリごとZIP圧縮して、単一ファイルとして配布可能です。
ウィジェット配布パッケージは、Javaで言うところのJARWARファイルのようなパッケージモジュールです。
配布パッケージはMagic3上であれば、どのサイトでもそのまま動作します。

個々のウィジェットの出力の集まりで画面が作成されます。画面生成については、画面の生成方法を参考にしてください。
ウィジェットは、画面の1部分としての起動だけでなく、単独でも起動可能なので、単独で呼び出してRSSやXMLデータを取得する
という使い方も可能です。

ウィジェットは、Magic3上で動作する一般機能だけでなく、管理機能(ウィジェット-管理機能)やインストーラなど
すべての機能がウィジェット化されていて、これらも入れ替え可能な部品となっています。
Magic3を構成する要素は、システムの土台部品であるフレームワークとデザイン部品であるテンプレートと機能部品である
ウィジェット部品の3種類です。これらを動的に自由に組み合わせることで、Magic3のサイトは非常に柔軟性の高い
Webアプリケーションとなります。(Magic3のしくみ)

ウィジェットの表示サイズ

ウィジェットは「ポジションブロック」のある位置ではあればどこにでも、場所に依存せず配置できる仕組みになっています。
1つのページ上に配置できるウィジェットの数に制限はありません。
配置する位置は任意ですが、画面レイアウト上、表示サイズが大きなものと小さなものを 区別しています。
メイン形式のウィジェットは、1つのページに付き1つだけ配置可能です。

その他

  • ウィジェット作成基準
    ウィジェットの仕様は非常にシンプルです。この単純な仕様こそがMagic3の柔軟な汎用性を生み出します。