データの形式について [from G+ 2015-01-14]
[2019-03-09追記]
私がこの記事を書いた時に気にしていたのは、シンタックスというよりセマンティクスだった。
1日後、twitterでJKFの作者の方といろいろ議論できたのはいい思い出。
昔、Yahoo!知恵袋で見た時、私はかなり共感したんだけど反応がほとんどなく、あまり気にしている人が少ないのかなと思って控えていた。
[2015-01-14当時の内容]
Notationというのはあくまでも記法のことである。
2つの形式A, Bがあったとして、その2つは表現が異なるだけで、その意味するところが同じなのであれば、等価変換可能である。BtoA(AtoB(Data)) = Data である。
しかし、片方の形式にしかない情報があるのだとすれば、変換によって情報が失われる。もしくは変換後の情報が足りず不完全となる。A∩B の部分しか情報が残らない。
従って、2つの形式変換のソフトウェアを多数作るのではなく、すべての情報を包含したデータ交換のための形式を定義し、そのデータ交換用の形式を中心として、複数の形式変換を行う。
データ交換用の形式を定義するにあたって、
すべての形式を包含する情報の定義に失敗すると、様々な形式がある中の一形式に成り下がるので注意が必要である。
完全なものを最初から定義するのは難しい。よって、段階的に拡張する戦略を取る。これは、バージョン間の互換性を考慮して設計しなければならない。大きな技術革新が起きると、バージョン間の互換性がなくなりやすい。
主にデータの交換を目的とする形式ではあるが、データの保存形式として利用することも可能である。その場合の要求として、
- 古いバージョンのみサポートするソフトウェアに対して、新しいバージョンのデータが入力されるとき、拡張部分は無視されること。
- 新しいバージョンをサポートするソフトウェアに対して、古いバージョンのデータが入力されるとき、古い形式に従って処理されること。可能であれば、古いバージョンのデータには単純に拡張された部分がないだけで、ソフトウェア側でバージョンの違いによる特別な分岐処理は行わないのが望ましい。