wiki と web サービス api
DESCRIPTION
Wiki と Web サービス API. Wiki と Web サービス API ( 1 ). Web サービス API の流行 Blog が投稿用の Web サービス API を提供 Amazon 、 Google 、 Yahoo などが各種情報取得のための Web サービス API を提供 最新 Web サービス API エクスプローラ( ISBN:4-7741-2496-6 ) Google Hacks ( ISBN:4-87311-136-6 ). Wiki と Web サービス API ( 2 ). XML-RPC での API 提供( 2002 年頃) - PowerPoint PPT PresentationTRANSCRIPT
Wiki と Web サービス API
Wiki と Web サービス API ( 1 )
Webサービス APIの流行 Blogが投稿用のWebサービス APIを提供 Amazon、 Google、 Yahooなどが各種情報取得のためのWebサービス APIを提供
最新Webサービス APIエクスプローラ( ISBN:4-7741-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 )
wiki.cgi (要 Perl パス修正)
( CGI設置ディレクトリ、要書込み権限)
config
data
docs
lib
plugin
theme
tmpl
attach
backup
temp
wiki3_5_9.zipの内容
空フォルダを作成
(1) FS Wiki の設置
wiki_xmlrpc.cgi (要 Perl パス修正)
lib
Wiki_xmlrpc-204.tar.gzの内容
wikigate.cgi (要 Perl パス修正)
(2) Wiki RPC の追加
図 1 : FSWiki と Wiki RPC の設置
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 = {'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'};
図 2 : Wiki RPC によるページ一覧とページ情報の取得
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/] 経由で投稿。
* 投稿できるのか?* 投稿したページを取得できるか?EOFprint "[ 投稿結果 ] “, 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 エクスプローラに 解説
Atom Autodiscovery などより練りこまれた仕組 XML-RPC のアプリケーション / サイトごとに異なる命令
群に対し、 REST の統一的な利用法 Kwiki に Atom API をサポートするプラグイン
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)
図 4 : Wiki エンジンと Wiki ストレージを切り離した Wiki システム
ブラウザアクセスgetPaceHTML
getPageText
Wiki エンジン Wiki ストレージ
getPageText
getPageText変換
putPageText getPageText
今後の可能性(図 5)
図 5 :より分散化した Wiki システム
Wiki エンジンサーバ
Wiki ストレージサーバ
Wiki プラグインサーバ
Wiki ストレージバックエンドblog エンジンサーバ