るびまワークフロー

Jul 26, 2005 From: kazuhiko@f...

こんばんは、かずひこです。

ご連絡が遅くなりすみません。

●第3回の企画 テーマ:るびまを使ったワークフロー 執筆者:かずひこ様

構成案  ◎導入〜るびまとは?(特徴,位置付け)  ◎るびまのワークフロー解説   (どうやって利用しているか,運用時に注意しているポイント)  ◎Wikiを使った編集事例紹介〜るびまの場合  ◎まとめ

上記のような内容に加えて、発刊後の運用を Hiki がどのようにサポートしてい
るかについても書く予定です。

詳細はもうちょっと検討したいので、またご連絡いたします。

どうぞよろしくお願いします。


かずひこ <http://wiki.fdiary.net/kazuhiko/>

 「恋とハックはアジャイルが命!」

Aug 8, 2005 From: kazuhiko@f...

かずひこです。

「[SD200510#3] るびまワークフロー」の第一稿を送ります。6ページ程度とのこ
とでしたが、とりあえず仮に組版していただけますか? その様子をみながら、
減らすなり増やすなりして仕上げたいと思います。


タイトル:Wikiで作ろうウェブ雑誌−『るびま』作りの現場から

Text by かずひこ

みなさんこんにちは、かずひこです。グラフィックデザイナとして働く傍らオー
プンソースソフトウェアの制作にはげみ、その縁がめぐりめぐって2004年8月に
「Rubyのふるさと」株式会社ネットワーク応用通信研究所に転職し、オープンソー
スプログラマとして働いています。「恋とハックはアジャイルが命!」を信条に
これからもいろいろな開発に励みます。

今回の記事では、私も編集に参加している『るびま』を題材に、Wikiで「ウェブ
雑誌」を発行するプロセスについてご紹介します。みなさんのコミュニティでの
情報発信のヒントになれば幸いです。

『Rubyist Magazine』、略して『るびま』は、日本Rubyの会(注)の活動の一つ
として2004年9月に創刊された「RubyistのRubyistによる、Rubyistとそうでない
人のためのウェブ雑誌」です。URIはhttp://jp.rubyist.net/magazine/で、これ
まで8回発行されていて、この記事をみなさんが読むころにはきっと第9号が発行
されているはずです(図)。

(注)日本Rubyの会は、「Rubyの利用者の支援」と「Ruby(とRubyのライブラリ)
開発者の支援」を目的とした任意団体です。現在は、ドキュメントの整備や、イ
ベントへの参加協力等を中心に活動しています。http://jp.rubyist.net/

(図)rubima.png

この『るびま』は、オブジェクト指向スクリプト言語Ruby(注)で書かれた多機
能WikiであるHiki(注)で運用されています。

(注)http://www.ruby-lang.org/

(注)たけうちひとしさん原作のWikiで、現在は私がリリースマネージメントを
担当しています。http://hikiwiki.org/

るびまの編集は、一般読者が目にするサイト(通称「本番Wiki」)とは別に、
「編集Wiki」と呼ばれるWikiで行っています。また編集にかかわる意見交換の場
として、「メーリングリスト」と「IRC」も使っています。これらの編集の場は一
般に公開しておらず、著者および編集者だけに場所と認証方法を伝えています。
なおメーリングリストの参加者は現在37人ですが、そのうちアクティブな編集者
は5〜6人くらいです(図)。

(図)全体の概要図を後で送ります。大体SD200509の4ページ目の図3「追加した
機能のイメージ」程度の大きさの予定。

ではさっそく、今年の7月に発行された第8号の製作の様子をご紹介しましょう。
前号である第7号のリリースが終わるとすぐに、鬼編集者であるささださん(注)
が「prep-0008」という名のページを「編集Wiki」に作って第8号の発行までのス
ケジュールを書き、そこに各編集者が担当予定記事を追記します。

(注)IPAの2004年度未踏ソフトウェア創造事業(未踏ユース)の「Rubyプログラ
ムを高速に実行するための処理系の開発」でスーパークリエーターに認定された
Ruby 界の期待の星。

prep-0008(抜粋)

巻頭言スケジュール

記事の目次・概要締め切り

6/26(日)

概要は、「記事の対象読者」と「記事の目的」を示すようにしてください。

記事の締め切り

7/10(日)

リリース

7/16 (土)

7/17 (日)(予備)

7/18 (月)(予備)

掲載記事

記事名と書く人、編集者の名前を書いておいてください。

巻頭言create

書く人:高橋さん

Rubyist Hotlinks 第 8 回create

インタビュー:ささださん

テープ起こし:卜部/だん/早川/石原夫妻/znz(敬称略順不同)

わりと総括っぽい係:卜部

RD でも書いてみようか第三回 RD as a ruby document formatcreate

微妙。

インタビューやって余力があれば卜部が書く

個人的な優先順位はインタビューのほうが上

なので、落ちるかも。過度な期待は禁物

prep-0008(抜粋)

掲載記事のリストのところは、原稿がなくてもとりあえず予定するページ名への
リンクを張っておきます。最初から完璧を目指さなくてもよいので、この時点で
は「書くかもしれない」くらいの記事もどんどん書いておきます(実際、この
prep-0008に書いてあるRDの記事は落ちました)。

いざ書きはじめるときは、掲載記事のリストにあるリンクをたどるだけですぐに
書く準備ができます。
例えば「0008-ForeWord」のリンクをたどると、そのページの編集画面が現れます
ので、まずは「タイトル」のところに「8号 巻頭言」と書きます。

HikiではURIの一部となる「ページ名」とは別に、表示用の「タイトル」をつける
ことができますので、URIは「http://jp.rubyist.net/magazine/?0008-ForeWord
のように見て意味のわかるものにした上で、「8号 巻頭言」という日本語混じり
の読みやすいタイトルをつけています。

ある程度編集をしたら、保存する前に一度「プレビュー」を確認します。Hikiで
はできるだけ実際の表示に近いプレビューを見せるようになっていますが、あま
りに本物っぽく表示しすぎると「プレビュー中であることを忘れて保存するのを
忘れる」というミスが置きやすくなりますので、るびまの「編集Wiki」ではスタ
イルシートを用いて背景をうすい赤色にしています(図)。

(図)preview.png

「プレビュー」を確認して問題がなければ保存します。保存後のページを見ると、
さきほどの「プレビュー」とほとんど変わりがないのがわかると思います(図)。

(図)final.png

記事はもちろん一気に完璧なものを書き上げてそれでおしまいとは行かず、何度
も編集されることになります。ですから、どのように編集が進行しているか編集
者同士で共有する仕組みが大切になります。

誰かが記事を編集して保存したり、ファイルを添付したり削除したりすると、そ
の都度「編集Wiki」から「編集Wiki更新情報配信メーリングリスト」にどのよう
な変更があったか配信されます。

編集Wiki更新情報配信メール(抜粋)
Subject: Wikicreate update - 0008-Legwork

       URL = http://xxxx.xxxxxx.xxx/xxxxxxx/?0008-Legwork

122,122
タプルは[-丸括弧でくくりますが-]{+要素をカンマで区切って並べたものですが+}、


(122),122
、{+普通は式の他の部分と区別するために丸括弧でくくります。+}要素がひとつしかない


122,122
要素がひとつしかない[-場合-]{+場合は+}、式のグループ化の括弧と区別が付


編集Wiki更新情報配信メール(抜粋)

このように、どういう語句を削除したりどういう語句を追加したりが断片的に配
信されます。
またウェブ上では直前の編集との差分だけでなく、そのページの編集の履歴も見
ることができます。
こちらは本文の全体が表示された上で変更点が色つきで表示されますので、より
わかりやすく編集の過程を把握できます(図)。

(図)diff2.png

もともとHikiでは他の多くのWikiのように行単位で差分を表示していたのですが、
森田尚さんによる、DocDiff(注)という語句ごとや文字ごとに差分を取るツール
を利用して、このように見やすい差分表示を実現しています。

(注)http://raa.ruby-lang.org/project/docdiff/

また、編集中に「記事の最終稿には載らないけれど、それまでは書き留めておき
たい情報」などがあれば、「ノートページプラグイン(注)」を用いてその記事
専用のノートページ(会話ページとも呼びます)を作ります。例えば(図)は、
インタビュー記事のノートページで、テープ起こしの担当が書いてあります。

(注)http://hikiwiki.org/ja/note.rb.html Wikiの生みの親であるウォード・
カニンガム氏はウィキペディアが会話ページと本文を分けている点について、
「とっても良いと思う。すばらしいよ。ウィキペディアは自分は執筆者ではない
と思っている利用者や、メタな議論に興味がない人にとって価値があると思う。
会話ページなくしてウィキペディアはなりたたないんじゃないかな。今や問題な
のは、僕のサイトのウィキには会話ページがなかったけど、それでウィキなのか、
ということなんだ」と述べています。
http://wikimediafoundation.org/wiki/Wikimedia_Quarto/0409/Ja-5

(図)notepage.png

他にも、編集者メーリングリストで「あの記事いつころ完成しそうですか?」と
聞いたり、特定の記事専用のメーリングリストを別に立ち上げたり、IRCで「今か
らこの記事を編集するからしばらく待って」と言ったりなどのやりとりをして、
できるだけ密にコミュニケーションを取るように心がけています。

すべての記事が揃って編集後記も書き終え、最後にささださんのOKが出たらいよ
いよ発行です。発行する時の作業は「編集Wiki」から「本番Wiki」にページとペー
ジ属性をコピーするだけです。今のところこの作業は私がサーバ側で手で行って
いますが、せっかくHikiにはプログラムから直接ページ操作を行える「XML-RPCイ
ンタフェイス(注)」があるので、いずれは外部プログラムによる自動処理にし
たいと考えています。

(注)XML-RPCとは、HTTPのPOSTメソッド経由でXMLをやりとりしてリモートホス
トのプロシージャ(Rubyのメソッドとほぼ同じ)を呼び出す仕組みです。Wikiの
ためのXML-RPCインタフェイスについては
http://www.hyuki.com/yukiwiki/wiki.cgi?WikiRPCが参考になります。Hikiの
XML-RPCインタフェイスもここを参考に実装を進めています。

「編集Wiki」と「本番Wiki」は、テーマ(注)が同じなので記事の見た目は全く
変わりませんが、Hikiの「全ページ凍結機能(注)」を用いて管理者以外は編集
できなくしてあります。

(注)Hikiで全ページを凍結するには、hikiconf.rbに
@options['freeze'] = true
を追加します。

ただし、Hikiでは凍結してあるページでも「掲示板プラグイン」や「トラックバッ
クプラグイン」による追記は可能なので、これらを利用して読者からのフィード
バックを受け付けるようになっています。もし仮に「荒し」のような書き込みを
受けた場合は、管理者権限でページ編集することでそういった書き込みを削除し
ています。

『るびま』のようなウェブ雑誌へのアクセスは、普段はあまり変動がありません
が、発行直後は急激に増えます(図)。ですからシステムがあまり遅いと発行を
心待ちにしていた読者に不満がつのります。Hikiはページの文法のパースのよう
な重そうな処理をキャッシュしたり、mod_ruby(注)に対応するなどして高速化
に力を入れており、Wikiの中ではかなり速いほうだと思います(注)。

(図)access.png 第8号を発行した7月のアクセスログ。19日の夜に発行したので
20日にアクセスが集中し、その後ゆるやかにアクセス数が下がっています。

(注)mod_rubyはApacheにRubyインタプリタを組み込むモジュールです。通常の
CGIではリクエストが来るたびに毎回Rubyインタプリタを起動しますが、
mod_rubyでは新たにRubyインタプリタを起動することなくRubyスクリプトを実行
するので、CGIよりも高速に動作してサーバへの負荷も軽減されます。
http://modruby.net/

(注)『るびま』を運用しているホストでは他に300以上のHikiが稼働していて、
合計で7月は約240万ページビューがありました。

『るびま』編集の様子を通じて、Wikiが「ウェブ雑誌」の発行にも使えることを
紹介しました。このように、Wikiはアイデアと工夫次第でいろんな使い道が考え
られますし、自分好みにカスタマイズすればもっと世界は広がるでしょう。

実際Hikiも『るびま』の編集の過程に出てきたニーズにあわせていろいろな機能
が追加されました。ただ、徐々にコードの見通しが悪くなってきた感は否めない
ので、Hiki開発で培ったノウハウをもとにして、さらに他のいろいろなWikiの実
装も参考にしながら、もっと容易にカスタマイズできるような次世代Hikiを一か
ら作りなおしています。どうぞご期待ください。


かずひこ <http://wiki.fdiary.net/kazuhiko/>

 「恋とハックはアジャイルが命!」
Last modified: 2005-08-08 Attached files total: 48MB