|
|
エクステンションFrom $1目次 最初にDeki Wiki "Hayes"(ヘイズ)には、ページにダイナミックコンテンツを足す新メカニズムを紹介します。以前バージョンDeki Wiki "Gooseberry"(グースベリー)では一応出来た事ですが、カスタムエクステンションを導入するもに、ソースコードの編集が必要だった。 Hayesでは、ダイナミックコンテンツ機能はうんっと良くして、新Service Oriented Architecture (SOA)を利用して導入を可能にしてます。現在、コントロールパネルで、サービス管理で登録しただけで、出来ます。エクステンションははローカルもしくはリモートのどちらかで動作するサービスです。 ローカルで動作するエクステンションは余分なネットワークトラフィックを必要としないのでネットワークの帯域幅で有利です。 ただし、ローカルでエクステンションを動作させるには構築が必要で、追加のアプリケーションのインストールといったいくつかのステップが必要となることも あります。別の方法としてイントラネットもしくはインターネット上のサービスをリモートのエクステンションとして動作させることができます。 この場合、他の誰かによって構成されて、容易に利用可能です。 エクステンションをリモートで動作させることは多くの Deki Wiki で利用することができ、全てのサイトのエクステンションを用意にアップデートすることが出来ます。 以下のスクリーンショットはエクステンション・サービスの追加がいかに簡単かを示したものです。
エクステンション追加時には、利用方法について適用できるいくつかの設定項目があります:
エクステンションで何ができるのか?Deki Wikiはすぐに使えるいくつかのエクステンションを提供しており、そのエクステンションを使うことによりwikiのページは動的なコンテンツを埋め込むことが簡単に出来ます。
エクステンションの利用方法は?エクステンションは関数群で定義し、コントロールパネルで そのサービスを有効にすることにより利用できます。 様々な方法でこれらの機能を呼び出すことができます。 簡単な呼び出しで使われる一般的な使用方法は直接インラインに二重の中括弧 {{...}} を使うことです。 次の関数は"マイページ"をページ内に含むことになります。 {{wiki.page("My page")}} もう一つの一般的な使用方法は <pre class="script"> ブロック内から呼び出すことです。. <pre> 記法は他のマークアップから影響を受けずに複数行で使える利点があります。 <pre class="script">wiki.page("My Page")</pre> 最後の記法はやや特殊ですが、大きなストリング引数を持つ関数に適しています。 それは <pre class="script"> 記法をも使いますが、関数を呼び出すのに, もうひとつの属性を追加します。 たとえば <pre class="script" function="function-name"> のようにです。 <pre> ブロックの内容には最初の引数として渡されます。 <pre class="script" function="wiki.page">My Page</pre> 利用可能なエクステンションは?DekiWiki はGoogle, Windows Live, Flickr, などのたくさんのエクステンションをリリースしています。 全てのエクステンションは同じようなやり方で設定できますが、いくつかのエクステンションでは使用する前に事前に必要な条件がある場合があります。 どのような設定が必要化は各エクステンションのドキュメントを参照してください。 エクステンションがサポートしているデータタイプは?エクステンションはデータタイプとして小さなセットを使用します。 以下のデータタイプがあります。
.Netを使ったエクステンションの自作方法は? 新しいエクステンションの自作方法についてのステップパイステップのチュートリアルは こちら にありますので参照してください。 .Netを使わないエクステンションの自作方法は?エクステンションは登録と呼び出しのためにシンプルな文書交換プロトコルを利用します。 これは任意の言語でエクステンションを書くことができます。 登録エクステンションが登録されると、関数一覧から照会できるようになります。 我々のサービスが http://ext.mindtouch.com:8080/mathにあると仮定しましょう。 我々がエクステンションを登録すると、 Deki Wiki はuriからGETリクエストを発行すると以下のレスポンスが得られます: <library>
<title>MindTouch Deki Math Service</title>
<copyright>Copyright (c) 2007 MindTouch, Inc.</copyright>
<uri.help>http://doc.opengarden.org/Deki_API/Reference/Math</uri.help>
<namespace>math</namespace>
<function>
<name>formula</name>
<uri>http://ext.mindtouch.com:8080/math/formula</uri>
<access>public</access>
<return>xml</return>
<param>
<name>formula</name>
<type>str</type>
<hint>formula in Latex-AMS notation</hint>
</param>
</function>
</library>
レスポンスで重要な部分は <namespace> と <function> の要素です。 <namespace> 要素はオプションで関数のプリフィックスを定義します。 たとえば namespace が "math"の場合はサービスからの全ての関数は "math."付のプリフィックスになります。. <function> 要素はエクステンションの関数を説明します。 レスポンス・ドキュメント内には複数の <function> 要素が存在することができます。 要素で重要な部分は <name> と <uri> 要素です。 <name> 要素は関数名で、完全な名前を作るために namespace プリフィックスと組み合わせられます; 今回の場合では "math.formula"となります。 <uri> 要素は関数のロケーションを指定します。 Deki Wiki が関数を見つけるとURIとリクエスト・ドキュメントをPOSTして名前解決します。 残りの要素 (<title>, <uri.help>, <param>, <access>, etc.) は情報のみで、登録や実行へ影響しません。 これらの要素はエクステンションアクセスしたユーザにガイダンスを提供するだけです。 呼び出し次のステップはエクステンション関数を呼び出しです。 引き続きMathサービスで説明します。 次のwikiテキストを見てください: {{math.formula("\\pi=\\frac{3}{4} \\sqrt{3}+24 \\int_0^{1/4}{\\sqrt{x-x^2}dx}")}} 引数はリストに変換され、そしてXMLへシリアライズされます。 <value type="list">
<value key="#" type="str">\pi=\frac{3}{4} \sqrt{3}+24 \int_0^{1/4}{\sqrt{x-x^2}dx}</value>
</value>
'key' 属性は常にリストに対しては'#'ですが、mapに対しては数値になります。 'type' 属性は値の型を指定します。 (例 nil, bool, num, str, uri, map, list, or xml). When the function completes, it responds with the invocation result, which is also returned inside an array: <value type="doc">
<value key="#" type="xml">
<html>
<body>
<img src="http://ext.mindtouch.com:8080/host/$store/_x002F_math/806b359f-94ef-3aae-e253-2877a0af8a8c.img" />
</body>
</html>
</value>
</value>
エクステンションの XML フォーマットはDeki Wikiの拡張用言語として組み込まれている DekiScriptをベースにしています。 次の表はネイティブなDekiScriptの型がXMLとしてどのようにエンコードされるかを示しています。
同梱されているエクステンションサービス
タグ:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||