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ストレージバックエンド
© Copyright 2025 ExpyDoc