Webアプリケーションフレームワーク新たな段階へ

まずは、画面の構成の問題から。
Webの画面は年々複雑化する一方です。ほんの数年前までの画面は非常に単純でした。
1つの画面を作るのに、「データ取ってくる」→「データ表示する」の1回の手順だけでほとんど終わっていました。
しかし、今や1つの画面にたくさんの情報が載るようになり、たった1つの画面を作成するのに何度も「データ取ってくる」を
繰り返さなければならなくなりました。
1つの画面の構成は、ヘッダ部やサイド部などの領域を合成し、あたかも小さなHTMLをつなぎ合わせたかのように複雑になりました。
この画面の動きは、複数の領域のミニ画面がそれぞれ独立して動作し、それらの結果を合成したような動きとも考えれます。
ミニ画面がそれぞれ「データ取ってくる」→「データ表示する」を行っています。その結果がブラウザの表示される画面となっています。
画面の構成が細分化された領域の集まりと変化しているのに対して、プログラムの作り方はいまだに
1つの画面全体を作る方法から脱していません。
これはあたかも1本のコンベアラインで様々な種類の製品を完成させるのと同じように見えます。
1本のコンベアだけで製品を作ります。2つ3つの製品を作るのだとしたら、がんばればできるかもしれません。
しかし、もっと製品の種類が増えてくると(画面の構成が複雑になると)、コンベアラインでの処理が複雑になり、
収拾がつかなくなりなります。そして、最終的には破綻します。
では、どうやって解決するか。解決方法は簡単です。コンベアラインの本数を単純に製品単位に増やせばいいだけです。
つまり、画面構成の領域それぞれにコンベアラインを割り当てるのです。
そして、コンベアラインで作成された製品(画面の領域)をつなぎ合わせて、画面を完成させます。
Magic3は、領域を出力する部品(ウィジェット)があり、それらを自由自在に組み合わせて画面を構築する管理システムによって
Webサイトを運営するシステムです。
フレームワーク自体が画面の管理機能をもっています。

次に開発速度の問題です。
今までの既存のフレームワークというものは、ほとんどすべて原始的なフレームワークです。
まず初期状態ではWebサイトを立ち上げることも、運営開始することもできません。フレームワークの文字通りの
「骨組み」だけでまったく何もできないからです。
ここから実際の運営可能なサイトを作り上げるまでには、どれほどの機能を実装が必要でしょうか。
ログイン管理、コンテンツ管理、その他たくさんの最低限の運用管理機能を作りこむだけでも、非常に時間がかかります。
最低3ヶ月はかかるでしょうか。しかも3ヶ月後完成しているかどうか。ひいき目に見ても、成功している可能性が50%くらいでしょうか。
結果は3ヶ月後にしかわからないというのも非常にリスキーです。
できあがったとしても、その後の機能追加には耐えれないしろものとなるでしょう。
なぜなら、ベースとなる基本的な機能自体も、その上でいろいろなアプリケーションを動作させて、改良することが必要だからです。
実際に運用可能な「枯れた」システムになるにはさらに時間がかかるということです。
枯れきるまでには、大きな改良も必要になります。その場合は、全面的に作りなおす必要もある場合もしばしばです。
したがって、今時分3ヶ月もかけて作りこんでやっとサイトとして立ち上がるというのは、パフォーマンスの悪いやり方です。
ベストな方法としては、可能な限りはやく立ち上げて、機能を次々と追加リリースしていく、というのが、
今風で最もパフォーマンスのいいやり方です。
そういった機能の追加的な開発スタイルに既存のフレームワークは対応できません。
運用や、運用をしながらの開発の方法についての視点がまったく欠けているからです。

次世代フレームワーク

今までのWebアプリケーションフレームワークというものは、単にプログラム作りのことだけを考えたものでした。
唯一の判断基準は「開発者にとって作りやすいかどうか」という非常に範囲の狭い考えで成り立っていました。
昔のように、Webサイトの普及度が低く、単調なサイトでも満足されていた時代はそれでも問題ありませんでした。
しかし、現在のように、Webサイトのエンドユーザ向けのニーズが高まり、高機能化が求められ複雑になる一方、
そのような狭い世界の思考では済まない状況になってきました。
つまり、開発者にとってできるだけ作りやすい方法をとったとしても、必要とされるWebサイトは一向に作れない状況が生まれてきています。
フレームワークの設計思想としては、最終的にWebアプリケーションがどのようになるかということが視野に入っていることが絶対的条件です。
フレームワークによって、作ることができるアプリケーションの形がほとんど決まってしまうので、フレームワークには、
どんなアプリケーションが作れるかということがよく考慮されていなければいけません。
作り方について説明する前に、作れるものを明らかにする必要があります。
まさに「下部構造(フレームワーク)が上部構造(アプリケーション)を規定する」の通りです。
Webアプリケーションは、フレームワークという土台の上で動くものであるので、土台自体が単なる「開発者」のための思想ではなく、
Webを使う「エンドユーザ」のための思想を含んでいなければなりません。
エンドユーザにアピールするサイトが構築できるかといった面を考慮したフレームワークである必要があります。
また、これからのフレームワークというものは、Webサイトの運用や機能の更新など運用管理面も標準機能として
サポートしていく必要があります。
Magic3の考える次世代フレームワークとは以下のようなものです。

  • どんな人でも、Webサイト上で自由に表現し、情報発信することを可能にするフレームワーク
  • 初期インストール状態ですでにある程度運用可能な状態である。
  • プログラムを知らない素人でも、Webサイトの構築、運営ができるもの。
  • フレームワーク自体がWebサイトの管理、運用機能をもっている。
  • デザイン面も含め、Webサイトの機能はすべて、プラグインタイプの部品で交換可能である。
  • サイトの管理、コンテンツや機能の更新は、すべてWebブラウザで操作可能である。
  • 分厚いマニュアルを読まなくても、既存のソースコードをぱっと見て、すぐに書き始めることができるもの。
  • 関連したファイルが物理上(ディレクトリ上)近くにまとまっていて、コードの見通しのよいファイル構成
  • 携帯等、様々なデバイスへの対応

Magic3フレームワーク

Magic3はまったく新しいコンセプトを持って生まれたCMSですが、その土台としてのWebアプリケーションフレームワーク自体も
既存のフレームワークという枠を超えて、エンドユーザ向きな要素を多分に含んでいます。
「特別な知識のないエンドユーザでも、Webブラウザだけを使って簡単にアプリケーション機能を構築し、サイトに組み込み、
運用していくことが可能とすること」を目標としています。

画面(ビュー)管理機能を中心として、簡単な操作で、画面上で自由に表現し、自由自在に機能変更ができる
エンドユーザ重視のフレームワークです。(Magic3のしくみ)
以下の特徴があります。

  • オープンソースプロジェクト(GPLv3ライセンス)
  • プラグイン形式で完全に部品化された構成(ウィジェット - 機能部品、テンプレート - デザイン部品)
  • 部品(ウィジェット)を組み合わせるだけで自由自在に任意の機能を持ったWebサイトが構築できる。
  • Webブラウザだけで機能やデザインの入れ替えが瞬時に可能。
  • 部品(ウィジェット)の作成ルールは非常にシンプル。(index.phpから始まるという規定のみ。)
  • 画面デザインやレイアウトもそれ自体独立したプラグイン型テンプレート部品で自由に入れ替え可能。
    Joomlaテンプレートと互換性あり。(テンプレートサンプル)

Magic3モデルイメージ

Magic3は、Webブラウザの画面上の機能を機能別に視覚的な部品(ウィジェット)と見立て、さまざまなウィジェット
組み合わせることによって、画面を構成しています。
Magic3フレームワークのモデルイメージとしては、ウィジェット単位で独立したコンポーネントとして動作し、
単体開発可能な「ウィジェットコンポーネントモデル」を基本にしています。

Magic3_model_image.gif

Magic3基本方針

Magic3の自由自在な動作を実現するために、独自の基本方針を持っています。(フレームワーク基本方針)

現時点での実装済機能

  • DBアクセスクラス(対応DBはPostgreSQL,MySQL) - BaseDbクラス
  • ログ出力機能
  • システム運用ログ機能(運用ログの参照)
  • ユーザWebアクセスログ機能(アクセスログの参照)
  • ログイン管理機能
  • Ajax機能
  • DBでのセッション管理機能
  • バリデート(入力エラーチェック)機能
  • 画面レイアウト(PC用、携帯用)機能
  • ウィジェット(コンポーネント部品)管理機能
  • テンプレート管理機能
  • インストーラ
  • 多言語対応
  • 全データ変更履歴保持
  • SQLスクリプト実行機能
  • Webブラウザ上でのテーブル構築、データ編集機能
  • メール送信機能
  • ヘルプ表示機能
  • JavaScript?管理機能
  • キャッシュ機能
  • SSL機能
  • RSS配信

予定

利用ソフトウェア

Magic3で利用し、フレームワークに組み込んでいるオープンソースの主なライブラリです。

Magic3への道