WikiのWebサービスAPI
Download
Report
Transcript WikiのWebサービスAPI
WikiとWebサービスAPI
WikiとWebサービスAPI(1)
WebサービスAPIの流行
Blogが投稿用のWebサービスAPIを提供
Amazon、Google、Yahooなどが各種情報取
得のためのWebサービスAPIを提供
最新WebサービスAPIエクスプローラ(ISBN:47741-2496-6)
Google Hacks(ISBN:4-87311-136-6)
WikiとWebサービスAPI(2)
XML-RPCでのAPI提供(2002年頃)
Wiki RPC Version 1
JSP Wikiで提案、twiki、MoinMoin、ModWiki、
phpWikiなどでも実装される。
参照系の機能が中心、データをbase64エンコード。
Wiki RPC Version 2
JSP Wikiで提案、MoinMoin、FSWikiなどで採用。
更新のためのputPageなどが追加される。
データは基本的にutf-8、base64エンコードはしない。
強いて言えばWiki RPCベースのものが多い。
2002年頃の議論で終わってしまっているため、あまり利
用されてない?
WikiとWebサービス(表1)
表1:Wiki RPCで定義されているプロシージャ
WikiとWebサービス(表2)
表2:Wiki RPCの実装状況
Wiki RPCを使ってみる(1)
FSWiki向けのWiki RPCの実装
まかまか氏がXML for Wikiで公開
設置
Sourceforgeからwiki3_5_9.zipを取得、展
開
XML for Wikiからwiki_xmlrpc-204.tar.gz
を取得し、同ディレクトリに展開
Wiki RPCを使ってみる(図1)
(1)FS Wikiの設置
(2)Wiki RPCの追加
(CGI設置ディレクトリ、要書込み権限)
wiki.cgi(要Perlパス修正)
wiki_xmlrpc.cgi(要Perlパス修正)
config
wikigate.cgi(要Perlパス修正)
data
lib
docs
lib
plugin
theme
tmpl
wiki3_5_9.zipの内容
attach
backup
pdf
temp
空フォルダを作成
図1:FSWikiとWiki RPCの設置
Wiki_xmlrpc-204.tar.gzの内容
Wiki RPCを使ってみる(2)
PerlのXMLRPC-Liteモジュールでアクセス
Wikiページ一覧とページ情報の取得
wiki.getAllPagesとwiki.getPageInfoを使用
ソースと結果は図2
Wikiへの投稿と、HTML形式での取得
wiki.putPageとwiki.getPageHTMLを使用
ソースと結果は図3
Wiki RPCを使ってみる(図2)
■ ソース
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";
}
■ 結果
$VAR1
$VAR1
$VAR1
$VAR1
$VAR1
=
=
=
=
=
{'lastModified'
{'lastModified'
{'lastModified'
{'lastModified'
{'lastModified'
=>
=>
=>
=>
=>
'20050827T11:59:06','version'
'20050827T11:59:06','version'
'20050827T11:59:06','version'
'20050827T11:59:06','version'
'20050827T11:59:06','version'
=>
=>
=>
=>
=>
'1','author'
'1','author'
'1','author'
'1','author'
'1','author'
=>
=>
=>
=>
=>
'','name'
'','name'
'','name'
'','name'
'','name'
図2:Wiki RPCによるページ一覧とページ情報の取得
=>
=>
=>
=>
=>
'FrontPage'};
'Help'};
'Help/FSWiki'};
'Help/Hiki'};
'Help/YukiWiki'};
Wiki RPCを使ってみる(図3)
■ ソース
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;
■ 結果
[投稿結果] 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>
図3:Wiki RPCによるページの投稿と取得
Wiki RPCを使ってみる(図4)
図4:Wiki RPCで投稿したページ
今後の可能性(1)
WebサービスAPI仕様の方向
Atom API
最新WebサービスAPIエクスプローラに
解説
KwikiにAtom APIをサポートするプラグイン
Atom Autodiscoveryなどより練りこまれた仕組
XML-RPCのアプリケーション/サイトごとに異なる命令群に対
し、RESTの統一的な利用法
Wykiwygを公開したSocialtextが使用しているなど、Kwiki
の動向は無視できなくなる可能性が。
REST
Atom、XMLを使わないプレインテキストのREST
REST Wiki
今後の可能性(2)
Wiki APIが可能にすること
Wikiのより自由な活用
Wikiの閲覧、更新を快適にするクライアント
複数のWikiを横断するめたWikiアプリケーション
共有ストレージとしての活用
ワークフローツールへの組み込み
Wikiのより自由なアーキテクチャ
WikiエンジンがWikiストレージにAPIでアクセス
WikiプラグインがWikiエンジンやWikiストレージにAPI
でアクセス
分散Wikiストレージ化
今後の可能性(図4)
Wikiエンジン
ブラウザアクセス
getPaceHTML
getPageText
putPageText
変換
Wikiストレージ
getPageText
getPageText
getPageText
図4:WikiエンジンとWikiストレージを切り離したWikiシステム
今後の可能性(図5)
Wikiプラグインサーバ
Wikiストレージサーバ
Wikiエンジンサーバ
blogエンジンサーバ
図5:より分散化したWikiシステム
Wikiストレージバックエンド