2013/05/11

『ICRP111 から考えたこと』電子化のお手伝いをしました

有志によってまとめられたブックレット『ICRP111 から考えたこと』の電子化、正確にはePUBとmobiフォーマット制作のお手伝いをしました。こちらからダウンロードできます(下記はDropboxへのリンクです)。


ICRP 111

ICRP 111というのは、国際放射線防護委員会(ICRP)による勧告111という意味で、チェルノブイリへの対応を主導したジャック・ロシャール氏を主筆としてまとめられた文書とのこと。

2011年に起きた福島第一原子力発電所の事故によってまき散らされた放射線源とその影響について、どのようにリスクを算定し、どのように判断すべきなのかを考えるためのアドバイスをまとめたもの、だと理解しています。とはいえ、僕は元のICRP 111を読んでないので本当にそうなのかは分かりません。

今回のブックレットは、このICRP 111を読み解くために行われたインターネット上での「模擬授業」(というなの対話)をまとめたものです。母なる偶然の導きによって、哲劇コンビの著作を担当されてらっしゃる朝日出版社の赤井さんの知己を得て、そこから赤井さんが関わられている今回のプロジェクトのお手伝いをすることになりました。

技術的なお話

さて、この文書には元となるPDF版があり、僕の担当はそれをePUB、mobi化するという作業でした。mobi化についてはePUBフォーマットをAmazonさんの変換ツールkindlegenを使って変換しているだけなので、実際にはePUBフォーマットを作成するのが主な作業です。

ePUB化のツールには、プログラミング言語Rubyで実装された文書処理ツールReVIEWを使用しています。 ReVIEWを採用した理由は、仕事でも使っていることもありツールの振る舞いやハマりどころがある程度分かっていたことが大きいです。最近はソースも読み始めていたので、何かあっても自分で何とかできるだろうという目算がありました。さらに、もしニッチもサッチも行かなくなったら、メンテナの武藤さんに泣きつこうという打算もあったことを告白いたします ;-P

一方で、ReVIEWが開発されたバックグラウンドであるIT関連書籍の外で、どの程度通用するのかを試してみたいという気持ちもありました。

ReVIEW

さて、ReVIEWはテキストファイルへの簡単なマークアップを元にしてさまざまなフォーマットへの出力を行ってくれるツールです。基本的にはReVIEWのドキュメントにある通りマークアップをして設定ファイルを書き、review-epubmakerコマンドに掛けるだけです。

$ review-epubmaker config.yaml

ただ、先ほども書いたように、ReVIEWはもともとIT関連書籍の執筆をバックグラウンドにしています。そのため今回のような対話形式の書籍を表現するためのタグセットはもちろんありません。

もちろん、単に見栄えだけを整えるだけなら、おそらく話者名の部分を太字にするだけでもなんとかなります。例えば、以下のように。

Mr. Gumby Doctor! my brain hurt ...
ただ、これはあまりにも残念です。というのも本文中に太字にすべき箇所があって、話者名とは違うスタイルにしたいと思った場合、この方法は破綻します。

Mr. Gumby Doctor! my brain hurt, too ...
幸い、ReVIEWには文法を拡張する方法があるので、今回はこれを用いました。@<speaker>{foo}というインラインタグを作成して、これをHTMLの<span class="speaker">foo</span>に展開しています。

ただし、この方法にも落とし穴はあります。ReVIEWのような文書処理ツールは、書式が標準化されていることが強みの一つで、だからこそ一つの書式をさまざまな形で出力することができます。このような方法で文法の拡張を続けると、せっかくの強みが活かせないことになります。

文法の拡張については慎重に、例えば文書のタイプに応じてスキーマセット(ひと揃いの文書構造)を用意するような事が必要だと思います。また今回はそこまで対応しませんでしたが、PDF版を見ていただくと分かるように、文書のパート毎にフォーマットが異なるような文章をReVIEWで表現する方法というのも、IT関連書以外に適用して行く上では必要だと思いました。

画像と表

画像と表の扱いは随分と迷いました。ePUBの利点のひとつに、視覚障碍者へ配慮した文書を作成しやすいという点があります。当初、図版はできるだけSVG化したいと思っていたのですが、元になる図版がラスタデータのみであったり、ラスタデータの上にベクタデータを重ねているようなものが複数あったため諦めました。

これは今後、電子化を見据えてデータを作って行く際に必要な事ですが、グラフィカルな要素であってもSVGのように機械可読性のあるデータ形式を選択することは、アクセシビリティや検索最適化のためにも重要だと思います。

imageタグに代替テキストを指定しようと思っていたのですが、ReVIEW標準の機能では対応してません。こちらも何とか対応しようと思ったのですが、僕の能力不足で実現できませんでした。今後の課題です。

表に関しては、「8日目」に登場するものはHTMLの表にしました。もう一つ、表が登場する箇所があるのですが、ここは本文中に「表の画像を取得してきた」という記述があるので画像のままとしています。

所感

今回の作業を通じて思ったのは、ITとは何の関係もないジャンルの出版社が電子書籍を制作するには、まだまだ難しい点が多いなあということです。

また、これは以前からの持論なのですが、どうも日本の出版物というのは欧米のそれとは異なり、版面を1枚の絵として認識しているのではないかと思っています。一度輸入された活版が廃れて、木版によるページ刷りで書物が作られたのはその現れではないかと。そういう文化と、テキストを整然と構造化して作る西欧的な書物フォーマットを摺り合わせて行く作業が今後必要なんだろうなとも思いました。

何はともあれファイルは公開へとこぎ着けました。ご執筆された皆さんの、また事故現場の近くで不安の中暮らす方々のお役に、わずかでも立てたなら嬉しい限りです。冒頭にも「ガイドライン」と書きましたが、個人的には、ICRP 111もこのブックレットも直接的な解答を得るための物ではないと思います。自分で考えるための、考慮すべき要素を列挙した基準点と考えるべきなんだろうと思います。たぶん。

一応、iBooksとKindle Paperwhiteで表示のチェックを行っていますが、おかしなところなどありましたらお知らせください。

2013/03/30

『パーフェクトPython』の読み進め方、更に一歩進むための書物たち

3/16に行われた PyFes の会場で、技術評論社から発行された『パーフェクトPython』のプレゼント大会が行われ、見事1冊ゲットした。450ページ強の書籍を隅々まで読むには時間が足りないため、ざっと一読した印象と、本書を読んだ方への補助線のようなものを引いてみたいと思う。

導入〜言語仕様

導入である1章、続いて言語仕様の解説が9章まで続く。カバーに「Python 3.3対応」と謳われており、実際のところ本書はPython3.3の入門書だ。基本的な文法は同じなのであまり気になることではないが、Python 2系に関する解説は基本的にない。クラスに関する機能を2系でも使いたい、あるいは特定のサードパーティモジュールを使いたいという方が本書を手に取られるときはご注意いただけると良いのではないかと思う。サードパーティモジュールのPython 3への対応状況は以下にまとめられている。
PYTHON 3 WALL OF SUPERPOWERS
逆に、Python 2系をずっと使ってきて、3.3がリリースされたのでそろそろ真剣に以降しようかと考えている読者にとって、本書は良い選択だと思う。

実践

10から14章は「実践的な開発」と題されている。ただ、中を読んでみるとコマンドラインツール、GUI、テスト、Webアプリケーションなので、これは「Pythonを使ったアプリケーション実装のバリエーション」を紹介するパートだと理解すればよいだろう。
それぞれのテーマがそれだけで1冊の書籍になるような内容なので、読む際にも全体像を把握する事に主眼を置いて、詳細は紹介されているURLや参考文献などを見ると良いだろう。
Webアプリケーションに関する書籍は沢山あるので、それ以外の分野に関して、僕が読んだ事のある書籍を挙げておく。ただ、残念な事にすべて英語の書籍であること、またPython 2系を想定して書かれているものが多い。タイトルの後ろに出版年を記しているので、合わせて参考にしていただきたい。
テキスト処理:
"Text Processing in Python" (2006)
GUI:
"Rapid GUI Programming with Python and Qt: The Definitive Guide to PyQt Programming" (2007)
テスト:
"Python Testing: Beginner's Guide"(2010)

適用範囲、環境構築

15から19章は「適用範囲」と題されていて、こちらはPythonの幅広いサードパーティモジュールを分野ごとに紹介しているパートだ。こちらも限られた紙幅なので、本書を読む際には「こんな事ができますよ」というきっかけ作りにお役立ていただけると良いだろう。
また、付録として環境構築の方法が紹介されているのだが、Mac OSとLinuxではそれぞれCコンパイラの環境をインストールすることが記載されているのに対して、Windowsにおいてはその記載がない。Visual Studio 2010がインストールされていない環境では、本書で紹介されたインストール例が実行できない場合があるのでご注意いただきたい。
Recent Windows Changes in Python 3.3

話はガラリと変わって...

編集の現場から遠ざかって何年か経つので、こういう事をお気楽に言えるのだけれど、最近のプログラミング言語はできる事の範囲が広く、1冊の書籍でその全てを紹介するのはとても難しい。「Battery Included」を標榜するPythonのような言語の場合、言語仕様そのものはコンパクトでも、標準モジュールをくまなく網羅する事さえまず不可能だろう(標準ドキュメントを印刷するとどうなるか想像してみて欲しい)。
だからこそ、本書のように書籍としては言語のコア部分についてはある程度を押さえて、あとはカタログ的にさまざまな機能を紹介するタイプの書籍が現実解となる。読み手としても歯がゆいだろうけれど、作り手側だって歯がゆい気持ちなのだ。それは我々が相手にしている、情報技術が解決すべき問題領域がそれだけ広くなっているということの証左でもある。新たな敵は常に雲の彼方から飛来し続けるのだ。