...

WikiとWebサービスAPI

by user

on
Category: Documents
5

views

Report

Comments

Transcript

WikiとWebサービスAPI
第
5回
WikiとWebサービスAPI
解説します.
TEXT
今回は,WikiとWebサービスAPIの関係,そして可能性について
塚本牧生(TUKAMOTO Makio)
yomoyomo(YOMOYOMO)
TEXT=塚本牧生(TUKAMOTO Makio)
はじめに
こんにちは,塚本牧生です.最近は書店に行くと
が直接恩恵を受けられる機会が増え,Webサービ
『最新WebサービスAPIエクスプローラ∼Amazon,
スAPIが身近な存在になってきました.Wikiユー
はてな,Google,Yahoo! 4大Webサービス完全攻
ザからもしばしば,「WikiのWebサービスAPIは」
略』
(技術評論社)というムック形式の書籍が並んで
という声が挙がりますし,関連ページがはてなブ
いますが,もうご覧になったでしょうか?
ックマークなどでブックマークされているのを見
AmazonやGoogleなどのWebサービスが相次
いでWebサービスAPIを公開したり,blogが共通
的な投稿用のWeb APIを用意しているなど,個人
かけます.
今回はWikiのWebサービスAPIについて紹介し
ます.
WikiのWebサービスAPI事情
WikiのWebサービスAPIと近い関係にあるのは,
ンのWebページで提案され,内容がWiki RPC
コンテンツの取得と編集という共通の要求を持つ
Interface Version 1注1と,Wiki RPC Interface
blogのそれでしょう.多くのblogサービスでは
Version 2注2にまとめられてきたようです.
XML-RPCベースのWebサービスAPIを提供してい
ざっと概観すると,Version 1ではWikiの既存ペ
ますが,これと合わせてAtom APIベースのAPIも
ージ名や,そのページの情報,内容を取得するため
提供するところが増えてきつつあります.
のメソッドが定義されてきました.Version 2では
さらに,Wikiページを更新するためのメソッドなど
Wiki RPC●●●
●●●
が追加されています.また,Version 1ではテキス
ではWikiはと言うと,まだまだWebサービスAPI
トの引数や返り値がbase64エンコードされていま
を実装したものが少ないというのが実情ですが,そ
したが,Version 2では文字コードがUTF-8のテキ
の中ではXML-RPCをベースにWiki向けのメソッド
ストのままになっている点が異なります.この他に,
を定義した「Wiki RPC Interface(以下Wiki RPC
Version 2のページを見ると「私たちがたぶん必要
と記述します)
」という方式が比較的広く使われて
とするもの」として,添付ファイルを扱うためのメ
います.
ソッドが検討されていたようです.
Wiki RPCはJSP WikiというWikiアプリケーショ
各バージョンのメソッドを表1にまとめます.
注1)http://www.jspwiki.org/wiki/WikiRPCInterface
注2)http://www.jspwiki.org/wiki/WikiRPCInterface2
70 - Software Design
Reprint without permission prohibition
Copyright (c) 2005-2006 All Rights Reserved by Gijutsu-Hyohron Co., Ltd.
表1●●●Wiki RPCで定義されているプロシージャ
メソッド
Version 1 API
wiki.getRPCVersionSupported()
wiki.getAllPages()
返り値
説明
int
array
このWikiAPIのバージョンでは1を返す
全ページのリストを返す.結果はURLエンコード中のUTF-8のリスト
wiki.getRecentChanges( Date timestamp )
array
wiki.getPage( String pagename )
utf8(*)
wiki.getPageVersion( String pagename,
int version )
utf8(*)
wiki.getPageHTML( String pagename )
utf8(*)
wiki.getPageHTMLVersion( String pagename,
int version )
wiki.getPageInfo( String pagename )
wiki.getPageInfoVersion( String pagename,
int version )
wiki.listLinks( String pagename )
Version 2 API
wiki.getRPCVersionSupported()
wiki.getBackLinks( utf8 page )
wiki.putPage( utf8 page, utf8 content,
struct attributes )
Version 2で検討されていたAPI
UTCで指定されたtimestamp以降に更新されたページを取得する.返り値は配列で,要
素はそれぞれが構造体
ページの最新版の生のWikiテキストを返す.ページ名はUTF-8で,URLエンコードされている
こと.返り値はUTF-8エンコードされたページデータのバイナリオブジェクト
ページの生のWikiテキストを返す.UTF-8がURLエンコーディングされた部分以外
はUTF-8が返る
HTMLレンダリングされたページを返す.UTF-8がURLエンコーディングされた部分
以外はUTF-8が返る
utf8(*)
HTMLレンダリングされたページをUTF-8で返す
struct
array
要素の構造体を返す
通常のgetPageInfo()とまったく同様の構造体を返すが,こちらでは指定されたバージョ
ンのものになる
与えられたページへのすべてのリンク
int
array
このWikiAPIのバージョンでは2を返す
このページにリンクしているページを返す
boolean
ページのコンテンツを書き込む
struct
wiki.listAttachments(utf8 page)
array
wiki.getAttachment(utf8 attachmentName)
wiki.putAttachment(utf8 attachmentName,
base64 content)
独自実装API
wiki.filterData(utf8 data, String contentType,
struct params)
wiki.putPage( String pagename, utf8 text )
base64
与えられたページへの添付ファイルのリストを返す.配列は,getAttachment(または
putAttachment)の引数に入れることができる,UTF-8の添付ファイル名からなる
添付ファイルの内容を返す
添付ファイルを書き込む(上書きする)
struct
※twikiのみ実装
boolean
ページの生のWikiテキストをセットする.成功時にはbooleanのtrueを返す
utf8(*):Version 1ではbase64エンコードすることとなっていたが,Version 2でutf8コード,base64エンコードなしと変更された.
実装状況●●●
●●●
Wiki RPC Interface Version 1は2002年2月
注3
Wiki RPC実装例を見つけることができます.
Version 2は2003年8月には現在の形のもの
24日には現在の形のものが提示 され,その直後
が提示注5されており,MoinMoinのWiki RPC実
に0xDECAFBADというWebサイトで海外ではポ
装注6はこれに合わせて更新されたようです.また,
ピュラーなtwiki,UseMod,MoinMoinといった
後述するFree Style Wiki用のWiki RPCプラグ
Wikiアプリケーション用のWiki RPCの実装例が
インもこれに準拠したものになっています.た
注4
公開 されています.
だし,Free Style Wikiではページのバージョ
このWebサイトで公開されたものには,その
ンの情報を持たないため,getPage Version
後,Version 1のページ上で議論されていた
などのバージョンに関連するメソッドは省略さ
putPageという更新用のメソッドが追加されて
れています.
います.この他,phpWiki,Erfurt Wikiなどで
各メソッドの実装状況を表2にまとめます.
注3)http://www.jspwiki.org/wiki/WikiRPCInterface?version=77
注4)http://www.decafbad.com/twiki/bin/view/Main/XmlRpcToWiki#Download
注5)http://www.jspwiki.org/wiki/WikiRPCInterface2?version=23
注6)http://moinmoin.wikiwikiweb.de/WikiRpc
Dec.
2005 - 71
Reprint without permission prohibition
Copyright (c) 2005-2006 All Rights Reserved by Gijutsu-Hyohron Co., Ltd.
表2●●●Wiki RPCの実装状況
メソッド
JSP Wiki
Version 1 API
wiki.getRPCVersionSupported()
○
wiki.getAllPages()
○
wiki.getRecentChanges( Date timestamp )
○
wiki.getPage( String pagename )
○
wiki.getPageVersion( String pagename, int version )
○
wiki.getPageHTML( String pagename )
○
wiki.getPageHTMLVersion( String pagename, int version )
○
wiki.getPageInfo( String pagename )
○
wiki.getPageInfoVersion( String pagename, int version )
○
wiki.listLinks( String pagename )
○
Version 2 API
wiki.getBackLinks( utf8 page )
○
wiki.putPage( utf8 page, utf8 content, struct attributes )
○
独自実装API
wiki.filterData(base64 data, String contentType, struct params)
×
wiki.putPage( String pagename, base64 text )
×
twiki
MoinMoin ModWiki phpWiki ErfurtWiki FSWiki
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
×
○
×
○
×
○
×
×
○
○
×
×
×
×
×
×
×
○
○
○
×
○
×
○
×
×
×
×
×
×
Wiki RPCを使ってみる
WikiのWebサービスAPI状況について見てき
wiki.cgiとconfig,data,lib,plugin,thema,
たところで,実際にWebサービスAPIを介して
tmplといったディレクトリが現れます.wiki.cgiは
Wikiを利用してみましょう.
先頭行のPerlのパスを修正し,他のディレクトリと
国内では,竹添氏のPerlによるWikiアプリケ
一緒に設置します.このとき,既存ディレクトリの
ーションであるFree Style Wiki(以下FSWiki
他にattach,backup,pdf,tempという空のディ
と記述します)向けに,まかまか氏がWiki RPC
レクトリを作成しておきます.また,CGIファイル
プラグインを公開しています.ここではこれを設
には実行権限を,各ディレクトリには読み書き権限
置し,使ってみることにします.
を与えておきます.
設置が済んだら,wiki.cgiのURLにアクセスして
●●●
FSWikiとWiki RPCプラグインの設置●●●
FSWikiもWiki RPCプラグインも,設置はとくに難
ください.FSWikiのFrontPageが表示されれば設
置完了です.
しくありません.以下に簡単に設置と確認方法を記し
ます.また,図1がこの内容にあたりますので,これ
Wiki RPCプラグインの設置
Wiki RPCプラグインは,まかまか氏のXML for
を参照しながら設置してみてください.
Wikiというページ注8で配布されています.ここから,
FSWikiの設置
tar+gzファイルを取得してください.本稿執筆時点
FSWikiのサイトはhttp://fswiki.poi.jp/wiki.cgiで
すが,ダウンロードページに書かれているとおり,
注7
での最新版はwiki_xmlrpc-204.tar.gzでした.
取得したtar+gzファイルを展開すると,
FSWikiの配布ファイルはSourceforge に置かれて
wikigate.cgi,wiki_xmlrpc.cgiという2つのCGI
います.ここから,zipファイルを取得してください.
ファイルと,lib ディレクトリが現れます.CGIフ
本稿執筆時点での最新版はwiki3_5_9.zipでした.
ァイルは先頭行のPerlのパスを修正し,他のディ
FSWikiの設置自体は通常のCGIとそれほど変わり
レクトリと一緒に,FSWikiの設置ディレクトリに
ません.zipファイルを展開すると,本体である
一緒に設置します.このとき,CGIファイルには
注7)https://sourceforge.jp/projects/fswiki/files/
注8)http://www.donzoko.net/cgi/fswiki_xmlrpc/
72 - Software Design
Reprint without permission prohibition
Copyright (c) 2005-2006 All Rights Reserved by Gijutsu-Hyohron Co., Ltd.
図1●●●FSWikiとWiki RPCの設置
Wiki RPCの追加
FS Wikiの設置
(CGI設定ディレクトリ,要書き込み権限)
wiki_xmlrpc.cgi(要Perlパス修正)
wikigate.cgi(要Perlパス修正)
lib
wiki_xmlrpc-204.tar.gzの内容
wiki.cgi(要Perlパス修正)
config
data
docs
libs
plugin
theme
wiki3_5-9.zipの内容
tmpl
attach
backup
pdf
空フォルダを作成
temp
リスト1●●●Wiki RPCによるページ一覧とページ情報の取得
use XMLRPC::Lite;
use Data::Dumper;
$Data::Dumper::Indent = 0;
my $url = 'http://localhost/fswiki/wiki_xmlrpc.cgi';
my $pages = XMLRPC::Lite->proxy( $url )->call('wiki.getAllPages')->result;
foreach my $page (@{$pages}) {
my $info = XMLRPC::Lite->proxy( $url )->call('wiki.getPageInfo', $page)->result;
print Dumper($info), "\n";
}
図2●●●リスト1の結果
$VAR1 = {'lastModified' => '20050827T11:59:06','version' => '1','author' => '','name' => 'FrontPage'};
$VAR1 = {'lastModified' => '20050827T11:59:06','version' => '1','author' => '','name' => 'Help'};
$VAR1 = {'lastModified' => '20050827T11:59:06','version' => '1','author' => '','name' => 'Help/FSWiki'};
$VAR1 = {'lastModified' => '20050827T11:59:06','version' => '1','author' => '','name' => 'Help/Hiki'};
$VAR1 = {'lastModified' => '20050827T11:59:06','version' => '1','author' => '','name' => 'Help/YukiWiki'};
実行権限を与えておきます.
リスト1を見るとわかるとおり,XMLRPC::Liteモ
設置が済んだら,wiki_xmlrpc.cgiのURLにアクセ
ジュールを使うと,接続先の指定,メソッドの呼び
スしてください.リクエスト内容を送っていないの
出し,結果の取り出しを書き連ねるだけで一連のア
で何も表示されないのですが,少なくともエラーに
クセスと結果解析を完了できます.ページ名を取得
ならなければ設置完了です.
するgetAllPagesメソッドの返り値は配列なので,
解析結果は配列リファレンスで返されます.ページ
Wiki RPCでのアクセス
●●●
●●●
情報を取得するgetPageInfoでは,ページ名を単純
それでは,Wiki RPCを利用して設置したFSWikiに
に引数で与えており,返り値は構造体なので,解析
アクセスしてみましょう.ここでは,Perlの
結果は連想配列リファレンスで返されています.リ
XMLRPC::Liteモジュールを使うことにします.この
クエストや結果について,XMLを意識する必要はま
モジュールは,SOAP::Liteモジュールをインストー
ったくありません.
ルすると利用可能になります.
実行結果を見ると,設置時に自動的に用意される
FrontPage,Helpなどの各ページの情報がひととお
ページ名と各ページの情報取得
り取得できているようです.
まずは小手調べ.リスト1,図2は今あるページ名
を取得し,その後,各ページの情報を取得するため
のスクリプトと,実行結果です.
ページの投稿とHTML形式での取得
ページ名や概要を取得するだけであれば,RSSを
Dec.
2005 - 73
Reprint without permission prohibition
Copyright (c) 2005-2006 All Rights Reserved by Gijutsu-Hyohron Co., Ltd.
リスト2●●●Wiki RPCによるページの投稿と取得
use XMLRPC::Lite;
use Jcode;
my $url = 'http://localhost/fswiki/wiki_xmlrpc.cgi';
my $page = jcode( '投稿テスト' )->utf8;
my $text = jcode( <<EOF )->utf8;
!!! 投稿テスト結果
[XMLRPC for Wiki|http://www.donzoko.net/cgi/fswiki_xmlrpc/]経由で投稿。
* 投稿できるのか?
* 投稿したページを取得できるか?
EOF
print "[投稿結果] “, XMLRPC::Lite->proxy( $url )->call('wiki.putPage', $page, $text)->result , "\n";
print "[取得結果]\n“, XMLRPC::Lite->proxy( $url )->call('wiki.getPageHTML', $page)->result;
図3●●●リスト2の結果
[投稿結果] 1
[取得結果]
<h2><a name="p0"> <a href="wiki.cgi?page=%C5%EA%B9%C6%A5%C6%A5%B9%A5%C8" class="wikipage">投稿テスト</a>結果</a></h2>
<p><a href="http://www.donzoko.net/cgi/fswiki_xmlrpc/">XMLRPC for Wiki</a>経由で投稿。</p><ul>
<li> 投稿できるのか?
</li>
<li> 投稿したページを取得できるか?
</li>
</ul></ul>
リスト2は,ページ名やその情報の取得とそれほど
図4●●●Wiki RPCで投稿したページ
変わってはいません.ページを投稿するputPageで
は,引数にページ名とWiki記法のテキストを与えて
います.ちょっと違うのは,文字コードをUTF8に変
更している点ぐらいでしょう.この結果はintで,成
功したので1が返ってきています.
次にページの内容をHTML形式で取得する
getPageHTMLを実行しています.結果を見ると,
Wiki記法で投稿したページが,ちゃんと HTMLに変
取得し解析しているのと大差はありません.次はペ
換されて返ってきているのがわかります.
ージの内容を投稿し,投稿したページをHTML形式
図4は,投稿したページにWebブラウザからアク
で取得します.リスト2,図3が,このためのスクリ
セスしたところです.当然ですが,getPageHTML
プトと実行結果です.
の結果から想像どおりの表示になっています.
今後の可能性
ここまで,Wiki RPCを中心にWikiのWeb
RPC Interface Version 2は2003年8月,
サービスAPI状況をご紹介してきました.しか
WebサービスAPIが十分にホットな話題になる
し,前述のとおりまだ普及していると言うには
前で,Wikiでは議論が止まっているということ
程遠く,WebサービスAPIの方式も利用方法
もできそうです.筆者の予想と期待まじりです
もデファクトスタンダードがあるとは言い難い
が,今後の可能性を示しておきましょう.
状況です.
もちろん逆に言えば,これからWikiのWeb
●●●
XML-RPC,Atom API,REST●●●
サービスAPIがどんどんおもしろくなっていく
冒頭で触れた『最新WebサービスAPIエクスプロー
可能性は十分にあります.考えてみればWiki
ラ』や本誌2005年1月号で組まれたAtom特集では,
74 - Software Design
Reprint without permission prohibition
Copyright (c) 2005-2006 All Rights Reserved by Gijutsu-Hyohron Co., Ltd.
XML-RPCに続くWebサービスAPIとしてAtom
より進んだWikiの活用●●●
●●●
Publishing Protocol,通称Atom APIを解説し
WikiでWebサービスAPIが普及すれば,今とは
ています.両記事を読んだ感想ですが,コンテン
もっと違った利用形態,そして利用方法が広まる
ツの取得と投稿を強く念頭に置いた方式やAtom
はずです.
AutodiscoveryなどのしくみはWikiとの相性が良
最初に考えられるのは,ecto注12やBlogWrite注13
のようなデスクトップクライアントでの編集でし
さそうです.
注9
海外では「An Atom-Powered Wiki 」という記
ょう.XML-RPCでは,blogで使われるメソッド
事でAtom APIを介したWiki利用の解説と,PikiPiki
とWiki RPCのメソッドが一致しないのですが,
への実装例が示されています.これを受けて,Kwiki
Atom APIであればすでに使えるのかもしれませ
にはAtom FeedとAtom APIを実装するAtomプラグ
ん.こうしたツールで編集もファイル添付も簡単
注10
イン
が公開されています.
また,JSP Wikiの開発者であるJanne Jalkanen
氏自身が,Wiki RPC Interface Version 2のページ
にあるディスカッション部で「これは実現済み? そ
れともまだ開発中かアイディア段階?」との問いに
「Just an Idea」と答えていたり,また「将来の作業
に行えるようになれば,ファイルアップローダや
blog以上に情報共有ツールとして気軽に,便利に
利用されていきそうです.
また,blogを横断した検索やBlogRollingのように,
複数のWikiを横断するメタWikiアプリケーションと
いう可能性も出てきます.
としてはAtom APIを採用すべきだと考えている」と
InterWikiなど,Wiki間をシームレスにつなげたい
書いているのはちょっと気になります.JSP Wikiの
という要求は昔からあり,WebサービスAPIはそれを
動き次第で,現在のKwikiの影響力とあいまって一気
飛躍的に推し進めるかもしれません.Wikiに限らず,
にAtom APIへの流れが加速するかもしれません.
他のツールとも連携できますから,ワークフローツ
ところで,AtomではAtomデータ自体をRESTで
もSOAPでも送受信できるのですが,ハックな考え
方をすれば「Wikiページに対して GET,POST,
ールの一部として使うような形態もできてくるかも
しれません.
たとえば執筆でWikiを使っているという話をよく
PUT,DELETEを投げるRESTなら,直接Wiki記法
聞くようになりました.これがWikiで共同執筆され
のテキストをRESTで投げたらどうだろう」という考
た原稿が,編集部のblogにPOSTされ,編集者や監
え方もありえるでしょう.
修者が「既読(=チェック済み)
」マークを付けると
実際にこうした実装として,2005年9月には,ご
注11
自動的にデザイナにメール送信,デザイナが返信し
を公開されました.本連載第
た組版データとPDFがblogに添付され,そこから組
2回でご紹介したようなシンプルなWikiであれば,こ
版データが印刷所に流れ,PDFがWikiにPOSTされ
の方式が十分に動作することがわかります.
る.こんなしくみもAPIが整って,期待まであればす
ろう氏がREST Wiki
正直に言って,どの方式が生き残っていくのか,
ぐに実現できそうです.
あるいはどういった形で共存していくのかはまだ見
あるいは企画部のblogにアイデアがどんどんエン
えません.また,一言でWikiといっても,たとえば
トリされ,モノになると思われたものはWikiにPOST
MediaWikiのようにあるページ名にページ本文とノ
されてディスカッションとブラッシュアップが行わ
ート(Wikipediaでは「裏ページ」と説明されていま
れ,PDF化されて稟議担当者にメールされるなど,
す)がある場合,どう扱えば良いのかなど,Wikiの
活用の幅はアイディアの数だけ広がります.
考え方が多様化してくるとそれに応じてまた難しい
問題も出てきそうです.
2004年の話になりますが,Kwikiを含む商用サー
ビスを提供するSocialtextのblogにAtom Wiki and
注9)http://www.xml.com/pub/a/2004/04/14/atomwiki.html
注10)http://search.cpan.org/dist/Kwiki-Atom/
注11)http://rails2u.com:8008/
注12)http://ecto.kung-foo.tv/index.php
注13)http://witha.jp/BlogWrite/
Dec.
2005 - 75
Reprint without permission prohibition
Copyright (c) 2005-2006 All Rights Reserved by Gijutsu-Hyohron Co., Ltd.
図5●●●WikiエンジンとWikiストレージを切り離したWikiシステム
クライアント
ブラウザアクセス
getPageHTML
Wikiストレージ
Wikiエンジン
変換
getPageText
getPageText
getPageText
putPageText
putPageText
the Writeable Webというエントリ注14が掲載されま
置サーバが別でも良くなります. Wikiエンジンと
した.このエントリでは,
「KwikiからMovable Type
Wikiストレージが1対1でなくても良く,重い変換処
に投稿するための作業をした」
「ectoのようなデスク
理を行うWikiエンジンは複数設置し,Wikiストレー
トップクライアントでのWikiへの投稿にまず興奮し
ジは一ヵ所ということもできます.
た」など,すでにベーシックな Atom APIの効用を
垣間見せています.
意義があるか微妙ですが,WalWikiとHikiと
PukiWikiとFSWikiのWikiエンジンサーバが,同じ
Wikiストレージにアクセスすることもできます.逆
●●●
新しいWikiアーキテクチャ●●●
Wikiそのものの活用と同時に,筆者が夢想してい
るのはより柔軟なWikiシステムのアーキテクチャが
に,Wikiストレージも入り口が一ヵ所であれば,実
際にデータを持つバックエンドを分散することがで
きるかもしれません.
実現できないかです.この話をすれば夢物語,大風
同時に,WikiのプラグインもWikiエンジンや
呂敷,非現実的と言われるかもしれません.でも
Wikiストレージから切り離すことができます.
Wikiアプリケーションを,テキストとHTMLの変換
たとえば,Wikiトラックバックプラグインとい
を受け持つWikiエンジンと,データを保持するWiki
うものがあるとして,これがAPIを介して直接
ストレージに分けて,その間をAPIで結べば,個人で
Wikiストレージ上のトラックバック先のページ
も設置できる柔軟な分散環境にならないかと思って
デ ー タ を 更 新 す る よ う に で き て い れ ば, ど の
います.
Wikiでも使えることになります.ここで採用さ
図5がこの形態になります.この形態では,Wikiエ
れているのがAtom APIのように共通的なAPIで
ンジンとWikiストレージは開発言語や動作環境,設
あれば,同じ理屈でblogのエンジンもストレー
注14)http://www.socialtext.com/weblog/040914wikiatom.html
新イベント「Wiki小話」開始
去る2005年9月に,Wikiばなとはちょっと違う
注A
Wiki小話 というイベントを立ち上げました.
TEXT
TUKAMOTO Makio
ろうということになりました.こちらは仕事帰りにさら
っと聞いて帰れるトークセッションの形式でいきたいと
Wikiばなは不定期にですが,この号が出るころには
思います.たとえばウィークデーの8時ごろから小一時
10月に予定されている第5回が終了して,レポートな
間.Wiki界隈で今気になるあの人やこの人に,あれと
ども挙がっているかと思います.今後もWikiばなは,
かこれとかのお話をお願いして.
第3回までのみんなでわいわいやるフリートーク/ディ
スカッションのスタイルで続いていくとのことです.
気軽に楽しく聞けるイベントを目指しますので,ぜひ
お立ち寄りください!
これとは別に「イベントはちょこちょこあると嬉しい
よね」ということで,Wikiばなにも参加されている山
注A)http://wikibana.socoda.net/wiki.cgi?Wiki%be%ae%cf%c3
下たつをさんと,Wiki小話というイベントを月例でや
76 - Software Design
Reprint without permission prohibition
Copyright (c) 2005-2006 All Rights Reserved by Gijutsu-Hyohron Co., Ltd.
図6●●●より分散化したWikiシステム
Wikiプラグイン
サーバ
Wikiエンジン
サーバ
Wikiストレージ
サーバ
Wikiストレージ
バックエンド
クライアント
blogエンジンサーバ
ジと分け,Wikiとblogが同じストレージを見る
図6が,夢物語の集大成です.各所でAPIを介した
ようなこともできそうです.例えば,Wikiで新
通信が行われ,当然それだけのオーバーヘッドがあ
規作成されたページがblogの形で表示されると
ります.でも,デメリットははっきりしているのだ
便利かもしれません.
けど,それでも可能性を感じないでしょうか.
今後の可能性
今回はWikiのWebサービスAPIという面につい
ものにもなっていませんし,デファクトスタンダ
て,現在の主流な実装であるWiki RPCを中心にご
ードもなく,活用されているとも言えない状況で
紹介しました.また,今後の動きとしてAtom API
す.でも,それを検討する動きはありますし,筆
やRESTなどにも触れました.汗顔の至りではあり
者はその先に大きな可能性を感じています.この
ますが,さらに筆者の夢物語も交えています.
可能性を,お読みくださった皆さんにも共有して
WikiのWebサービスAPIは,まだあたりまえの
いただければ幸いです.s
yomoyomoのWikiばなし
TEXT
yomoyomo
第5回 WikiとWYSIWYG編集
WikiにWYSIWYG編集機能を求める声は以前からあり,
日本でも@wiki(http://atwiki.jp/)などWYSIWYG
っています.
前回の本連載でふしはらかんさんが,Wikiにおける
編集機能を提供するエントリユーザ向けのWikiホスティン
JavaScriptの活用例を紹介されていますが,Wikiwygも
グサービスがすでに存在します. このWikiにおける
JavaScriptで実装され,Ajax技術を利用しており,現在
WYSIWYG編集機能に関して,幅広い利用が期待できる
のWebアプリケーションのトレンドに合致しています.
のがWikiwyg(http://www.wikiwyg.net/)です.
Wikiwygはオープンソースとして Kwiki(http://www.
個人的には,デモページ(http://demo.wikiwyg.net/)
kwiki.org/),並びにそれをベースにしたSocialtext
で初めてWikiwygに触れ,ページをダブルクリックする
Workplaceに統合されており,しかもFirefoxブラウザで
だけでいきなりWYSIWYGの編集画面が現れるのを見た
あれば拡張機能を導入することで,上記以外の一部のWiki
ときは,初めてWikiを見たときの驚きを思い出したほど
上でもWikiwygの編集機能が利用可能です.
です.しかもWikiwygは,ラジオボタン1つでWYSIWYG
もしかすると,数年後にはWikiの編集はWYSIWYGが
表示とWiki記法表示とプレビュー表示を切り替えられる
あたりまえとなり,しかもWikiページから「編集リンク」
など, Wikiの「素早さ」
,
「手軽さ」といった美点も保
が消えているかもしれません.
Dec.
2005 - 77
Reprint without permission prohibition
Copyright (c) 2005-2006 All Rights Reserved by Gijutsu-Hyohron Co., Ltd.
Fly UP