フレームワーク/WikiEngine

ここで作っているWikiシステム(WikiEngineまたはWikiソフトウェアと呼ばれるもの)。

フレームワーク/WikiEngine

現在考案中のWikiEngineについて。

WikiEngineとは Edit

Xのシステム部分。(サイトとしてのWikiは半分が利用者のアイデア次第)

キーワード:WikiEngine
キーワード:Wiki OR ウィキ

利用者から与えられたデータをページ化して保存するもの。
利用者からの要求に応じてページを切ったり貼ったり整形してから見せる。

人力検索はてな
http://q.hatena.ne.jp/1186417853

ユーザーページ/要素をつなぐもの。それとページ/要素の動作環境の提供も。

呼び出し順序

  1. 利用者
  2. フレームワーク/Webアプリケーション
  3. フレームワーク/WikiEngine
  4. ページ
  5. ページ/要素(各種機能)

認証について Edit

利用者認証とID取得はフレームワーク/Webアプリケーション
利用者IDを利用して、実用的な利用者情報を利用可能にするのはフレームワーク/WikiEngine

WikiEngine/ Edit

クラス構造 Edit

Actor Edit


リクエスト送信。PageNameとかUsecaseNameとかStepNameとかViewNameとか含む。

fw/Webfw/Wiki→Usecase

X Edit


フレームワーク/WikiEngineの実装。

X/Usecase[?] Edit


プラグイン

コントロールクラス。

WikiEngineから呼ばれる。リクエスト毎に別クラス。

MediaWikiの'Action'、PukiWikiの'cmd'にあたるものと一対一対応。

→User

X/User[?] Edit


利用者

ページを扱うクラス。Userが扱うページを特に「利用者ページ」と呼んでおく。権限情報が書かれているので特殊。

データはページ化されているので、このクラスが無くても読み/書きできる。書くのは利用者

存在意義が薄い。ただ利用者ページデータアクセスするラッパーでしかない。
  • 鍵←UserID

→Page

X/Page[?] Edit


Wikiのデータを保存するもの。

利用者が手作業で書く。どういう記法を使うかでデータアクセス時の反応が違う。

属性を持つ。

URIでプラグインを呼んだときは仮のページ。その場合でも流れは同じ。

→ Pages/Name

→ PageElement(記法に書かれると呼ばれる)
  • 永続化
    • FlyweightFactoryでインスタンス生成
    • コンストラクターは非公開

X/Pages/Name[?] Edit


ページ名。ValueObjectにするのが自然。
Page.rename(new Name(...))
ページ名を変更するときはNameインスタンスを作り直す。
ページ名変更時にやることがあるならrename()でできる。

X/Pages/Property[?] Edit


ページ/属性

属性/継承を行なう。

X/Pages/ShadowProperty[?] Edit


ページ/裏。

X/永続化[?] Edit


ページ以外も永続化

データストアにはファイルシステム(flat files)使用。
  • Page←PageName
  • PageProperty←PageName
  • Session←SessionID

X/Element[?] Edit


ページの構成要素。

記法から生成したオブジェクト。各種記法や一続きのプレーンテキスト部分などが1つのオブジェクトになる。

ElementがElementの集約にもなる。ネスト構造。

→PageElements

X/Elements[?]/… Edit


PageElementのサブクラス。プラグインNotations系/Semantics系/DynamicNotations系/Plains系。

X/Elements/Notations[?] Edit


記法を統一する抽象クラス。

X/Elements/DynamicNotations[?] Edit


例えば自動リンク

記法はあるが決まっていないもの。

X/Elements/Semantics[?] Edit


検索でスコアを上げる記法

数詞やカラーコードなど。

X/Elements/Plains[?] Edit


ただのテキスト。

X/Plugins/... Edit


いろいろなプラグイン

その他のクラス Edit