• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:&tag(記法,プラグイン,フレームワーク,思い付き,実装,目次);
RIGHT:&tag(見解,ページ,派閥,主要);

*目次 [#dfd296a1]
#contents
----
#lsx(new=true);

*関連 [#ibb9516c]
#lsx(tag=見解,new=true,except=^見解(/.*)?$)

[[検索:見解]]

*見解周辺のタグ [#q95b467c]
#tag(0,見解)


*見解とは [#c792886d]
RIGHT:[[:t/見解]]

ページと版(リビジョン)の間にあるまとまり。
1ページに複数の見解があり、1つの見解に複数の版がある。

(新規作成されたページには既に1つの見解と1つの版が存在する)


また、章の実体はページなので、章ごとに見解や版があることになる。
読むときに見解の代表が決まるので、「前章で述べたとおり…」と書いても、書いた人に見えている前章がみんなにも見えるとは限らない。


***側面 [#r862e023]
側面、見られ方、立場、多態性、インターフェイスなどを表すための機能。
編集でいくつでも用意でき、参照する側が選択する。
どの側面でも共通する事柄は埋め込みリンクで。他の見解と共有。

事典では使わない。利用者ページでは特に有効。立場や役割別にページを用意できる。

**調停 [#n7584250]
あるページの代表見解争いに負けても、他のページで勝利すればそれと整合させるために敗者復活があるかも知れない。
という考え方で諍い低減。

敗者復活のためには特定見解(の最新版)へのリンクが必要。特定見解を他のページで紹介。
**制限無し [#t9ac77db]
編集制限はかけない。
どの派閥がどのページを編集しても良い。(Wikiだから)
そもそもお客様でも編集可能なのだから、利用者を編集できなくしても無意味。


**見解の相違 [#fd8634d2]
対立(編集合戦含む)を検出したら、分離するようおすすめする。
第三者が「こうしたらどうですか」的な例を作るのにも役立つ。



**分離 [#we2cec46]
fork
「分離する」という操作。自動ではない。おすすめするくらいなら可能。
分離は編集 + 投票。
同じページ名の新しい記事を作り、それに支持票を入れる。元の記事には不支持票を入れる。

取り消し方法は…
→新しいページを消す。そのページは誰にも見えなくなる。


→分離は最新ではない版を元に編集した場合に行なわれる?つまり改訂履歴の分岐。revertもその一例。
代表権は引き継がれないこと。分離したら代表は決め直し。→代表
**統合 [#ue7fd410]
join/merge
「統合する」という操作。これも自動ではない。
ツールを提供する程度。手直しが必要でもいい。

統合には主従関係がある。
「主」が影響の少ない見解。
「従」が吸収される見解。
統合操作をした人が管理しているほうを主従関係の「従」ということにする。
同時に「主」と「従」に行なわれた投票結果も統合する。
**新しい編集合戦 [#t740f93f]
分離統合合戦が起きる。
**影響 [#m6b039d0]
分離・統合があっても操作した人以外にはまったく影響なし。



**機能で可能か [#y7ec25fc]
見解は…

-ページ作成
-有力な見解(ページ名だけ指定されたときに表示するページ)を決める条件に介入

…だけなので機能化できる。


**見解IDにページ名は含めないこと [#gd1ca85f]
ページ名変更に対応しづらくなるので。
ページの内部名なら問題ない。
RIGHT:&tag(見解,設計);

*思い付き [#z502e2b5]
利用者が付けないほうが良い。
システムが自動的に無味乾燥で無意味で記号のような名前を付けるほうが良い。
0から始まる8進数とか。
RIGHT:[[:t/見解名]]

見解/名前を付けるのにまた議論がいるようなことは無いほうが良い。
*実装 [#ca31cb87]
名乗るなら見解のページにでも名前を書いておけばいい。
システムは関知しない。

システムが付けるIDは
-機能/ランダム文字列生成機能
-見解を表す接頭辞
…の組み合わせで。


*設計 [#m30e1908]
見解はページ。
見解IDは見解を表すページのページ名になる。
属する利用者はこのページの中のリンクで表す。
リンク先は利用者を表すページ。
RIGHT:&tag(記法,機能,フレームワーク,思い付き,実装,目次);

''「記法/」で始まるページを作成''
#lookup(記法/,* 新規作成 *);

#br

:いろいろな記法|
[[WikiCreole: List Of Wiki Markup>http://wikicreole.org/wiki/ListOfWikiMarkup]]
[[WikiMatrix - Compare them all>http://www.wikimatrix.org/syntax.php]]

*目次 [#bce4256a]
#contents
----
#lsx(new=true);

*関連 [#ecabb372]
#lsx(tag=記法,new=true,except=^記法(/.*)?$)

[[検索:記法]]

*記法周辺のタグ [#d6ddbb53]
#tag(0,記法)


*記法とは [#k4a7b293]
RIGHT:[[:t/記法]]

プラグイン呼び出し記法のシンタックスシュガー。
呼び出すプラグインごとに定義。1つのプラグイン呼び出しについて複数記法を定義していい。
機能呼び出し記法のシンタックスシュガー。
呼び出す機能ごとに定義。1つの機能呼び出しについて複数記法を定義していい。

 ----

 *
 **
 ***

 &(...);
 #...

などのWiki特有の書き方のこと。
それと、これらの書き方で書かれたテキストのこと。
「マークダウン」などと同じ用途・目的。→[[キーワード:Markdown]] [[Google:Markdown]]

WikiTextもWikiFormatも同じ意味で使われていそう。
ここでは記法を含むテキストをWikiTextと言うことにしている。

[[Google:Wiki-Notation]]
[[Google:Wiki-Format]]
[[Google:WikiText]]
[[Google:Wiki Formatted Text]]


実体はプラグインの呼び出し方(プラグインを呼び出したいときの書き方)。
実体は機能の呼び出し方(機能を呼び出したいときの書き方)。

→ [[X/Element/Notation]]
*思い付き [#eeb15ebb]

**Excel関数を参考に [#z9d21582]
**ページと見出しを、リンクする/されるの両方に [#nac80435]
ページ名を表す記法、見出しを表す記法を用意。
段落始めに書けばページ名や見出しを定義する。それ以外に書くと指定したページや見出しへのリンクになる。
**タブでインデントしたい [#k456a3d9]
テキストエディターを使うとインデントしやすくなる。

**見えない文字は無視したい [#m8bb29b6]
使うとすれば記法を越えない程度に。
空白を取り除いても同じ記法になるように。
**検索用クラスやめ [#ye1b8fdd]
「[[検索]]」に書かれているクラスを廃止。
Notationクラスで行う。


Notationの機能…
-検索式→オブジェクトの単行表現
-ページのテキスト→オブジェクトの複数行表現
-オブジェクト同士を比較したときの適合度算出
具象クラスが同じ場合も先祖が共通の場合も使える。
先祖が共通の場合は適合度がやや下がる。
クラスメソッド。
-オブジェクト→テキスト(HTML)

…といったことができる。
**プラグインは検索時の比較方法もメソッドとして持つ。 [#d92fef23]
色とか。色プラグイン(色を示す表現を色オブジェクトに置き換えるプラグイン)色を示す記法プラグイン。
**機能は検索時の比較方法もメソッドとして持つ。 [#d92fef23]
色とか。色機能(色を示す表現を色オブジェクトに置き換える機能)色を示す記法機能。
 #FFF
 White

…などが
 #FFC

などと近く(高い適合率)になるように。

**ヘルプは初心者向けのみ [#cd5fccce]
詳細な説明なら定義ページを見ればいい。


**変換ルールはページ内で定義 [#a5b31f20]
記法→内部形式(Element系オブジェクト)のルール

[[RegExp]]→Element系クラス名

…という形式で定義。

1ページに1クラス分の複数書式を定義。ページ名と対応するクラスはハードコーディング(変更不可能)で良い。
それらをまとめたページを作れば記法定義の一覧になる。

----

でも、Notationを単なる 正規表現→プラグイン名とパラメーター とすれば1ページにいくらでもまとめてもいいかも知れない。
でも、Notationを単なる 正規表現→機能名とパラメーター とすれば1ページにいくらでもまとめてもいいかも知れない。
例外がなければ。

Notation定義を参照するときのキーは?
特定ページ、または特定のページ以下にあるページ集合?
*実装 [#lffa0e53]

[[埋め込み式ページ]]を応用して実装。
記法を、「プラグイン呼び出し記法が書かれたページ」を埋め込むことで実現できる。
そうすれば記法→プラグイン呼び出しをページで定義・カスタマイズできる。
記法を、「機能呼び出し記法が書かれたページ」を埋め込むことで実現できる。
そうすれば記法→機能呼び出しをページで定義・カスタマイズできる。

…というのはパラメーターなしのプラグイン呼び出しだけ。
…というのはパラメーターなしの機能呼び出しだけ。
ほとんどのNotationは記法/定義に書かないといけない。


**色々な記法 [#kde70162]
-単行テキスト
-複数行テキスト
-メールアドレス
-URL
http:、https:、ftp:のほかtwitter:なども。
-数値と計算式とフォーマット
金額とか。
-日時と計算式
-時間(日時×2)と計算式
-選択・列挙型
文字列の列挙型、列挙されていない値は持てない。選択可能数1または任意個。
-ページ任意数
とフィルタリングルール。フィルタリングで特定のページだけを選択肢に。ユーザー限定など。
添付ファイル、添付イメージなどはページとして記述。


URL、ISBN、ASIN、電話番号、住所などを特別扱いに。
**どこでも記法 [#v38163d2]
-検索キーワードで
計画に織り込み済み。
-ページ名として
一行名がページ名なので。
動的な記法が問題。ページ名が動的に変わっては不便。
[[:t/?]]
-ページ名変更時のページ名として
ページ名変更UIによる。
[[:t/?]]


**特別なNotation [#l68ebc5d]
プラグインではないもの。特別扱いする必要のあるもの。
機能ではないもの。特別扱いする必要のあるもの。
-リンク
検索関連で特別扱い?
-埋め込み(埋め込みリンク)
埋め込み解消後のページをNotation解析対象にするので。
Notationを埋め込みで実装するので?
**種別、影響範囲 [#q1f49686]
WikiCreoleの実装にも適用。
影響範囲の小さい順に行修飾、文字修飾、段落…。
影響範囲が重なっている部分では、範囲の小さい記法が優先される。

以下、影響範囲の小さい順(優先度の高い順)
+行修飾、ライン
改行間の全てに影響。
行頭に書く。行頭を含むNotation。1行にしか影響しないのは行頭に書くものなので。書き方の問題。
 **見出し
+行修飾(連結)
行頭。で次の行も同じNotationならまとまる。というよりも前の行が同じなら連結。(もし衝突があったとしても)前の行の属性が優先されるので。
 -リスト
 -リスト
+文字修飾、インライン
どこからでも開始できる。
改行を越えて影響するため、行修飾よりも広範囲。
 //斜体//
+段落修飾、パラグラフ
空行(連続改行)間で有効。
空行後に書く。というか、空行が無くてもこのNotationからを段落とみなす。
少なくとも行頭に書く必要あり。このNotationだけで1行。というか改行を含むNotation。
 >>
 引用(brockquote)
 <<
%%末尾を&#x3c;&#x3c;で終わらせるようにすれば段落(空行)を越えられるが…→連結するなら、越えなくていい。%%
&#x3e;&#x3e; ... &#x3c;&#x3c;で空行を越える記法はスクロール不要な長さなら影響範囲が分かりやすくなる。長い場合は段落ごとに&#x3e;&#x3e;を書いたほうが分かりやすい。
斜体などの段落版があってもいい。
+%%段落修飾(連結)%%
%%段落修飾は全て連結可能にしていいはず。ゆえに段落修飾はどれも連結する。でも毎段落ごとにNotationが必要になるので、&#x3c;&#x3c;で終了させる形のほうが書くときの手間がかからない。→&#x3c;&#x3c;で閉じる?%%
+ページ
%%1ページ全体に影響。なので、どこに書いてもいいが専用欄を設けてもいい。%%
%%ページ冒頭か末尾に書くのが簡単?%%
→ページ/属性にする

----------------------------------------

行頭後・空行後に書くものは改行処理前に解釈。それ以外は改行処理をした上で解釈。ただ空行は残すので空行後の物は改行処理の後でもいい。
''改行→<br/>''をする設定でもしない設定でも、文字修飾は改行を越える。空行も越えられるが…→WikiCreoleに合わせて越えないようにする。影響範囲が分かりやすい。
**曖昧な記法を解釈 [#t13df52c]
書き手の意図を反映させるように。
記号の前後は必ず何らかの効果が現れるように。

 **リスト
で、
 …**太字**
のとき、

 …**B**B**… → …<b>B</b>B**…
 **B**… →<b>B</b>… または <li>B**…
 **…**B**… → <li>…<b>B</b>…
 **B**…**B**… →<b>B</b>…<b>B</b>… または <li>B<b>…</b>B**…

正しくは
 ****B** → <li><b>B</b>

ユーザーが入力した情報が失われてしまうのを防ぐため、余ったNotationは消さずに残す。

bとして解釈できる場合、行頭の**を2つの意味で捉える?
 **B** →<li><b>B</b>
他のケースで使いにくく(結果を予想できなく)なってしまいそう。



*設計 [#q2d61706]
**記法が含むもの [#mef1470f]
-記法
入れ子。
-プラグイン呼び出し
--プラグイン名と入力するデータ列
-プラグイン呼び出し以外のマークアップ
-機能呼び出し
--機能名と入力するデータ列
-機能呼び出し以外のマークアップ
もしあれば。
(これも結局プラグインとして扱うので、結局プラグインと同じ)
(これも結局機能として扱うので、結局機能と同じ)