wiki と web サービス api

15
Wiki と Web とととと API

Upload: fritz-wells

Post on 03-Jan-2016

84 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Wiki と Web サービス API

Wiki と Web サービス API

Page 2: 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)

Page 3: Wiki と Web サービス API

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年頃の議論で終わってしまっているため、あまり利用されてない?

Page 4: Wiki と Web サービス API

Wiki と Web サービス(表 1 )

表 1 : Wiki RPC で定義されているプロシージャ

Page 5: Wiki と Web サービス API

Wiki と Web サービス(表 2 )

表 2 : Wiki RPC の実装状況

Page 6: Wiki と Web サービス API

Wiki RPC を使ってみる( 1 )

FSWiki向けのWiki RPCの実装まかまか氏が XML for Wikiで公開

設置 Sourceforgeからwiki3_5_9.zipを取得、展開

XML for Wikiからwiki_xmlrpc-204.tar.gzを取得し、同ディレクトリに展開

Page 7: Wiki と Web サービス API

Wiki RPC を使ってみる(図 1 )

wiki.cgi (要 Perl パス修正)

( CGI設置ディレクトリ、要書込み権限)

config

data

docs

lib

plugin

theme

tmpl

attach

backup

pdf

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 の設置

Page 8: Wiki と Web サービス API

Wiki RPC を使ってみる( 2 )

Perlの XMLRPC-Liteモジュールでアクセス

Wikiページ一覧とページ情報の取得 wiki.getAllPagesとwiki.getPageInfoを使用ソースと結果は図 2

Wikiへの投稿と、HTML形式での取得 wiki.putPageとwiki.getPageHTMLを使用ソースと結果は図 3

Page 9: Wiki と Web サービス API

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 によるページ一覧とページ情報の取得

Page 10: Wiki と Web サービス API

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 によるページの投稿と取得

Page 11: Wiki と Web サービス API

Wiki RPC を使ってみる(図 4 )

図 4 : Wiki RPC で投稿したページ

Page 12: Wiki と Web サービス API

今後の可能性( 1) Web サービス API 仕様の方向

Atom API 最新 Web サービス API エクスプローラに 解説

Atom Autodiscovery などより練りこまれた仕組 XML-RPC のアプリケーション / サイトごとに異なる命令

群に対し、 REST の統一的な利用法 Kwiki に Atom API をサポートするプラグイン

Wykiwyg を公開した Socialtext が使用しているなど、 Kwiki の動向は無視できなくなる可能性が。

REST Atom 、 XML を使わないプレインテキストの REST

REST Wiki

Page 13: Wiki と Web サービス API

今後の可能性( 2) Wiki API が可能にすること

Wiki のより自由な活用 Wiki の閲覧、更新を快適にするクライアント 複数の Wiki を横断するめた Wiki アプリケーション 共有ストレージとしての活用 ワークフローツールへの組み込み

Wiki のより自由なアーキテクチャ Wiki エンジンが Wiki ストレージに API でアクセス Wiki プラグインが Wiki エンジンや Wiki ストレージ

に API でアクセス 分散 Wiki ストレージ化

Page 14: Wiki と Web サービス API

今後の可能性(図 4)

図 4 : Wiki エンジンと Wiki ストレージを切り離した Wiki システム

ブラウザアクセスgetPaceHTML

getPageText

Wiki エンジン Wiki ストレージ

getPageText

getPageText変換

putPageText getPageText

Page 15: Wiki と Web サービス API

今後の可能性(図 5)

図 5 :より分散化した Wiki システム

Wiki エンジンサーバ

Wiki ストレージサーバ

Wiki プラグインサーバ

Wiki ストレージバックエンドblog エンジンサーバ