アプリケーションの設定ファイルの書式を考えてる時、
『あーしてこーして、…でも将来拡張してパラメータが増えたらなー。あーXMLで保存したら楽なのに。』
perlで掲示板を作ってる時、
『ログをXMLで保存してりゃ、掲示板を変更しても移植可能だなぁ。』
なーんて考えて作ったものです。
『お手軽に使える→最低限の実装』ということで機能を削って作りました。
で、なんでわざわざ自作したのかといえば、当時「xml編集中にファイルロックをかけたいんだけどMSXMLじゃできんなぁ…。Xercesは…ま、マニュアルが(英語で)読めん…。」というニーズと、「そういやC++で継承をろくに使ったことないなぁ。これじゃC++を多少便利なC、としか使えてない。なんか、仮想継承とか多重継承とか、そんなんの練習してみたいなぁ。」という希望がうまくマッチし(てしまっ)たのがきっかけです。 今考えたら、ものっっっっっっっそい無駄な労力をかけた気がする。 まぁおかげで継承もそこそこ使いこなせるようになったのでヨシとしよう。
バージョン表記は ( メジャーバージョン ).( マイナーバージョン ).( リビジョン ).( ビルド番号 ) となっています。で、メジャーバージョンとマイナーバージョンが変わらなければ、 インターフェースに変更はありません。 言い換えるとメジャーバージョンとマイナーバージョンはインターフェースのバージョン、 ということになります。
また、バージョンアップした場合に下位互換性が無くなるかもしれません。
ですから、ライブラリのファイル名は perl 版では『ESDOM_1_0.pm』という風に、
( メジャーバージョン )_( マイナーバージョン )が付加したものになります。
(※perlではモジュール名に - や . が使えないために _ にしてあります)
C++ 版ではアプリケーション側が読みとるヘッダーファイルに変更があれば、
インターフェースに変更が無くても影響が出るので
『ESDOM-1.1.1.dll』や『libESDOM.so.1.2.0』という風に
( メジャーバージョン ).( マイナーバージョン ).( リビジョン )が付加されます。
ただしヘッダーファイルに変更がないバージョンアップであれば、
ファイル名は以前のものを引き継ぎます。
(※これらは異なるバージョンのライブラリを共存させ、
それぞれ異なるバージョンを使うアプリケーションを1台のマシンで実行できるようにするためです。
Windowsではあまり聞きませんが、UNIX系では一般的なことです。)
COMにすりゃバージョン管理が楽なことは分かり切ってることですが、 そうすると取得・解放がいちいち面倒で『手軽に使える』ではなくなっちゃうので。 まぁスマートポインタ使えばいいんですが…。
作った動機はCGIでXMLが使いたかったから。 普通webサーバーにDOMモジュールなんて無いですから。 で、DOMはめちゃくちゃ便利だけど、あそこまでの機能は要らんなぁということで、 DOMのなかでも最低限これだけあればいいだろうという物を抽出したまがい物。 作った本人が言うのもアレなんだが、ふっつーにxmlでデータ管理するにはこれだけで十分。
当モジュールは、誰がドコで使っても構いません。 ただし、当モジュールの使用による、いかなる損害に対しても、 作者は責任を負いませんのでご了承願います。 なお、改変については、陰で行うのは勘弁してください。 ここの掲示板でご意見頂ければ助かります。 バグがあれば報告して頂ければすぐに修正致します。 「こうしたらどうだろう?」等の意見は大歓迎です。 perlモジュールに関してはほとんど無知なんで。
ソースコードを公開しているわけですが、著作権を放棄しているわけではありません。 勝手にアプリケーション内部に組み込んだりはしないで下さい。 使用したい場合はライブラリを使用して下さい。
公開の目的は、デバッグの効率化、玄人のツッコミによるレベルアップ、初心者の参考に、といったところです。
(もっとも、私自体初心者に近いですし、
私のコードはちっともエレガントじゃなくて泥臭いので参考になるかは別問題ですが)
改変は各自で行うのは効率悪いので、こちらに要望を行って下されば対策を施します。 場合によっては誰かがコーディングしたものを組み込むことも考えられます。