ワンソース・マルチユース実現の難しさ

ワンソース・マルチユースという言葉はかなり長く使われています。テクニカルドキュメントなどでは大きなシステムを構築して実現しているケースもいろいろ報告されています[1]。しかし、書籍の出版や学術誌の出版ではワンソース・マルチユースはまだ大きな流れにはなっていません。ここではワンソース・マルチユースがなかなか普及しないのはなぜかを考えてみます。

※本ブログをもう少し加筆して次に掲載しています。この続きは下記でどうぞ:
「ワンソース・マルチユース実践の難しさを考える」

ワンソース・マルチユースの仕組み

ワンソース・マルチユースを実現するには、まずソースの形式を決める必要があります。ソースの形式としては、DocBook、DITA、JATS、HTML5などXML/HTMLによるドキュメント形式を採用するのが便利です。XMLはもともとドキュメントをデバイスやアプリケーションから独立の形式で記述するために設計されたものです。

ソースの形式をどのようにするにせよ、ワンソース・マルチユースの出版工程は二つのステップに分けられます。第一はソースとなるドキュメントを用意する工程です。第二は、それをいろいろな目的に出版する工程です。ソースの形式をどう選択するかで、ソースドキュメントの制作の方法が影響を受けます。もちろん、出版工程も影響を受けます。

第一のステップ

ソースとなるドキュメントを執筆、校正して完成する工程です。XML/HTMLではテキストにマークアップ[2]する工程が必須です。マークアップが正しくないと第二ステップの処理ができません。執筆、校正を初めとして、第一のステップは、人手で行うのが主体です。

ドキュメントを制作する工程は、まだコンピュータで処理できるようになっていません。もっとも、現在、いま問題になっているDeNAのキュレーションサイトのコンテンツの収集についての記事を読むと、文章をリライトするコンピュータ処理は、驚くほど進歩しているようです[3]ので、将来は自動的にできるようになるかもしれません。恐ろしいことです。

第二のステップ

第二ステップはソースを加工処理してWebページ、PDF、各種のHELPなどを作成する工程です。XMLはもともとドキュメントをコンピュータで処理するための技術です。ソースドキュメントをXMLで用意することができれば、プログラムで様々な成果物を用意するのは容易です。

例えば、DITAではあまりレイアウトなどに拘らなければDITA-OTを使うだけで、HTML、PDFを初めとする多種類の出力が得られます。このように、ソース文書さえXMLあるいはHTMLで作ることができれば、いまの技術を使えば多種類の出力を作成するのは比較的容易です。

問題はなにか?

ワンソース・マルチユースの難しさはソースをどのように用意するかというプロセスにあり、マルチ出力は大きな問題ではありません。

これはXMLやHTMLが技術的に難しいということではありません。上で説明しましたように、第一ステップは人手で行われます。これを担当する執筆者・制作者は、現在、すでに一定のツールを使って一定の手順により作業を行っています。その作業のワークフローをそれまで慣れ親しんできた方法から変更するように説得するのが難しいのです。

特定の企業が主体性をもって限られた数のドキュメントを制作しているテクニカルマニュアルなどの分野でさえもなかなかワークフローの転換は難しいのです。多品種少量制作の典型である商業書籍の出版や事務局が責任をもった意思決定をしにくい学会などはさらに難しくなります。

[1] SAPの大規模DITA導入事例の進展(2016年11月)
[2] マークアップ
[3] DeNA「サイト炎上」MERY、iemoの原罪とカラクリ

マークアップとは(草稿)

JEPAの「いまさら聞けない電子書籍のABC ~ebookpedia~」の下書きです。最終版は、JEPAのページをご参照ください。

マークアップ
マークアップとはコンテンツに対して指示マークをつけることである。マークアップの目的はさまざまである。ここでは編集者によるエディトリアル・マークアップ、コンテンツをブラウザで表示するためのHTML(Hyper Text Markup Language)タグによるマークアップ、テキストに簡単な記号でマークアップしてHTMLタグに変換する軽量マークアップ言語を取り上げる。

エディトリアル・マークアップ
編集者が、著者の原稿に、テキストを再入力するための指示、組版作業者に対する指示を記入することをエディトリアル・マークアップという。テキストの挿入、削除、置き換え、入れ替え、終了、分離、句読点の変更、ダッシュとハイフン、大文字化、小文字化、イタリックとボールド、段落のインデント、フラッシュ・ライト/レフト、縦方向の空きなどの指示をプリントされた原稿に記入する。また、見出しを階層化して構造をはっきりさせ、テキストの表示方法を区別する要素―引用、箇条書き、テキストボックス―をマークアップする。指示の仕方には、丸で囲む方法、アンダーラインやキャレットなどの記号を使う方法、例えば章のタイトルを<ct>のようなコードを用いて表現する方法がある。レイアウトに関わるコードに対しては、デザイナーが、別途、レイアウト指示を追加することもある。こうしたマークアップやコード化は分業で仕事をするための便宜的なものであり、一緒に仕事をする編集者、デザイナー、組版制作者の間で合意があれば、その具体的な方法は自由である。

ブラウザでコンテンツを表示するマークアップ
1990年代半ばに登場したWebブラウザは、インターネット上のサーバーに蓄積されたコンテンツを、端末のブラウザで可視化する。インターネットのコンテンツは、HTMLタグでマークアップされている。初期にはHTMLタグでコンテンツのレイアウトも指示したが、だんだんHTMLタグとレイアウトを分離するようになった。現在では、HTMLタグは主に文脈を指定し、レイアウトはCSSで指定する。ブラウザはコンテンツに付与されたHTMLタグとCSSによるレイアウト指定を解釈してコンテンツを可視化する。

HTMLのマークアップ作業
最新のHTML5では、100個以上のタグが規定されている。例えば、文章の大きな区切りをsectionタグで、見出しはh1~h6のランクタグで指定する。タグが複雑なことから、Webページを適切にマークアップするには、HTML専用のオーサリングツールを用いることが多い。しかし、HTMLタグの知識が十分あれば、テキスト編集ソフトを使って手作業でマークアップもできる。

マークアップと可視化の分離
マークアップはコンテンツの文脈やレイアウトを、コンテンツとは別のタグなどにより指定する考え方である。コンテンツに指示をするマークアップ工程と、マークアップされたタグに基づいてコンテンツを組版・可視化する工程が分離している。エディトリアル・マークアップにしても、HTMLタグのマークアップにしてもマークアップ作業と可視化処理は分離している。

コンテンツとレイアウトが渾然一体のWYSIWYG方式
コンテンツの制作では1980年代半ばからWYSIWYG方式(What You See Is What You Get)がマークアップ方式よりも優勢である。WYWIWYGとは画面上で表示されているレイアウトと出力レイアウトが同一という意味である。WYWIWYG方式のワープロやDTPでは、画面上にレイアウトされた状態のテキストを対話的に編集する。コンテンツとレイアウトが渾然一体の状態で編集作業が行われ、レイアウトを整えるためにコンテンツの文脈が無視されがちである。WYSIWYGによる制作作業と、マークアップ作業とはコンテンツ制作に関して、考え方が対立している。

軽量マークアップ言語
プログラムのマニュアルなどをHTMLで作成する開発者は、HTMLオーサリング・ルーツを使わずテキスト・エディタで記述することを好む。しかし、テキスト・エディタでHTMLタグを直接マークアップするのは作業負荷が大きい。そこで、原稿テキストに簡単な記号でマークアップし、プログラムを使ってHTMLタグに変換する方法に人気がある。またWikiでは、ブラウザのフォームで、テキスト入力時に簡単な記号でマークアップし、内蔵のプログラムでHTMLに変換して表示する仕組みが採用されている。こうした方式を軽量マークアップ言語(または、簡易マークアップ言語)という。その代表例としてはMarkdownとMediaWikiを代表とするWiki記法がある。軽量マークアップ言語によるマークアップの利用者は開発者が中心で、WYSIWYGになれた一般ユーザーにはあまり普及していない。

Facebook

EPUBで箇条書きのラベルを消すためのCAS記法例(親の要素に属性を付ける方法)

箇条書きには、番号なし箇条書きと番号付き箇条書きがあります。CAS-UBではそれぞれ図1のようにマークアップをします。

20141011a
図1 箇条書き CAS記法

番号なし箇条書きのマークアップは、次のようなHTMLに変換されます。


<ul>
<li>1項目目</li>
<li>2項目目</li>
<li>3項目目</li>
</ul>

CAS-UBで用意している「CSSテーマ」で番号なし箇条書き、番号付き箇条書きのレイアウトを指定しています。そこで、例えば「グリーン2」を選択してプレビューしますと、図2のように表示されます。

20141011b
図2 箇条書きを、(テーマ)「グリーン2」で内容表示(プレビュー)する

さて、この箇条書きのラベルを消したいとき、一番、手っ取り早いのは要素にlist-style:noneというスタイルを指定する方法です。

CAS記法では要素のマークアップの直後に’:’を置くと、その要素に属性が付きます。そこで箇条書きの先頭’*’または’#’に次の図3のようにマークアップしてみましょう。

20141011c
図3 箇条書きの項目にスタイル属性を指定

この内容表示(プレビュー)すると図4のようになり、最初の項目しかラベルが消えていません。

20141011d
図4 箇条書きの項目へのスタイル指定の内容表示

すべてのラベルを消すために、各’*’(li)要素へのスタイル指定を繰り返しても良いのですが面倒です。
通常は上位のulまたはol要素にスタイル指定してラベルを消すと楽ちんです。

このようなときのCAS記法は図5のように要素の直後に’::’をおいて属性を指定します。そうしますと1つ上の階層の要素に属性が付きます。

20141011e
図5 親の要素に属性をつけるマークアップ

このCAS記法の’::’に続く属性はHTMLでは次のように上位のul要素の属性になります。


<ul style="list-style:none">
<li>1項目目</li>
<li>2項目目</li>
<li>3項目目</li>
</ul>

内容表示(プレビュー)しますと、図6のようにすべての箇条項目のラベルが消えています。

20141011f
図6 親の要素に属性をつけて箇条項目のラベルを消す

コンテンツの構造化とは何か? 構造化の目的、手段は? Word文書のスタイル付けとマークアップの関係

自由奔放に記述された文書は構造化文書とは言わない。そうではなく、予め定めた一定の型にはめて記述した文書が構造化文書である。ここでは構造化文書とはなにか? 構造化の目的、構造化の手段について簡単に整理してみる。

1.構造とはなにか?

例えば、書籍は、表紙、前書き、目次、本文、後書き、奥付という大枠の構造を持つ。本文はさらに大見出し、中見出し、小見出しを必要に応じて繰り返すという構造をもつ。さらに本文の文章の中には、箇条書き、引用、表をもつという階層構造になっている。また、章や節、図表には番号をつける。注釈、参考文献は、参照元と参照先への対応関係をもつ。

これらはすべて書籍に関わる構造である。こうした構造は文脈・意味と強い関係をもつ。一般には、文脈を明らかにし、意味を捉えやすくするように構造化する。

2.印刷における構造の表現

印刷した書籍においては、表紙、前書き、目次、本文、後書き、奥付はそれぞれの体裁で表現される。見出し、段落の位置(上下・左右の余白の量など)や箇条書き、文字の修飾(強調、斜体、ゴシック体、文字の大きさ)などは文章の文脈や意味が明確になるような書式になる。たとえば、見出しの文字を本文よりも大きくしたり、前後に空き(行間)を広くとるのは見出しであることを分かりやすく示すためであるし、ある特定の段落の左余白を広く取った場合、それは、引用や注記など本文とは異なる段落であることを示すためなのである。注釈であれば、参照元には合印をつけ、参照先に注釈のテキストにも同じ印をつけて参照関係を表す。

3.意味の認識

人間が書籍を捲り、テキストを読む目的は意味を認識することである。テキストを読みながら、構造の認識の支援を得て、テキストの意味を、より容易に、正しく認識できるのである。

4.文書のコンピュータ処理と構造の表現

プログラムによるコンピュータ処理では文書の構造を取り扱うことが多い。構造の取り扱いの主な例は、構造の変換と可視化である。構造変換の例としては、オーサリング形式から配布用の形式への変換がある。オーサリング形式とは編集作業に最適化された形式である。例えばDITA(Darwin Informaton Typing Archtecture)はオーサリング形式である。配布形式とは読者の手元で可視化するのに向いた形式である。可視化には、スクリーンへの表示、紙への印刷、音声で読み上げなどを含む。現在の2大可視化ツールはPDFリーダとブラウザである。DITAでコンテンツを作成したとき、最後に配布形式であるPDFやHTMLなどに変換する。DITAではこれをパブリッシングという。

このようなコンピュータ処理では構造が必須である。しかし、コンピュータでは人間のようにテキストを読みながら構造を認識することができない。そこで、テキストの中に明示的に構造を表す印をつける必要がある。これがマークアップである。

5.XMLマークアップ方式

現代のマークアップ方式の代表はXMLである。XML方式では構造を要素や属性というマークアップで明示的にあらわす。

例えば、見出しは、人間にとっては本文と比べて大きな文字であることをキーにして認識する。一方、XMLでは見出しの範囲をマークアップすることで明示的にあらわす。見出しというマークアップした場合、文字が大きいこと・文字がゴシックであることなどの見出しを視覚的に区別するスタイル指定はマークアップの方で担う。見出しの文字列は、本文と同じテキストで表す。

そこで、マークアップをすることは狭義のコンテンツである見出し文字列と見出しに指定するレイアウトという視覚要因を分離することであるといっても良い。このような意味で、コンテンツとレイアウトを分離するという言い方をすることもできるだろう。

XML方式で文書をマークアップすることで文書をコンピュータで簡単に加工処理できるようになる。XMLを使うメリットは、さまざまな基盤ツールが提供されていることである。先ほどのDITAの場合は、DITA-OTというパブリッシング用のツールがオープンソースとして提供されている。こうした基盤ツールを自分で作らなくても済むというメリットは大きい。

6.XMLの作成

XMLでマークアップするのは、あくまでもコンピュータ処理のためである。つまりXMLにしても、人間にとってはうれしくない。こうしたことからXMLは一般の人には無縁である。このため専門家以外にはあまり好かれないのだが、これはやむを得ないだろう。

しかし、文書をXML化することで、メリットが生まれる場合もあり、あるいはXML化しないとどうしようもない場合がある。どういう場合にメリットがあるかを考えてXML導入しないと無駄になる。また、XML化のコストはかなり大きい。そこで、これをどうやって簡易的に実現するかを考えることも必要である。

7.Microsoft Wordのスタイルを使う方法

Microsoft Wordにはスタイル機能がある。見出しというスタイルを定義しておき、ある文字列に見出しスタイルを適用すると、その適用された文字列の文字がいっせいに大きなゴシック体になる、というものである。

こうしてみるとMicrosoft Wordのスタイル機能は、XMLにおけるマークアップに近い機能であることが分かる。このようなことでスタイル機能を使って記述したMicrosoft WordはXMLで構造化した文書に比較的容易に変換することができる。

一方、同じMicrosoft Wordを使って、スタイル機能を使わずに、見出し文字列をその都度、文字修飾(フォント機能)と段落修飾(インデント、改行幅)をつかって外見を指定して作成した文書を作ることができる。このような作りかたをした文書はXMLに変換しにくい。XML化するときに、すべての見出しをいっせいに特定のマークアップに変換しにくいのである。それは、ときどき、修飾を忘れるなどの例外があるからである。

CAS-UBのWord変換は、スタイル機能を推奨している。Wordが標準でサポートしている機能であり、スタイル付けは比較的簡単だからである。

しかし、Microsoft Wordで作成した文書をXML化する方法として、Wordのスタイル機能を使う以外にもまだ他に方法がある。例えば、大見出しにするテキストには、特定の色を付けるなどが考えられるだろう。これをCAS-UBのWord変換で実現している事例もある。

コンテンツ構造化の視点―大域構造化と局所構造化(メモ)

コンテンツの構造化にはいくつかの視点がある。ひとつは、大域か局所かというレベルである。

大域構造化とは、書籍で言えば記事を目次のレベルで分類したようなものである。すなわち、書籍は、前付け、目次、本文、後付といった大きな枠組み構造をもち、その下に、たとえば本文であれば、章、節、項という枠組み構造があり、全体としては木構造になる。

章、節、項という構造とは別に、柱、ページ番号(ノンブル)、脚注と言う構造がある。これは、本文の流れと関係するが、主にコンテンツにアクセスするための構造である。柱、ページ番号や脚注は可視化するときに内容と場所が決まるものである。分かりやすい例として柱をあげると、書籍の頁に片柱で章の表題を付けるとすると、その表題が現れる回数や場所は判型や版面によって異なることになる。

索引なども表示に依存する構造である。索引語を整理して配置して、索引から本文への参照をつける。印刷した書籍ではページ番号、Webや電子書籍ではリンクによる参照になる。電子書籍では検索があるので、索引は要らないのではないかというかもしれないが、全文検索ではヒットする箇所が多すぎて、情報を探すのに却って時間がかかるケースが少なくない。情報にアクセスするための構造としての索引は重要である。

局所構造化とは、テキストの中のセマンティックスに沿うものである。具体的な例は、先日紹介した「DITAの実践」の説明がある。節や段落よりも小さな断片情報を構造化することで検索・変換・表示などの便宜を図るものである(下記の「セマンティックスの役目とは」を参照)。

構造化における大域構造化と局所構造化の一つの例はDITAにおけるTopicとMapである。これはまさに大域構造化と局所構造化の使いわけであると考えている。実際のところMapの中にもかなり細かい指定があるのでそう簡単ではないのだが。

但し、大域構造化と局所構造化の概念は述べている人は少ない、というかこれは私の造語に近くあまり市民権はないし、まだ論理構成がずさんであるが、分かりやすいと思う。今後、もっと精密化したいと考えている。

◎過去の関連ブログ記事
1.セマンティックスの役目とは
12月11日CAS-UBブログ
2.コンテンツの構造化とは何か?Word文書のスタイル付けとマークアップ
http://d.hatena.ne.jp/cassupport/20110906/1315262225