ソフトウェアを設計するときには何らかの設計図を書くと思います。UML、ER図、データフロー図 ・・・などでしょうか?
私も新機にシステムを作る場合や既存アプリの大規模改修時などには設計図を書きます。
よく書くのは、UMLのユースケース図、データーベース設計用にER図、場合によってはUMLのコンポーネント図、アクティビティ図、シーケンス図などです。
最近、あるシステムのユーザーからビジネスルールの質問があり、コードを読む前にER図を見ようとしたのですが、ER図ツールのライセンスが切れていました・・・
ソフトウェア開発ツールの寿命
少し横にそれますが、ソフトウェアを作るには、コードを書いたり、コンパイル、デバッグするためにもツールも使います。なかでもコードを書くエディターはプログラマーに取っては非常に重要なツールです。
私は Emacs → TextMate → Sublime Text → VS Code と乗り換えてきました、Emacs, VS CodeはオープンソースでTextMate, Sublime Textは有償の商用ソフトでした。
有償ソフトはライセンスを購入する必要がありましたが、エディターは文字コードのファイルを読み込み、それを書き出すツールなので乗り換えには全く問題がありませんでした(操作性の違いは別にして)。
コンパイラーもGCCからLLVMに変わりましたが、標準のC言語やObjective-CをMac(iOS)の機械語に変換するツールなので、多少の問題は起きましたが直ぐに移行できました。
設計ツールの寿命
さて設計ツールですが、ほとんどのツールが商用ソフトです。中には無料で使えるものもありましたが、ツールが保存したデータは独自形式の事がほとんどです(XMLで書かれているものもありますが、スキマーが公開されてないので解読は難しいと思います)。
今回のER図ツールはastah* professionalというツールです。astahはタイムドライセンスという有効期限付きの安いライセンスがあるので今回は、それを購入して対応しました。
また、astah(旧称JUDE)は20年以上にわたってサポートされていますし、旧バージョンで書かれたデータも読み込めるので助かります。
ただし、ツールによってはサポートが終了した物もあります。しばらくは使えるのですが、OSのバージョンアップ等で動かなくなってしまう事もありました。
最悪なのは、ツールが書いた独自データを他のツールで再現出来ないことです。
今回おこなった自衛策
astahは、今後も開発が続くと思いますが、最悪の事を考え少し対策を行いました。
1. 印刷用PDFをGitにコミットする
図を見るだけならPDFで十分です、また最悪の場合PDFをAdobe IllustratorやInkscapeに読み込み編集する事も可能です。ということでastahのデータファイル以外に、PDFファイルもgitにコミットしました。
2. SQLを出力
ほとんどのER図のツールはER図からSQL文を生成できます、またSQL文を読み込みER図を生成できます。
そこでastahで書いたER図からSQLを出力し、MySQL Workbenchに読み込んでみました。
レイアウト情報は無くなりますが、手作業でテーブルを配置し直せば使えます。
またMySQL Workbenchはオープンソースなので将来的にも存在してる可能性がありますね(ライセンスは微妙ですが 😅)。
その他の自衛策
どうしても長く使える設計図を作ろうとすると。
a. マイクロソフトやアドビのようなメジャーな製品を使う(例、PowerPoint 😅)
ただし、これらのツールは汎用のツールなので、専用ツールの持つ便利な機能がないので、設計フェーズは非効率的です。
マイクロソフトやアドビのように世界中で使われているツールの場合、マイクロソフト社やアドビ社が滅んでも、他社がツールの開発を引き継ぐ可能性が高いと思われます。ただしライセンス料を長年にわたって払う必要があります。
b. オープンソースのツールを使う
オープンソースなら最悪の場合、自分でコンパイルしたりすれば使い続けられます。しかし現時点でオープンソースの良い設計ツールがあるのでしょうか?
今回PlantUMLを少し使ってみました。インタラクティブはに書けず、きれいな配置では書けないですが、小規模なER図では使えそうです。 ただしインタラクティブはに書けないので設計フェーズでは使えないと思いましたが、メンテナンスフェーズならいけるかも知れません。
だれか、PlantUMLにレイアウト情報を付加したようなインタラクティブなツール出ないかな?
おまけ
私はむかし電気系CADの会社の会社で働いてましたが、CADも製品毎に独自形式でデータを保存しています。現在のCAD業界は知りませんが、当時のCADの共通ファオーマットに付いて書きます。
当時、米国国家規格協会(その後MILやANSI)が策定したIGESフォーマットというのがありました。ただしIGESは図形(直線の端点座標など)情報しか伝えられず、重要な設計・属性情報が伝わらないお粗末なフォーマットでした。
そうこうしているうちに、PCで動くAutoCADが爆発的に使われるようになり、AutoCAD社のDXFフォーマットが業界標準になりました。
ソフトウェア設計ツールもAutoCADのような圧倒的強者が誕生していれば、そのツールのフォーマットが共通フォーマットとになり、設計ツールの乗り換えも楽にできるようになったかもしれませんね・・・