→フレームワーク/WikiEngine
ここで作っているWikiシステム(WikiEngineまたはWikiソフトウェアと呼ばれるもの)。
フレームワーク/WikiEngine
現在考案中のWikiEngineについて。
- フレームワーク/WikiEngineでやること
- クラス設計→X
- フレームワーク/Webアプリケーションはもう一つのフレームワーク
WikiEngineとは †
Xのシステム部分。(サイトとしてのWikiは半分が利用者のアイデア次第)
キーワード:WikiEngine
キーワード:Wiki OR ウィキ
利用者から与えられたデータをページ化して保存するもの。
利用者からの要求に応じてページを切ったり貼ったり整形してから見せる。
ユーザーとページ/要素をつなぐもの。それとページ/要素の動作環境の提供も。
呼び出し順序…
認証について †
利用者認証とID取得はフレームワーク/Webアプリケーション。
利用者IDを利用して、実用的な利用者情報を利用可能にするのはフレームワーク/WikiEngine。
WikiEngine/ †
クラス構造 †
Actor †
リクエスト送信。PageNameとかUsecaseNameとかStepNameとかViewNameとか含む。
→fw/Web→fw/Wiki→Usecase
X †
フレームワーク/WikiEngineの実装。
X/Usecase[?] †
プラグイン。
コントロールクラス。
WikiEngineから呼ばれる。リクエスト毎に別クラス。
MediaWikiの'Action'、PukiWikiの'cmd'にあたるものと一対一対応。
→User
X/User[?] †
利用者。
ページを扱うクラス。Userが扱うページを特に「利用者ページ」と呼んでおく。権限情報が書かれているので特殊。
データはページ化されているので、このクラスが無くても読み/書きできる。書くのは利用者。
存在意義が薄い。ただ利用者ページにデータアクセスするラッパーでしかない。
- 鍵←UserID
→Page
X/Page[?] †
Wikiのデータを保存するもの。
利用者が手作業で書く。どういう記法を使うかでデータアクセス時の反応が違う。
属性を持つ。
URIでプラグインを呼んだときは仮のページ。その場合でも流れは同じ。
→ Pages/Name
→ PageElement(記法に書かれると呼ばれる)
- 永続化
- FlyweightFactoryでインスタンス生成
- コンストラクターは非公開
X/Pages/Name[?] †
ページ名。ValueObjectにするのが自然。
Page.rename(new Name(...)) ページ名を変更するときはNameインスタンスを作り直す。 ページ名変更時にやることがあるならrename()でできる。
X/Pages/Property[?] †
ページ/属性。
属性/継承を行なう。
X/Pages/ShadowProperty[?] †
ページ/裏。
X/永続化[?] †
ページ以外も永続化。
データストアにはファイルシステム(flat files)使用。
- Page←PageName
- PageProperty←PageName
- Session←SessionID
X/Element[?] †
ページの構成要素。
記法から生成したオブジェクト。各種記法や一続きのプレーンテキスト部分などが1つのオブジェクトになる。
ElementがElementの集約にもなる。ネスト構造。
→PageElements
X/Elements[?]/… †
PageElementのサブクラス。プラグインはNotations系/Semantics系/DynamicNotations系/Plains系。
X/Elements/Notations[?]系 †
記法を統一する抽象クラス。
X/Elements/DynamicNotations[?]系 †
例えば自動リンク。
記法はあるが決まっていないもの。
X/Elements/Semantics[?]系 †
検索でスコアを上げる記法。
数詞やカラーコードなど。
X/Elements/Plains[?]系 †
ただのテキスト。
X/Plugins/... †
いろいろなプラグイン型。