1本の元ファイルからPDF,HTML,EPUBを生成できるマークアップ言語「Re:VIEW」(1) 「IT」

株式会社エルデ 土屋勝

コンピュータ言語の中に,テキストファイルに整形命令を加えることで,見出しやレイアウトなどを整えるマークアップ言語というジャンルがあります。もっとも有名なものはHTMLでしょう。他にLaTeX,Wiki,Markdownなどが使われています。その一つとして,同一の元ファイルからPDF,HTML,EPUB,XMLなどさまざまなフォーマットを出力できるRe:VIEW(レビュー)について解説していきます。

Re:VIEWはマークアップ言語の一種

筆者は20年ぐらい前から組版言語のLaTeXを使っており,書籍の原稿は最初からLaTeXフォーマットで書いてしまいます。LaTeXは1000分の1ミリという精度でレイアウトの指定ができたり,章番号,図番号が自動的に振られたり,簡単に索引を作ることができるなど,書籍の制作にはとても便利なツールです。
しかしLaTeXで書いた原稿をHTMLにするとか,EPUBにするのは容易ではありません。別のツールを組み合わせて処理しなければならないし,できあがったファイルも余計なタグが入っており,そのままでは美しくありません。結局,HTMLファイルを手直しして公開することになります。後から間違いが見つかったり,修正したりするとLaTeXファイルだけでなく,HTMLファイルも手直ししなければならないのです。HTMLはHTMLで出版向きではないし,WikiやMarkdownもHTMLファイルを出力することを前提としているので同じことです。
最近ではWebマガジンで連載したり,ブログで公開した文書を書籍として出版し,さらにEPUBなど電子書籍にするといったマルチプラットフォーム対応が進んでいます。しかし,これまでのワークフローではそれぞれのフォーマットごとの表現力や表記法が違いすぎるため,ファイルの修正が避けられず,2度手間,3度手間を強いられてきました。
ところがRe:VIEWは1本の原稿ファイルがあれば,そこからPDF,HTML,EPUB,XMLなどを簡単に出力できるのです。細かいデザインの違いは,プラットフォームごとに定義ファイルを用意しておき,それを修正することで対応します。

review01

Re:VIEWは1本の原稿ファイルからPDF,HTML,XML,EPUBなどを出力できる

日本人が開発し,出版社で使われている

最初のRe:VIEWは2007年ごろ,Ruby技術者である青木峰郎さんがご自身の著書を作成するため,開発されました(青木さんの2007年7月30日の日記,「原稿書きには ReVIEW が動かないと困る」参照)。2008年頃にはオープンソースとして公開され,現在では武藤健志さん,髙橋征義さん,角征典さんらが開発・メンテナンスを続けています。武藤さんは技術系編集プロダクションである株式会社トップスタジオの執行役員,髙橋さんは電子書籍専門の出版社である株式会社達人出版会社長,角さんはIT関係の書籍翻訳などを多数手がけている方です。
トップスタジオや達人出版会はもちろん,オライリー・ジャパンやインプレスといった出版社がRe:VIEWを書籍制作や電子出版などでRe:VIEWを利用しています。日本人が開発し,日本企業が関わっていることから日本語の取り扱い,日本語の出版などに問題はありません。
3月には市ヶ谷でRe:VIEW開発者カンファレンスが開催されました。ここではRe:VIEWとGitHubを使い,32人という大規模な共同執筆を実現した同人集団TechBoosterによる『Effective Android』制作の裏話などが披露されました。

Re:VIEWの実例を見る

まず,Re:VIEWによるマークアップの実際を見て行きましょう。以前上梓した『やさしいPascal入門』(カットシステム)の冒頭部分を手直しし,Re:VIEWのタグを入れた原稿とその出力結果です(オリジナルはLaTeXファイル)。

= やさしいPascal入門

== Pascalってどんな言語?

=== Pascalの歴史

Pascalは1970年、スイスのチューリッヒ工科大学教授であったニクラス・ヴイルト(Niklaus Wirth)によって開発された。教育用として系統的な言語構造をもつこと、高度に抽象化された問題をできるだけ自然な形で明瞭に記述できることを目標にしたという。ALGOLの流れを汲み、厳密な構造化仕様を持っているが簡潔で使いやすく、実用性も高い。ヴイルト自身がPascalコンパイラをPascalで記述している。

1970年というとまだパソコンは登場しておらず、当時はミニコンや大型コンピュータで使われていたことになる。70年代中期に8ビットパソコンの普及が始まると、Pascalは本格的な開発言語として注目を集めた。まず、1978年にUCSD(カリフォルニア大学サンディエゴ校)のケネス・ボウルズ(Kenneth Bowles)が教育用にUCSD Pascalを開発した。UCSD Pascalはエディタ、デバッガ、ファイル管理機能などを備えた統合開発環境であった。さらにボウルズはUCSD Pascalを使ってUCSD p-SystemというOSまで開発した。

=== 一世を風靡したTurbo Pascal

だが、Pascalを有名にしたのはボーランド社Turbo Pascalの功績だろう。フィリップ・カーン(Philippe Kahn)が1982年に設立したボーランド社は、CP/M @<fn>{cpm}で動く統合開発環境Turbo Pascalをリリースした。カーンは学生時代、ヴィルトのPascal講義を受けたと言われている。

//footnote[cpm][8ビットCPU用のOS]

Turbo PascalはMS-DOS版もリリースされた @<fn>{japan}。Turbo Pascalはアセンブラ言語で記述され、メモリ上に(当時のPCに搭載されていたメモリは256KB程度だった!)内容を展開することで、高速に処理を行うことができた。まだハードディスクは高価な代物であり、フロッピーディスクしか外部記憶装置を持っていないパソコンが主流だったのだ。しかも、Microsoft Cなど他のコンパイラ言語と比べると言語自体の価格も安く、Turbo Pascalはホビーストからプロまで、広く実用的なプログラミング言語として使われた

//footnote[japan][日本ではマイクロ・ソフトウェア・アソシエイツ(MSA)とサザンパシフィック(SPL)の2社からNEC PC-9801用に日本語化されたものが発売された]

Turbo PascalはWindowsにも移植されたが、ボーランドはTurbo Pascalの後継製品として95年、よりオブジェクト指向を強めたObject Pascalを開発言語とするビジュアル統合開発環境Delphiをリリースした。なお、ボーランドは2008年7月1日をもって開発言語部門CodeGearをEmbarcadero Technologiesに売却した。

このような経緯から、現在広く使われているPascalはISOの標準Pascalというより、Turbo PascalおよびDelphi系列が主となっている。

これをRe:VIEWでPDF,HTML,EPUBに変換した結果が次の通りです。

review001

PDF

review002

Epub
review003

HTML

文字列の行頭に「=」と付けると章タイトル,「==」が節タイトル,「===」は項タイトルとなります。@<fn>{シンボル}で脚注の挿入,//footnote[シンボル][脚注]で脚注本文です。
HTMLは出力そのままなのでデザインも何もありませんが,CSSをいじればより見栄えの良い仕上がりになります。

Re:VIEWはRubyで動くパッケージ

Re:VIEWはRubyエンジニアである青木峰郎さんが開発したこともあり,Ruby言語で書かれています。利用するのにあたってRubyの知識はまったく必要ありません。ただ,内部でUNIX/Linuxのfork()メソッドを利用しているため,Windowsでは動きません。Windows上でUNIX環境を提供するCygwinとCygwin用のRubyを使う必要があります。一度トライしてみましたが挙動がおかしかったこともあり,諦めました。現在はWindows 8.1にOracle VirtualBoxをインストールし,仮想マシンでDebian Gnu/Linux環境を構築し,Re:VIEWを使っています。日本語入力やフォントの問題からWindowsで完結したいところではありますが。
現在,髙橋征義さんらがUNIX/Linux非依存となる新しい処理系を開発しているということなので,それに期待したいところです。