XML のすすめ

ソフトウェア仕様書の中で、一覧性が重要なものを別途 Excel で記述している開発現場は多いかと思います。

でも、本当にそれで大丈夫ですか? 今回は、これを XML に置き換えることのメリットについて語ります。

Excel の欠点

私たちのチームでも、仕様書の中で表形式のもの、特にそれが大きければ、問答無用で Excel が使われていました。しかし仕様が肥大化するにつれ、Excel の欠点が露呈し始めました。

1. VBA が悲惨

一番きつかったのが、ソースコードへの展開です。Excel で書かれるような情報は、大抵はそのまま機械的にソースコードに変換したくなる種類のものです。Excel でも VBA でマクロを書けばできなくはないですが、この VBA というのが大規模プログラムには悲惨なほど不向きなのです。

余談ですが、Excel には「セルの結合」という機能があります。見た目には美しい機能ですが、これと VBA の相性は最悪です。セルの結合を駆使した表を VBA から見ると、虫食いだらけの表に見えてしまうからです。

こうしたことが相まって、マクロで自動化しようとすることが、かえって開発の足を引っ張る事態になり始めました。

2. 差分が見えない

開発も中盤に差し掛かってくると、プログラマーが仕様書を受け取るときの関心事は「何が変わったか」に主眼が置かれるようになってきます。Excel はバイナリデータですから、この変化点を抽出することが困難です。また Subversion や Git で管理しても、変遷をたどることができません。

3. 論理的でない

Excel というのは本当によくできたアプリで、誰にでも簡単に見栄えのする表が作れます。線を引いたり、色を塗ったり、列を追加したりといったことが、思いのままにできてしまいます。

ですがこのことが、仕様を記述するという観点で見ると、そっくりそのまま欠点になることがあります。自由であるがゆえに、厳密性を欠きやすいのです。

たとえば、値が埋まっている欄と空欄がある場合の、空欄はどう解釈すればよいのか。備考欄に書かれた内容はプログラムの挙動に関係があるのかないのか。こういったことです。

RDB よりも XML が良い理由

これらの課題を解決するため、私たちはデータベースの導入を検討し始めました。当初は SQLite や Access が選択肢に上がっていたように記憶していますが、最終的には XML に白羽の矢が立ちました。その決め手となったのは、次の3点です。

1. 誰にでも閲覧できる

これが最も重要でした。Excel なら、誰でもその中身を見ることができます。何かで置き換えたとしても、その手軽さを失うわけにはいきませんでした。

XML の場合、その見せ方を XSLT というファイルに記述することができます。これを同梱すれば、誰でもブラウザを使って簡単に XML の中身を表の形で見ることができるようになります。RDB だと、少なくともビューアをインストールしなければなりません。そのような障壁は、設けたくありませんでした。

2. 編集しやすい

RDB を編集するには、SQL をはじめとした RDB 固有の知識が必要です。あいにくこれらの知識は、組み込みソフトウェア開発者のそれとは重なり合わないものです。正直なところ、私もほとんど知りません。

XML であれば、一つのテキストファイルに過ぎませんから、理解も容易ですし、間違いがあっても取り返しがつきます。私たちのチームでは、日常的にデータを編集する人だけは Liquid XML という専用のエディタを使っていましたが、これは導入のハードルもそれほど高くなく、好評でした。

3. C# との親和性が高い

ソースコードを自動生成するということにかけて、XML と C# のコンビネーションにかなうものはありません。私の見立てでは、Excel と VBA の組み合わせで1か月はかかりそうなことが、2日あればできてしまいます。生産性にして10倍です。

実際、C# で作った XML コンバータを今日まで運用してきましたが、この運用コストが開発の足を引っ張ることは、まったくと言っていいほどありませんでした。C# による XML の活用については、いずれ別記事にしたいと思います(追記:別記事にしました)。

まとめ

XML への置き換えは、大成功でした。まず、膨大な量のコードを手作業でちまちまと書く必要がなくなりました。これだけで、何人月の工数が削れたかわかりません。それからこのシステムは、リリースされた成果物の品質を支えてくれました。自動生成されたコードからバグが出ることは、ほとんどなかったからです。

もう一つ改善されたと思うのは、仕様を書くという行為そのものです。仕様を書く人というのは、二つの視点をバランスよく兼ね備えていなければならないと私は考えます。仕様に関することは何でも表現してほしいというユーザーの視点と、記述はきわめて論理的であらねばならないというプログラマーの視点です。XML を設計することは、この二つの視点を育むよい訓練にもなりました。

ここまで読んで、うちにも当てはまると思われた方は、ぜひ検討してみてください。

ソフトウェアの設計・実装がうまく行かなくてお困りではありませんか? 組込屋にお任せください。リモート案件は、常駐の半額でお受けしています。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)