このページは2007年 12月 10日, 14:39に更新されました by Mio

エクステンション

From $1

目次

 

最初に

Deki Wiki "Hayes"(ヘイズ)には、ページにダイナミックコンテンツを足す新メカニズムを紹介します。以前バージョンDeki Wiki "Gooseberry"(グースベリー)では一応出来た事ですが、カスタムエクステンションを導入するもに、ソースコードの編集が必要だった。 Hayesでは、ダイナミックコンテンツ機能はうんっと良くして、新Service Oriented Architecture (SOA)を利用して導入を可能にしてます。現在、コントロールパネルで、サービス管理で登録しただけで、出来ます。

エクステンションははローカルもしくはリモートのどちらかで動作するサービスです。 ローカルで動作するエクステンションは余分なネットワークトラフィックを必要としないのでネットワークの帯域幅で有利です。 ただし、ローカルでエクステンションを動作させるには構築が必要で、追加のアプリケーションのインストールといったいくつかのステップが必要となることも あります。別の方法としてイントラネットもしくはインターネット上のサービスをリモートのエクステンションとして動作させることができます。  この場合、他の誰かによって構成されて、容易に利用可能です。 エクステンションをリモートで動作させることは多くの Deki Wiki で利用することができ、全てのサイトのエクステンションを用意にアップデートすることが出来ます。

以下のスクリーンショットはエクステンション・サービスの追加がいかに簡単かを示したものです。

./control-panel.png
コントロールパネル
./service-mgmt.png
サービスの管理 - 一覧表示
./remote-service.png
サービスの管理 - リモートサービスの追加

エクステンション追加時には、利用方法について適用できるいくつかの設定項目があります:

  • 名前空間: エクステンションの名前空間を置き換えします。 空白にすると、エクステンション関数から名前空間のプリフィックスを取り除きます。
  • タイトル: ドキュメンテーション・ページのエクステンションのタイトルを置き換えします。
  • 説明: ドキュメンテーション・ページのエクステンションについての説明文のカスタマイズを追加します。

エクステンションで何ができるのか?

Deki Wikiはすぐに使えるいくつかのエクステンションを提供しており、そのエクステンションを使うことによりwikiのページは動的なコンテンツを埋め込むことが簡単に出来ます。
Flickr Service
スライドショーとバッチ
./flickr.png
Google Service
マーカとポップアップ・バブル付のGoogle Maps
./google-maps.png
Graphviz Service
複雑なグラフの生成
./graphviz.png
ImageMagick Service
画像に効果を適用
./imagemagick.png
MathService
数式の生成
./math.png
Yahoo Service
株式情報とチャートの表示
./yahoo-stock.png

エクステンションの利用方法は?

エクステンションは関数群で定義し、コントロールパネルで そのサービスを有効にすることにより利用できます。 様々な方法でこれらの機能を呼び出すことができます。

簡単な呼び出しで使われる一般的な使用方法は直接インラインに二重の中括弧 {{...}} を使うことです。  次の関数は"マイページ"をページ内に含むことになります。

{{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, などのたくさんのエクステンションをリリースしています。  全てのエクステンションは同じようなやり方で設定できますが、いくつかのエクステンションでは使用する前に事前に必要な条件がある場合があります。  どのような設定が必要化は各エクステンションのドキュメントを参照してください。


エクステンションがサポートしているデータタイプは?

エクステンションはデータタイプとして小さなセットを使用します。  以下のデータタイプがあります。

  • nil - the empty value (例. nil, null)
  • bool - 論理値 (i.e. true, false)
  • num - 整数値 もしくは 浮動小数点値 (例. 1, -5, 0.6)
  • string - 文字列 (e.g. "Hello World")
  • uri - a uniform resource identifier (only used internally)
  • map - 連想配列 (e.g. { a : 1, b : 2 })
  • list - an indexed array (e.g. [ 1, 2, "a" ])
  • xml - XML 文書 (内部使用のみ)

.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としてどのようにエンコードされるかを示しています。


エンコード
nil
<value type="nil" />
bool
<value type="bool>true</value>
<value type="bool">false</value> ­
numbers
<value type="num">123.4</value>
string
<value type="str">Hello World!</value>
uri
<value type="uri">http://somewhere.com</value>­
map
<value type="map">...</value>
where ... contains zero or more <value> elements with a "key" attribute
list
<value type="list">...</value>
where ... contains zero or more <value> elements with a "key" attribute equal to "#" (e.g. <value type="nil" key="#" />)
xml
<value type="xml">...</value>
where ... contains a single xml node

同梱されているエクステンションサービス

サービス 説明
Digg
The Digg サービスは "Digg It" widgetを埋め込みます。
Feed The Feed サービスは RSS や ATOM フィードを埋め込みます。
Flickr The Flickr サービスは フォト・バッジやスライドショーを埋め込みます。
Gabbly The Gabbly サービスはユーザにサイトを横断して任意の人と会話できるチャットルームを埋め込みます。
Google The Google サービスはインタラクティブな Google map のコントロールを埋め込みます。
Graphviz The Graphviz サービスはdot graphics notationを使って動的なフローチャートを生成します。
ImageMagick
The ImageMagick サービスは多彩な方法で画像を操作できるようにします。
Math
The Math サービスは数式を生成します。
Media The Media サービスは YouTube, Google, VMix,などの動画を埋め込みます。
MySql
The MySql サービスは tables from SQL 照会結果の表を埋め込みます。.
Widgetbox
The Widgetbox サービスは Widgetbox.com のwidgetsを埋め込みます。
WindowsLive
The WindowsLive サービスはインタラクティブな Virtual Earth コントロールを埋め込みます。
Yahoo The Yahoo service embeds interactive stock quotes from Yahoo! Finance
ファイルサイズ日付添付したユーザ 
control-panel.png
Control Panel
134.96 kB2007年 7月 25日, 00:30SteveBアクション
 flickr.png
Flickr Slideshow & Badge
182.58 kB2007年 6月 26日, 05:02SteveBアクション
 google-maps.png
Google Maps with marker and pop-up
56.35 kB2007年 6月 26日, 05:02SteveBアクション
 graphviz.png
Graphviz graph
10.97 kB2007年 6月 27日, 01:28SteveBアクション
 imagemagick.png
ImageMagick Polaroid effect
57.17 kB2007年 6月 27日, 01:28SteveBアクション
 math.png
Advanced math formulae rendering
3.49 kB2007年 6月 26日, 05:02SteveBアクション
remote-service.png
Adding a Remote Service
129.78 kB2007年 7月 25日, 00:30SteveBアクション
service-mgmt.png
Service Management Screen
150.76 kB2007年 7月 25日, 00:30SteveBアクション
 yahoo-stock.png
Yahoo! Finance stock widget
19.3 kB2007年 6月 27日, 00:57SteveBアクション
コメント(0)
あなたはコメントを投稿するには ログイン しなければなりません。