----------------------------------------------------------------------------------
【 ソフト名 】　CharcoalPHP
【バージョン】　0.11.0
【 公 開 日 】　2008/11/08
【 製作者名 】　stk2k
【 製作言語 】　PHP
【 配布条件 】　BSDライセンス
【ｿﾌﾄｳｪｱ種別】　オープンソースソフトウェア
----------------------------------------------------------------------------------

■CharcoalPHPについて

CharcoalPHPはPHP5以上で使用可能なWebアプリケーションフレームワークです。CharcoalPHPは以下のようなコンセプトで作られました。

・非MVC！
・プログラマに科す制約が少ない
・分かりやすさを重視することで学習コストが少なくてすむ
・インタフェースによる高度なプラグイン構造
・パフォーマンスはそこそこ
・依存ライブラリが少ない
・PHP5の機能を活用（例外など）
・DIコンテナ／コンポーネント志向

■確認環境

OS          : Windows XP/SP2
Web Server  : Apache 2.2.8(Win32)
Script      : PHP 5.2.5
DB          : MySQL 5.0.51a
              PostgreSQL 8.2.6

■構成

CharcoalPHPは下記の構成で配布されます。

----------------------------------------
・フレームワークコア
・コンポーネントライブラリ
・サンプルアプリケーション
----------------------------------------

≪フレームワークコア≫
　−フレームワークを構成するソース一式です。

≪コンポーネントライブラリ≫
　−CharcoalPHPが提供する基本的なコンポーネントです。本バージョンでは下記が提供されます。
　　−データベースアクセス
　　−ロガー
　　−ページャ
　　−リンク管理
　　−パンくずリスト
　　−メール送信

≪サンプルアプリケーション≫
　−CharcoalPHPの機能を紹介するためのサンプルアプリケーションです。本バージョンでは下記が提供されます。

　　−hello_world　　最小のCharcoalPHPアプリケーション
　　−breadcrumb　　 パンくずリスト／Linkerコンポーネントを利用したサンプル
　　−pear_db　　　　データベースアクセスコンポーネントを利用したサンプル
　　−smarty　　　　 Smartyによるビュー実装
　　−session　　　　セッション処理（本バージョンでは動作しません）
　　−form　　　　　 自動フォーム機能（SmartForm）
　　−shell　　　　　CLI版PHP向けシェルプログラムサンプル
	−module_task　　タスクからモジュールを呼び出すサンプル

■外部ライブラリ

CharcoalPHPはデフォルトでは外部ライブラリに依存しません。しかし幾つかのコンポーネントを使用するには
下記のような外部ライブラリをダウンロードし、インストールする必要があります。

≪フレームワークコア≫
・Spyc（http://spyc.sourceforge.net/）
　−設定プロバイダとしてSpycConfigProviderを指定した場合。デフォルトでは不要
・PEAR::Cache_Lite
　−設定プロバイダとしてCachedSpycConfigProviderを指定した場合。デフォルトでは不要

≪コンポーネントライブラリ≫
・データベースアクセスコンポーネント
　−PEAR::DB
・メール送信コンポーネント
　−PEAR :: Mail
　−PEAR :: Mail_Mime

≪レンダラ≫
・Smarty（http://www.smarty.net/）
　−レンダラとしてSmartyRendererを使用する場合。デフォルトは不要
・PHPTAL（http://phptal.motion-twin.com/）
　−レンダラとしてPHPTALRendererを使用する場合。デフォルトは不要

ライブラリのインストール先はプロファイル設定ファイル内のEXTLIB_DIRエントリで指定することができます。

■特徴

≪フレームワークコア≫
・タスクによる独立性の高いロジック構造
・イベント／タスクによる疑似並行処理
・タスクのFSM（有限状態マシン）機能による画面遷移制御をサポート（本バージョンでは未実装）
・フォーム自動レンダリング（SmartForm＋html_objects）
・テーブルアソシエーションにも対応したORM機能（SmartGateway）
・データソース、SQLビルダによるRDBMS接続プラグイン（現在はMySQLとPostgreSQLのみ）
・レイアウトマネージャによる自由度の高いビュー（本バージョンでは未実装）
・入力／出力フィルタによるデータ変換処理
・クラスローダによるクラスソース自動読み込み機能
・$_SESSIONを意識しないセッション管理機構
・コンポーネントの自動セッション保存／復元機能（sessionスコープ）
・レイアウトマネージャによる自由度の高いビュー
　−デフォルトでSmarty、PHPTALレンダラを搭載（別途ライブラリが必要）


■注意

・CharcoalPHPの文字コードはEUC-JPで記述されています。

■インストール方法

１．アーカイブを解凍
---------------------------------------------------------

charcoalphp-x.x.x.zip（xはバージョン番号）をアーカイバプログラムで解凍してください。

２．Webサーバディレクトリを作成
---------------------------------------------------------

CharcoalPHPアプリケーションを配置するディレクトリを作成します。Webサーバのドキュメントルートディレクトリ以下に適当なディレクトリ（ここではcharcoalとします）を作成してください。

$DocumentRoot/charcoal


３．フレームワークコアクラスを配置
---------------------------------------------------------

１を解凍してできたファイル、ディレクトリをすべて、２で作成したディレクトリ以下にコピーします。


■サンプルアプリケーション

ローカルマシン上にインストールした場合、下記のURLからアクセスできます。

http://localhost/charcoal/public_html/


■免責事項

本本ソフトウェアの利用、改変、再配布は自由ですが、本ソフトウェアを利用、または本ソフトウェアを利用するソフトウェア
の利用により生じたいかなる損害についても保証はいたしかねます。


■今後の予定

≪フレームワークコア≫
　−Webフロー機能の実装
　−バリデーション機能の実装
　−フォーム機能の実装                   (済)
　−多言語化（i18n）対応
　−セッション管理方法のプラグイン化     (済)
　−２重投稿防止トークン
　−一連処理（シーケンス）の実相
　−CLI対応                              (済)
　−CSML(CharcoalScreenMarkupLanguage／仮）対応
　−フレームワーク標準テンプレートシステム
　−AJAX対応（ウィジェット）
　−設定ファイルのフォーマット変更（Javaプロパティファイル形式）        (済)
　−タスクからのモジュール呼び出し        (済)

≪コンポーネントライブラリ≫
　−データベースアクセスコンポーネント
　　−MySQL以外のDBへの対応                     (済)
　　−ADOdb／PDOの検討
　　−O/Rマッピング                             (済)
　　−DBクラスの複数テーブル（JOIN）対応        (済)
　−メール送信コンポーネント
　　−添付ファイル対応

≪その他≫
　−Scaffolding機能
　−パフォーマンスチューニング

■変更履歴

2008-11-08 ver.0.11.0

　◆仕様変更／機能追加
　　−[all] ログ出力関数(log_XXX)のファイルパスと行番号に関する引数が削除されました。
　　−[all] 外部ライブラリパス定数（EXTLIB_DIR）が複数指定可能（カンマ区切り）になりました。
　　−[task] 複数リクエストに渡って情報を保持化のなステートフルタスクが実装されました。ステートフルタスクはIStatefulインタフェースを実装する
　　　　必要があります。IStatefulインタフェースは以下のメソッドで構成されています。
　　　　　−serializeContents()：　タスクが保存される時に呼び出され、シリアライズデータを返却します。
　　　　　−deserializeContents()：　タスクが復元される時に呼び出され、引数としてデシリアライズデータを受け取ります。

2008-10-11 ver.0.10.0

　◆仕様変更／機能追加
　　−[base] 連想配列をラップするハッシュマップクラス（HashMap）を追加しました。これに伴い、いくつかのVectorクラスのメソッドが変更されています。
　　−[base] Objectクラスにプロパティ操作関連のメソッドを追加しました。
　　−[core] ファイル操作を行うFileクラスを追加しました。
　　−[core] 実行中以外のタスクのプロパティ値を保持するTaskSnapshotクラスを追加しました。getメソッドに「(オブジェクト名).(プロパティ名)」の文字列
　　　　を渡すことで直前の他のタスク状態を取得することが出来ます。
　　−[core/SmartGateway] テーブルモデルを指定する引数をITable型からモデル名をあらわす文字列型に変更しました。
　　−[core/SmartGateway] find系メソッドが返す配列をarray型からVector型に変更しました。
　　−[core/System] 変数をダンプするメソッドをすべてdump()メソッドに統合しました。
　　−[core/System] 配列・オブジェクトを再帰的にエンコード変換するメソッドconvertEncodingRecursive()を追加しました。
　　−[interface] ドメインモデルを定義するインタフェース「IDomainModel」を追加しました。
　　−[interface/IFormModel] フォームのaction属性にアクセスするgetAction()/setAction()メソッドを追加しました。
　　−[interface/IFormModel] フォーム固有のDTOを生成するcreateDTO()メソッドを追加しました。
　　−[interface/ITableModel] フォーム固有のDTOを生成するcreateDTO()メソッドを追加しました。
　　−[task] ドメインモデルを扱うタスク「DomainModelTask」クラスを追加しました。
　　−[domein_model] デフォルトのドメインモデルを実装する「DefaultDomainModel」クラスを追加しました。

2008-10-05 ver.0.9.0

　◆仕様変更／機能追加

　　−[core] Factoryクラスにユーザイベントを作成するメソッドcreateUserEvent()を追加しました。
　　−[interface] ITaskインタフェースにガード条件を取得するgetGuardConditions()とイベントフィルタを取得するgetEventFilters()、および
　　　　ポストアクションを取得するgetPostActions()メソッドを追加しました。
　　−イベントディスパッチの方法が変わりました。最初にプロシージャのtasksエントリの順にhttp_requestシステムイベントが配信されます。
　　　　このとき、タスク内のproccessEventメソッド内でユーザイベントを作成し、返り値として指定するとそのイベントがイベントキューに登録
　　　　されます。タスクマネージャはイベントがキューにある間、登録されている各タスクにイベントを配信し続けようとします。タスク側では
　　　　設定ファイルにevent_filtersを指定することで受け入れ可能なイベント名を指定することができ、guard_conditionsを指定することで
　　　　他のタスクの状態によって処理の可否を指定できます。guard_conditionsの書式は以下の通りです。

　　　　guard_conditions.(タスク名).(プロパティ名) = (型):(値)

　　　　　型：　i => 整数    b => ブール値    s => 文字列値    (省略) => 文字列値

　　　　また同様にタスク設定にpost_actions.(イベント名)を指定するとprocessEventの処理後に行うポストアクションを指定できます。指定可能
　　　　な値は、remove_task/remove_event で、それぞれ実行中のタスクとイベントを削除します。
　　　　デフォルトのタスクマネージャはイベントキューが空になるか、タスクリストが空になるまでイベントループを実行します。

　　　　　−イベントキューが空になる
　　　　　−タスクリストが空になる
　　　　　−イベントループ実行カウンタがプロファイル設定値TM_MAX_EVENT_LOOPで指定される最大イベントループ実行数を超えた場合（デフォルトは100回）
　　　　　−イベントループ実行時間がプロファイル設定値TM_MAX_EVENT_TIMEで指定される最大実行時間を超えた場合（デフォルトは10秒）

　　−[logger] ログ文字列をコンソールに出力するConsoleLoggerを追加しました。

2008-09-28 ver.0.8.0

　◆仕様変更／機能追加

　【コア】
　　−≪全体≫大部分の関数、およびメソッド引数の引数にString/Integer/Vector/BooleanのTypeHintを追加しました。ネイティブ型（string/
　　　array/boolean）からの変換はそれぞれs/i/v/b関数が使用できます。
　　−≪全体≫プロシージャコンテキスト（ProcedureContext）は削除されました。プロシージャコンテキスト経由で取得していたオブジェクト
　　　（フォーム、DBなど）はTaskから取得してください（タスク実装クラスでDatabaseTask、FormTask等の継承が必要）。
　　−≪セッション≫セッション機能は廃止されました。次期バージョンでセッション機能の代わりにタスクの永続化機能が実装される予定です。
　　−≪タスク≫processEventメソッドではIEvent実装クラスまたはBooleanのインスタンスを返却するように仕様変更しました。IEvent実装クラス
　　　のインスタンスを返却した場合はそれがイベントキューに再投入され、Booleanクラスのインスタンスを返却した場合はタスクに送信された
　　　イベントがprocessEventメソッド内で処理されたかどうかを表すフラグとして機能します。
　　−≪base≫配列／連想配列を扱うクラスVectorを追加
　　−≪base≫キュー構造を扱うクラスQueueを追加
　　−≪base≫Objectクラスにequalsメソッド、およびisInstanceOfメソッドを追加
　　−≪base≫CharcoalExceptionクラスに例外を識別するためのhashCodeメソッドを追加（オブジェクトと区別するためIDの最初「E」を付与）
　　−≪charcoal.inc.php≫_throw関数を追加、throwの代わりに使うことでスロー時のトレースが可能になりました。このトレース機能はcharcoal.inc.phpの
　　　ENABLE_INTERNAL_EXCEPTION_TRACEオプションでON/OFFが可能です。
　　−≪charcoal.inc.php≫_catch関数を追加、catch節の中で使うことで例外捕捉時のトレースが可能になりました。このトレース機能はcharcoal.inc.phpの
　　　ENABLE_INTERNAL_EXCEPTION_TRACEオプションでON/OFFが可能です。
　　−≪class_loader≫ユーザ定義クラスローダ用の基本クラスUserClassLoaderクラスを追加しました。
　　−≪エラー画面≫例外スタックの表示位置を調整しました。
　　−リソースおよびリソースキャッシュ関連のクラスを削除しました。
　　−≪ログ≫Profile#load()でロードされた内容をダンプするためにログ識別子「profile」が追加されました。profileログを出力するためにはプロファイル
　　　設定ファイルのLOG_LOGGERSエントリに「profile」を追加してください。
　　−≪ログ≫タスクおよびイベントの挙動をモニタするためにログ識別子「event」が追加されました。eventログを出力するためにはプロファイル
　　　設定ファイルのLOG_LOGGERSエントリに「event」を追加してください。


　◆バグ修正

　【コア】
　　−Config#getArray()で要素前後の空白文字を削除するよう変更しました。


2008-09-18 ver.0.7.0

　◆仕様変更／機能追加

　【コア】
　　−LayoutManagerの名称をPageSelectorに変更しました（インタフェースも一部変更）。
　　　−ページセレクタはタスクの状態を判断してページを選択したり、ビューに必要な情報をタスクから取得してセットします。
　　　−Smartyレンダラ（SmartyRenderer）をページセレクタに対応させました。
　　−DBクラスの名称をSmartGatewayに変更しました。
　　−Stringクラスにequalsメソッドを追加しました。
　　−IDataSourceに下記のメソッドを追加しました。
　　　− 接続先サーバを取得（getServer)
　　　− 接続ユーザ名を取得（getUser）
　　　− 接続パスワードを取得（getPassword）
　　　− 接続先データベース名を取得（getDatabaseName）
　　　− 接続時の文字コードを取得（getCharacterSet）
　　　− 接続を切断する（disconnect）

　　−一部のメソッド引数のうち文字列を渡すことがわかっているものについて、TypeHintを追加しました（Stringクラス）。
　　　−同様に、文字列を返すメソッドについてはStringオブジェクトを返すようにしました。
　　−例外発生時、例外スタックへ追加するタイミングを変更しました（catch節→例外生成時）。これにより、エラー画面の例外スタック表示が見やすくなりました。

2008-09-08 ver.0.6.0

　◆仕様変更／機能追加

　【コア】
　　−実行速度が大幅に向上しました。
　　−設定ファイル関係
　　　−デフォルトをYAMLからJavaプロパティファイル形式（iniファイル）に変更しました。
　　　−システム設定ファイルをアプリケーション設定ファイルでオーバロードできるようにしました。
　　−デバッグ関係
　　　−例外スタック（ExceptionStack）クラスを実装しました。
　　　−ポップアップするスクリーンロガー（PopupScreenLogger）クラスを実装しました。
　　−プロファイル関係
　　　−デフォルトで外部ライブラリパスを無効とし、プロファイルに有効化フラグ（USE_EXTLIB）、およびライブラリパス（EXTLIB_DIR）を追加しました。
　　−TypeSafeコーディングのためのプリミティブクラス（Boolean、Integer、String）を導入しました。

2008-07-02 ver.0.5.0

　◆仕様変更／機能追加

　【全体】
　　−クラス名のcharcoalプリフィックスをすべて削除

　【コア】
　　−CHARCOAL_RUNMODEでランモード（下記参照）を指定するようにしました。フロントコントローラ（index.php）の先頭でdefineしてください。
　　　（未定義の場合、UnexpectedRunModeExceptionがスローされます）
　　　−http＝Webアプリケーション
　　　　−最初にロードされるプロファイルのファイル名は「ホスト名.global.ini」
　　　−shell＝シェルアプリケーション
　　　　−最初にロードされるプロファイルのファイル名は「shell.global.ini」（固定）

　　−XxxFactoryクラスをFactoryクラスにまとめました。アプリに影響はありません。

　　−ConfigLoader#loadConfigで先頭がdefault（default.オブジェクト名.yml）のデフォルト定義ファイルを読まないようにしました。混乱を避け
　　　るためと、パフォーマンス向上のためです。

　　−ディスパッチャ、モジュールグラフは廃止され、代わりにタスクマネージャ、タスクが導入されました。

　　−パフォーマンス上ネックになっていたログ出力箇所をいくつか削除または移動しました。

　　−FrameworkClassLoaderを最適化しました。

　　−その他、いくつかパフォーマンスチューニングのためのリファクタリングを行いました。

　◆バグ修正

　【全体】
　　−php.iniのshort_open_tagがtrueだとPHPとして解釈されないソースを修正（ショートタグで記述しているスクリプトがあった）しました。

　◆今後の予定

　　−ProcedureContextはタスク毎のContextとして分離される予定です。
　　−現在Contextからセッションを取得できますが、タスクがスコープ（sessionスコープ）をサポートすれば不要になりますので削除します。
　　−テンプレートにロジックを書かなければならないケースは、CSML（Charcoal Screen Markup Language）で解決する予定です。CSMLコンパイラと
　　　標準のテンプレートエンジンが連携することでテンプレートファイルがより奇麗に記述できます。
　　−タスクの処理を共通化するため、タスクからモジュールを呼び出せるようにします。
　　−WebAPIや外部URL読み込み時にブロックされる時間を短縮するための並行処理をサポートします。
　　−AJAXに対応します。
　　−フォームバリデータ、DBバリデータを実装します。


2008-06-23 ver.0.4.0

　◆仕様変更／機能追加

　【コア】
　　−スクリプトのタイムアウトをプロファイルで指定できるようにしました（SCRIPT_TIMEOUT）。単位は秒、初期値は10分（=600秒）です。
　　　−例）タイムアウト時間を1時間（=3600秒）にする
　　　　　　　SCRIPT_TIMEOUT=3600
　【DB】
　　−テーブルアソシエーション（階層クエリ機能）が追加されました。階層クエリはテーブルモデルに以下の設定を行うことにより、フレーム
　　　ワークにより自動的に処理されます。詳細はサンプルプログラム「pear_db」のソースを参照してください。

　　　−テーブルモデルクラスでのアノテーション指定：

　　　　　var $relation_name    = '@relation @target:[target_model_name] @linkage:[linkage] @extract:[extract]'

            [relation_name]       : 関連名
            [target_model_name]   : 関連先テーブルモデル名（config/table_modelsに定義が必要）
            [linkage]             : リンケージ指定
                                         inner  : 関連元に外部キーがある（デフォルト）
                                         outer  : 関連先に外部キーがある
            [extract]             : フィールド展開方法
                                         array  : 検索結果を配列として、アノテーションの指定対象の属性にセット（デフォルト）
                                         field  : 検索結果の最初のレコードを、展開用フィールドに展開

　　　−テーブルモデルクラスでの展開フィールド指定：

　　　　　var $extract_field    = '@extract @source:[model_name]/[field_name]'

            [extract_field]       : 展開フィールド名
            [model_name]          : 展開元テーブルモデル名（config/table_modelsに定義が必要）
            [field_name]          : 展開元フィールド名


2008-06-02 ver.0.3.2

　◆仕様変更／機能追加

　【コア】
　　−タイムゾーンをプロファイルで指定できるようにしました（DEFAULT_TIMEZONE)。
　　　−例）　DEFAULT_TIMEZONE=Asia/Tokyo
　【エラードキュメント】
　　−エラードキュメントのファイル名を固定に変更（ステータスコード + .tml）
　　　−例）　404.html
　【DB】
　　−queryメソッドで文字エンコーディングを自動変換するオプションを追加
　【エラー表示】
　　−引数がクラスのときクラス名が正しく表示されない不具合を修正
　　−バックトレースが関数の場合に対応
　【ログ】
　　−ログにレベル（F/E/W/I/D/T）を出力するように修正
　【フォーム】
　　−フォームモデルのアノテーション「@value:%DTO_VALUE%」を廃止、デフォルトでDTO値をセットするように変更
　　−選択リスト取得メソッド（IFormMode#getChoiceList）の引数にProcedureContextを追加
　　−フォームモデルアノテーションに「@hidden」を追加
　　　−@hiddenを指定されたフィールドはHTMLレンダリング時に<input type="hidden">を出力する

　◆バグ修正

　【エラードキュメント】
　　−エラードキュメントのディレクトリ配置が間違っていたのを修正

2008-05-30 ver.0.3.1

　◆仕様変更／機能追加

　【設定ファイル】
　　−CharcoalPHPが提供するデフォルト実装の設定ファイルに関してはweb_app以下にコピーする必要がなくなりました。
　　　−フレームワーク提供クラスのカテゴリ
　　　　−data_sources
　　　　　−pear_db
　　　　−dispatchers
　　　　　−simple_dispatcher
　　　　−filters
　　　　　−encoding_output
　　　　−loggers
　　　　　−app
　　　　　−debug
　　　　　−sql
　　　　　−system
　　　　−renderers
　　　　　−smarty
　　　　−session_handlers
　　　　　−default_session_handler
　　　　−sql_builders
　　　　　−mysql
　　　　−transformers
　　　　　−simple_transformer
　【DB】
　　−find系メソッドは配列の配列を返していたが、charcoal_DTOオブジェクトの配列を返すように変更しました。
　【フォーム】
　　−入力時と出力時に違うフォームを扱うケースなどを考慮し、ProcedureContext経由での取得（$context->form）をやめ、getFormメソッド
　　で動的に取得する方法（ProcedureContext#getForm）に変更しました。
　　−フォームモデルでfieldレベルでパネル定義しなくても動的に作成するよう変更しました。
　【モジュール】
　　−IModule::executeに引数actionを追加しました。actionを判定することで複数のモジュールを１つにまとめることができるようになりました。
　　　−例）
　　　　　　ShouhinAddModule/ShouhinDelModule/ShouhinUpdateModule ===> ShouhinModule
　【デバッグ】
　　−エラー一覧画面でメソッドの引数名、型、デフォルト値まで参照できるようになりました。

　◆バグ修正

　【セッション】
　　−charcoal_Session#removeで消したデータが_SESSIONに保存されてしまうバグを修正

2008-05-27 ver.0.3.0-alpha

　【DB】
　　−DataModelをTableModelに名称変更
　【フォーム】
　　−フォームモデルを実装(/core/form_models）
　　−HTMLObjectを実装(/core/html_objects）
　　−DTOトランスフォーマを実装（/core/transformers）
　【セッション】
　　−セッションハンドラを実装(/core/session_handlers）、セッション機構をプラグイン化
　【URLマッピング】
　　−URLマッパを実装（/core/url_mappers）、静的URL（mod_rewite）に対応

2008-05-18 ver.0.2.0-alpha

　−配列アクセス時のE_NOTICEを解消
　−Requestクラスの内部でGETとPOSTのデータを分けて管理するように変更
　　−GETパラメータのみ取り出したいときは以下のようにする。
　　　　　　$data = $request->get( $key, charcoal_Request::TYPE_GET );
　−クラスローダとセッション処理をModuleGraphProcedure$execute()からFramework#run()に移動
　−EncodingConverterクラスにfromStringメソッドを追加。合わせてコンストラクタはprivateに変更
　−DBコンポーネント（db:DataGateway）を削除、charcoal_DBクラスを追加（$context->dbで取得可能）。
　　−SQLビルダを追加〜RDBMSごとにSQLを生成するクラスを定義可能にした（sql_buildersに配置）
　　−データソースを追加〜データベースアクセスライブラリごとにDB接続／処理を行うクラスを定義可能にした（data_sourcesに配置）
　　　−データベースの接続設定はデータソース設定ファイル（config/data_sources/xxx.data_source.yml）で行う。
　　　　−形式は以下のとおり
　　　　　　−backend: データベースバックエンド。指定の方法はデータソースの実装によります。
　　　　　　−user: データベース接続ユーザ名。
　　　　　　−password: データベース接続パスワード
　　　　　　−server: 接続先サーバ名
　　　　　　−db_name: 接続先データベース名
　　　　　　−charset: 接続時の文字コード

2008-05-14 ver.0.1.0-alpha

　−すべてのクラス名の先頭に「charcoal_」プレフィックスを付与
　−モジュールグラフ設定ファイルのフォーマット変更：「graph_nodes」を追加
　−プロファイル名をグローバルプロファイルの中で変更可能に：　PROFILE_NAMEで指定
　−Configルートにあるproc_list.iniに登録されていないプロシージャ名が指定された場合はエラードキュメントを表示するようにした
　−HttpException例外クラスを追加：　ソース中でステータスコードを引数にHttpException例外を投げることで自動的にエラードキュメントが表示される。
　−ログ出力方法を変更：　ロガーをプラグイン化できるようにした。グローバルプロファイル内で下記のように指定。
　　　−LOG_ENABLED：　ログ機能のON/OFFを指定
　　　−LOG_LEVEL：　ログ出力レベルを指定（F:FATAL E:ERROR W:WARNING I:INFO D:DEBUG T:TRACE）
　　　−LOG_LOGGERS：　ロガー名を指定（カンマ区切りで複数指定可）
　−DBのリスト項目など、頻繁に変化しない項目などのデータをキャッシュする機能を追加（リソースキャッシュ）
　−ModuleContextクラスを改名し、ProcedureContextとした。
　−モジュールグラフからレンダリングへのパラメータ転送をProcedureContextではなくResponseオブジェクトを経由するように変更

2008-04-22 ver.0.0.1-alpha

　−初回リリース

