DITA 1.3詳解ワークショップ

3月16日(水)にDCJ(DITA Consortium Japan)の会員向けに、Eliot Kimberさんをお招きしてのDITA 1.3の詳解ワークショップが開催されました.わたしも同僚と一緒に参加する機会がありましたので感想を報告します.

まずDITAの歴史は非常に古くから検討され実践されてきたものということです.Eliot Kimberさんは元々IBM在籍されておられたそうですが、1980年代のIBM BookMaster、SGMLアプリケーションのIBM IDDocが元となっているとのこと、ID Docはモジュール化、リンキング、特殊化の考え方をすでに持っていたそうです.Eliot Kimberさんは、Don DayらとともにこのIBM IDDocの検討に参加され1992年にはそのバージョン1が完成、1998年のXMLの登場のもと、IBM DocのXML化が取り組まれ、これがDITAの源になったということです.(Kimberさん自身はその前にIBMを去っています)

日本でも2000年前半あたりはDocBook全盛だったので、DITAはDocBookより後発なのではないかという見方があるのですが、そうではなくXMLの登場以前に歴史をさかのぼることができるのですね.

そしてDITAは2003年にOASISに寄贈され、その後2005年にバージョン1.0、2007年にバージョン1,1、2010年にバージョン1.2、2015年にバージョン1.3と歩みを進めてきました.私も2005年のバージョン1は見た覚えがあります.まだindextermにsortasがなくて、「あ、これは日本語索引はつくれないな!」と思った記憶があります.

つぎに大きいのかDITA 1.2で取り入れられたキーの考え方です.それまでは、conrefもxrefも事実上の「ハードリンク」であり、topic間はいったんこれらを使ってみると分かちがたく結びつかれ、再利用が困難になります.しかしキーを使えば、conrefはconkeyreに、xrefもkeyrefを介した間接参照に置き換えることが可能です.これにより、再利用の可能性は大きく広まりました.(でもまだまだconrefは健在ですし、まだだと思いますが)

そして、DITA 1.3はこれらの上に立って、ブランチフィルタリング、スコープドキーの考え方が採用されました.スコープドキーを使用すれば、同じmapのなかでも異なったコンテンツを同じキーで参照可能になります.これは1つのpublicationの中で、複数のプロダクトの記述を行う場合に非常に便利です.ブランチフィルタリングを使用すれば、mapの中の異なる箇所で異なったDITAVALファイルによるフィルタリング条件を記述できます.これも同様にマルチプロダクトやマルチプラットフォームを記述するのpublicataionで有用です.

Kimberさんの話の中でも最も大きく時間を割いたのはこのキーの話だったと思います.キーを使えば、topicをハードリンクから解放して、ある意味「宙に浮かし」、どのようなコンテストからも使えるようになるからです.プレゼンの中でも、キーはDITAの間接参照の根幹を実現していると説明されました.

Kimberさんは「Always use key references」と何回も強調し、「ハイ先生!」と返事をするように言われていました.(「ハイ!先生」はKimberさんが入れ込んでいる、合気道の生徒が師匠にする返事だそうです.)

しかしいろいろ考えてみたのですが、実際のプロジェクトを考えてみると、なかなか「ハイ先生!」とは行っていない気がします.キーが使われないのです.それは多くのDITAの案件の発端が、「まずこのpublication(多くはマニュアル)のフローをDITA化したい」という「局所的」な出発点を持つものだからです.つまりDITAにするのでtopic化は了解するけれど、そのtopicがどのようなコンテキストからも使えるように、抽象化するということを真剣に考える作業はほとんどやられていないように思えます.何故かというと発端がDITAによる局所的最適化(たぶん)を目指しているからです.まあこれも止むを得ないかもしれません.SAPのように全社でDITAを取り入れているところのようにはゆかないからです.「まずこのマニュアルをDITA化して、次に展開する」というのはある意味、自然な成り行きなのでしょう.

しかし、局所的最適化の組み合わせは必ずしも大域的最適化にはなりえません.個々の最適化が、その範囲内にとどまっている限り、コンテンツの再利用範囲はその中に局所化されるからです.例えば.あるマニュアルを作るところから始まった場合、会社名、会社住所、ロゴのような大域的情報を、その後の展開に合わせてキーで設計できるでしょうか?IA(インフォメーションアーキテクト)の腕が試されます.

正直Eliot KimberさんのDITA 1.3の解説は大変すばらしく、いままでの生半可な知識も整理され、こういうのを応用したらどんなに素晴らしいか?と思うのですが、現実のプロジェクトを見るとまだまだという気がし、いささか暗澹たる気持ちになってしまいました.