Comments
Description
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.