• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:&tag(コード,目次);

実現可能性を確かめるための曳光弾。

#ls

----------

#contents

**プロトタイピング [#k2612436]
モノ
-クエリー(ユーザーから与えられたデータ)
グローバルなデータ。なのでシングルトン。Componentが書き変えられることがある。その場合、以降のComponentに影響する。
-モデル、WikiEngine(Pageくらいしかクラスがない)
クエリーからの入力。形式自由・クラスごとの独自形式。
フレームワーク/WikiEngineのクラス名はX。

**やること~プロトタイピング02より [#p9f54e76]
-自動リンク
-プラグイン/API、[[DOMアクセス>ページ#f41cecab]]


-プラグイン/APIと[[DOMアクセス>ページ#f41cecab]]
**クラス [#g839899e]
→[[クラス]]

-Element
フレームワーク/WebアプリケーションのComponentにあたる。


クラス名は…
View::ユースケース名::リクエスト名、Control::ユースケース名
***図 [#a068f061]
#ref(http://dl.dropbox.com/u/2267619/wiki/wiki/%E3%82%AF%E3%83%A9%E3%82%B9%E5%9B%B3%20%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B003%20Web%E3%82%A2%E3%83%97%E3%83%AA%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%E9%83%A8%E5%88%86.png,,75%)


#ref(http://dl.dropbox.com/u/2267619/wiki/wiki/%E3%82%AF%E3%83%A9%E3%82%B9%E5%9B%B3%20%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B003%20X.png,,75%)
**フレームワーク間の関係 [#d19defef]
HTMLを要求するのはフレームワーク/Webアプリケーションのほう。
WebアプリケーションはWikiEngineを3回呼ぶ。
+エントリーポイント
+フレームワーク/Webアプリケーション
Xオブジェクトを生成。
+フレームワーク/WikiEngine
Xオブジェクトを作る(だけ)。
+フレームワーク/Webアプリケーション
Xオブジェクトにリクエストを伝える(そのまま渡すのではなく、変数の形で)
+フレームワーク/WikiEngine
自身の状態を変化させる。状態は永続化する。
+フレームワーク/Webアプリケーション
XにHTMLを要求。
+フレームワーク/WikiEngine
HTMLを生成。
+フレームワーク/Webアプリケーション
HTMLにヘッダーを付けてWebページ化。
**変換 [#ne7b9a2a]
-WikiTextのオブジェクト化
-Elementから(HTMLなどの)別形式を得る
HTMLならrender()というメソッド。

**Wiki、Entry、View、Revision [#u7d37135]
-Wiki(サイト)
-Entry(項目)
-View(見解)
-Revision(版)

''いずれもPageクラスのインスタンス名。''


**エラーレベル [#t6bc1961]
-利用者向け情報 Info
不正なリクエストなど。ページのメッセージ欄に出力。
[[X/Error/Info]]
-警告 Warning
デバッグ用ログ出力と管理者グループ宛メールに出力。
処理続行。
[[X/Error/Warning]]
-致命的エラー Fatal
処理中断。
開発時のアサーション違反はエラー、運用中は警告だけ。
[[X/Error/Fatal]]


**排他制御 [#q6171bfe]
更新コマンドのキューイング。
キューと要素の関係。
キュー→ファイル(名前順)
要素→永続化されたCommandオブジェクト。
ファイルロックは…PageFactoryが永続化されたオブジェクトを復帰/保存するときと、オブジェクトが自身の関連ファイル(他のオブジェクトの所有物でないファイル)を操作するときくらい。
モデル系クラスでは自分で自身を書き換える。他のクラスを扱うのはPageFactoryくらい。


**Componentの使い方 [#n24f2fd9]
-WikiEngine(の代表的なクラス)を1つのComponentにする
WikiEngine内部ではクラス間はWikiNotationで関連するので。似ているけど別の仕組み。
UsecaseやRequest、Query(検索/クエリーではない)もWikiEngineの一部。Componentの<<control>>や<<model>>部分になる。
WikiEngineの全クラスをComponentにしなくていい。フレームワーク/Webアプリケーションと関わりのあるクラスだけComponentを継承。
-サイトのグローバルナビを1つのComponentにする