2010年12月7日火曜日

CPubについて書いてみた

現在、開発中のWikiからepub,idmlを書き出すWebシステムの紹介をする。
このエントリーをそのまま紹介のショットにしてしまおうと企んでいることは、内緒にして「CPub」について書く。っていうか前置きいいから早く書けと。


CPubとは
文章を最近よく目にするようになってきたマークダウン記法で書く機能と、その文章を各種データにコンバートする機能を提供するWebアプリケーション。JavaベースのWebアプリケーション構築プラットフォーム(オープンソースのフレームワーク)であるGrailsを使用して開発したもの。


↑この画像は、2010年11月27日開催された
「DTPの勉強部屋 第19回」のLTで紹介したもの。

Wikiの(簡単な)解説
  • その前に、「Wikiってナニ?」「マークダウンってウマいの?」という人のために簡単に解説する。Wikiは極めて広義なので、詳細は控える。Wikiの説明には、Wikipedia先生による解説があるが、読んでいると難しいので、Wiki自体が難しいと思われると嫌なので、ちょっとだけ解説したい。
  • ものを書く人にとっては、書式に慣れさえすれば、ワ●ドよりも、●太郎よりも、種々あるブログなどのCMSの標準エディタよりも愛おしくなる(はず)。
  • 例えば、ページを作りたいときには、ページ追加という機能もあるが、下記のように、ページタイトルを「[]※カギ括弧」を付けてリンクとして書くことで、準備が整う。


↑新しいページのリンクを書いたところ。([CPubについて])


↑更新すると、CPubについて(add)となる。
このリンクをクリックすれば下記のように、新しいページが作られる。

  • このように作られたページは、先ほどのページを親とした「子ページ」として追加される。これは後からでも移動が可能で、文書を構造化しながら体系的に作成していくことができる。
  • 代表的な記法では、行頭に「*」や、「#」を付ける(直後は半角スペース)と、リスト(箇条書き)にできたり、CPubでは「h1.」と行頭に付けると、HTMLでいうH1扱いになるという記法を採用している。HTMLの場合、<h1>〜</h1>で囲う必要があるが、マークダウンでは、行頭に付けるだけでその書式が適用されるというように、スタイルを簡略化して書くことができる。
  • どんな記法があるかどうかは、システムにより異なるので、実際に試して確認した方が早い。と、この辺で逃げてみる。。。

CPubからの出力
  • CPubは、これらの記法で書かれた文書を、現在ではとりあえず3種類のデータに出力する。※HTMLは当然のことなので省略。
  1. bookreader
  2. IDML
  3. EPUB
  • 現状でも出力出来る状態。あとは記法をどこまで実装するか、変換をどこまでするかだけ。
↑それぞれをクリックすると、そのページ以下の文書を各フォーマットに
変換してダウンロードすることができる。

bookreaderへの変換
  • bookreader形式は、bookreader.jsとしてGoogleCodeでソース公開されている。ライセンスはAPL2のJavaScript。
  • 文章をブラウザで読むときに、縦スクロールではなく、画面サイズに合わせた横スクロール型にするもの。縦が横になっただけの話なのだが、PCのブラウザで読む時には、この形式はかなり読みやすさを提供してくれる。
  • iPadでもブラウザを通して見ることができるので、CPubでは、iOSのジェスチャーに対応するように改造したものを落とせるようにした。
  • 書き手にとっても、擬似的なページ概念があるだけでも表現力として見たときに、素のHTMLよりはいいだろうと思う。
  • ダウンロードしたzipファイルを解凍すると、下記のようなファイルが展開される。

↑index.htmlをPCのブラウザで開いたところ。

↑同じファイルをiPadのSafari(GoodReader経由)で開くとこんな感じ。


IDMLへの変換
  • IDMLは、DTPアプリケーションのAdobeInDesignで開くことのできるデータ。DTPとはDeskTopPublishingの略で、その昔写植と呼ばれていた「版」を作る作業のこと。現在ではPC上でほぼ完結する。InDesignは、「印刷のための版」を出力ターゲットにしているDTP業界ではスタンダードなレイアウトアプリケーションだ。
  • InDesignの現在のバージョンはCS5で、下記にも登場するEPUB出力なども機能として持っており、ドキュメントに動きを付けたインタラクティブPDF(Adobe仕様)への出力や、Flashへの持ち込みも可能となってきており、前述のように「紙のため」だけではなくなってきているのも事実である。
  • CPubは、このIDML形式データ(InDesignでレイアウトをするにあたって必要なデータ一式)をダウンロードすることができる。
↑ダウンロードしたzipを展開したところ。

↑図1 book.idmlを開くと、InDesignが立ち上がる。(画面はCS5)
  • 上の図1は、InDesignで開いた直後。ただ流れているように見えるが、マークダウン記法でかかれた「h1」や「h2」といったスタイルを、段落スタイルとして読み込んでいる。
  • 画像も一緒にダウンロードされてくるので、インラインとして配置、リンクされている。
  • InDesignのワード取り込みと比較した場合に考えなければいけないのは、ワードは機能の豊富さから、自由すぎて、いろんなことができてしまうので、複雑になりがち。その複雑さはかえってInDesignでは邪魔になる。それよりも、マークダウンで書かれてスタイルとして出てきた方が後の取り回しが楽である。

↑図2 簡単にそれらしく調整してみた。
  • 図1の状態から、段落スタイルの調整と、テキストフレーム設定で2段組みにしたりと、それぐらいしかしてないが、体裁を整えていけば出版物のクオリティに持って行ける。
  • ここまで行けば、InDesignを使える人ならもう説明はいらないと思う。工夫次第でなんとでもなる、という感覚を持ってもらったことだろう。
  • 今までは、制作側の作業は、原稿データを加工するところから始まっていたが、こういうフローが確立すれば、効率化が図れるはずであるし、執筆者にも早い段階で、仕上がりイメージを出せることは良いことであるはず。なんなら執筆者がInDesignと、読み込み用のテンプレートを持っていれば、そのテンプレートにあるマスタページやスタイルを読み込んでしまえば完成、というのもありだろう。そしたら、うちいらんがな、、、ま、いいか。
EPUBへの変換
    • EPUBは、iBooksなどの電子書籍リーダーアプリに取り込めたりするファイルフォーマット。詳しくはWikipedia先生に聞いてみよう。
    • EPUBの利点は、PDFやHTMLの場合、文字の大きさなどの見た目は、執筆者側、制作者側が決める。読み手はその範囲内で文書を読む。それに対して、EPUBは、読み手側が自分が読みやすいようにレイアウトを変えることができ、制作側が決めた1行の文字数や1ページの行数などは関係なくなる。まあざっくり言えばそういうこと。
    • iBooksなんかでは、ページに「しおり」を付ける機能や用語をマーキングするように「ハイライト」してストックさせる機能などがある。そのコンテンツをどう読むか、どう使うかは、ユーザ次第なのだ、というところがええところやないかと思う。
    • CPubからダウンロードしてきた.epubファイルを、iBooksなら、iTunesの「ブック」にドラッグすれば終わり。
    • CPubはネットワーク上でしかみれないが、EPUBならiPadに入れて、ネットワークがないところでも見ることが出来る。
    • 今のところ体裁とかはあんまり考えずにダウンロードさせているが、なんかいいCSSのテンプレートとかあったらどしどしお寄せください。
    ↑ダウンロードしたのは、book.epub。
    それを展開して中身を見てみたのがbookフォルダ。

    ↑iPad(iBooks)に入れてみたところ。
    出演:@kanemu

    CPubを使った出版物(紙もWebも電子書籍もなんでも)の執筆、制作ワークフロー
    • 従来の一般的な出版フローは、
    1. 執筆者がワードなどで原稿を書く。
    2. 編集者が内容の精査としての朱入れも含み、編集作業を行った後、何かしらのデータとして制作側に渡す。
    3. 制作側がレイアウトして、初稿を出す。
    4. 編集者を経て執筆者が確認する。
    • と、こんな感じのフローが繰り返されて、出版されるわけだが、いろんな人の手、作業を経ているこの状況は、昔から変わっていない。
    • しかも、電子書籍などが一般化しようとする中、DTPデータが出来上がってから、そこから四苦八苦しながらデータを電子化するという非効率なことが一般的に行われる。
    • それはそれで、悪いことじゃないかもしれないが、非効率はミスを生むし、時間をかけて結果を出したところで変更があるわけで、ただただお金にならない忙しさが増すだけである。
    • CPubを使った出版フローでは、下記のようなことが考えられる。
    1. よーし、書くぞ!と、執筆者がCPubで原稿を書く。
    2. ここ、こんな風がええんちゃいます?と編集者が朱入れをCPub上でする。
    3. あ、そうかも…執筆者はその内容を確認する。
    4. そろそろ、レイアウトしてみっか、となったところで、IDMLをダウンロードして、体裁を整えて見てみる。
    5. おー、こんな感じでええんちゃう、となったら、さらにCPub上で内容について精査する。これは、形が見えたときに、さらにやりたくなる傾向があるから。
    6. まー、時間もないし、そろそろ本格的に体裁整えましょうー、となったらもう一度IDMLを落として、スタイルを読み込んだりなんだりして完成させる。
    7. このとき、いかに自動化してレイアウトを再現できるか、いかにDTPオペの手をかけないかが勝負。ダメではないが、制作側としてはそれを目指さないといかんと思う。
    8. どうしてもDTPで手直ししちゃったら、CPubをメンテ。ま、やろうと思えば、InDesignからバックもできると思うけど。そこに価値を感じてくれないならやらない。
    9. んで、EPUB出しますか、ハイ、どうぞと。
    • 美しいですよねえ。素晴らしい。これやりたいんだな、、、なので社内では始めています。
    • 数式とかどうすんの?とかあると思いますが、まずはやってみようという姿勢がないとなんともならんし、やろうと思えば出来る話ばっかりだけど、始められるところから始めつつ、本当にそこに必要なものは何かを、執筆者や編集者、データ制作者で議論しながら進めないと、こういうのは成功しない。よーわかっとると思いますが。
    • ちなみにDRM(デジタル著作権管理)とかは、僕らが考えることではないので、そちらでがんばってください。
    • ついでにいうと、このコンテンツに対する著作権が議論されることはよくあるが、そのデータに対する著作権は議論されないのはどういうこと?
    何をしたいか
    • これは売り物のシステムとして考えていない。やろうと思えば誰だって、いつだってできるし、価格を付けた途端によくわからない未来への責任を負うことになるのが嫌。
    • だれも見えてないこの先に価格という価値観だけで進むのは両者にとって良いことはない、というのがうちの主張。
    • それよりも、こういうものをみんなでシェアして使いながら、制作を変えて行こうよ、というメッセージの方が強い。
    • 今まで通りの制作なら、印刷というパイが確実に減る中、減退の一途。デジタルデータを作る我々が変えて行かなければ、だれも変えない。
    • むしろ著者の方がこういう取り組みに積極的じゃないかと思う。そこにニーズはあるわけで、ほっとけば、いつのまにか完全な孤立もしくは融通の利かない業界になる。
    • こういう気持ちに賛同してくれる人たちなら、一緒になってもっと改善していきたいと思っている。なので、そもそもCPubはオープンソースをベースに作られているので、それにならってオープンソースで公開していく。ダウロードについても、bookreader.js自体がオープンソースだからもちろん無料。IDMLとかEPUBはわがまま出そうなので、どうしようか考え中。
    • とりあえずやりたい人募集中
    • あ、PAGE2011でもやりますよ、この辺。
    ということで、校正してないけど、時間なくなっちゃったので先にアップしてしまうのだ。
    次は、自動組版系のdotSuriを書く。