macOS版TiDecompを作成
今は、macOS版EdaxBoardをWindows版から移植開発中で、配布形態もWindows版と同様にする事にしたので、今日は、独自形式の圧縮ファイルであるticompファイルの展開ツールであるTiDecompを作成した。
ticomp形式は、作者オリジナルの圧縮ファイル形式になる。
なので、巷にある様々な圧縮/展開ツールを使ってみても、展開は出来ない筈なのだが、EdaxBoard等のMasterReversiのレジストユーザー向けプレミアムアイテムの配布パッケージに同梱されているTiDecomp.exeを使えば、展開可能だ。
つまり、TiDecomp.exeというのは、作者オリジナルの圧縮ファイル用の展開ツール、という事になる。
コピーライト表示を見てみると、「2018-」という事になっているので、このソフトを開発したのは2018年、という事になるのだが、そもそも、作者オリジナルの圧縮ファイル形式というのは、MasterReversiの各種リソースの保存用に開発したモノだ。
つまり、2007年のMasterReversi 初版の公開時には、既に、MasterReversiの処理コードの中には、作者オリジナルの圧縮形式でファイル出力する処理ルーチンに加えて、それを展開できる処理ルーチンも存在していた。
なので、2018年にTiDecompを開発した時には、別に、オリジナルの圧縮形式を考案したりする必要はなかったので、EdaxBoardという、大してユーザーはいないだろうなあ、という様なソフトの公開用に、ワザワザ、開発しても割に合わない! という事はなかった訳だ。
と、言う事で、作者オリジナルの圧縮ファイル形式というのは、かなり大昔に考案したモノなので、それなりに古めかしい作りになってはいるのだが、巷の圧縮ツールにしてみた所で、アルゴリズム的には似た様なモノでしかない筈だ。
なので、ticomp形式のファイルをzip圧縮してみても、殆どファイルサイズが小さくなる事はない筈だ。
もっとも、作者がオリジナルの圧縮ファイル形式を開発したのは、zip形式よりも圧縮率が高い圧縮形式を使いたかったから! という事ではなくて、圧縮後のデータをダンプしたりしてみても、その内容が判らなくしたかったからだ。
つまり、レジストキーの情報なんかを設定ファイルに普通に保存したとしても、そのファイル自体が独自の圧縮形式になっていれば、そのファイルを解析してみても、レジストキー情報なんかが読み取られる事がないので安心! という事になる訳だ。
もっとも、作者的には、何度か書いた事がある様に、MasterReversiが作者の開発ソフトだ! という事が世間に知れ渡る前に、悪意のある第三者に、バイナリの著作権情報なんかを書き換えられて、MasterReversiは、その人物の著作物! という事にされてしまう事態を警戒していた訳だ。
なので、MasterReversiが表示している著作権情報は、exeファイルにあるリソースを弄っても変更出来ない様にしたのだが、その為に必要になったのが、第三者が作成できない独自形式ファイルだった訳だ。
と、言う事で、作者的には、第三者が作成できない独自形式ファイルを開発する必要があったのだが、同時に、MasterReversiのデータベースファイルだとか、Bookファイルなんかについては、ユーザーがパスワードを設定した上で、保存できる機能も用意する事にしていた。
その理由としては、例えば、巷では、対局棋譜なんかは有料販売! みたいな団体もある訳なので、データベースデータを有料で配布したい! みたいな人的には、パスワード設定ができれば便利な筈! という事だった訳だ。
まあ、巷の圧縮ツールを使えば、データにパスワードを付けて圧縮する事は可能かもしれないのだが、そのパスワードを入力するために、ファイルをダウンロードしたユーザーに、そのツールをインストールさせるというのも、非現実的だったりもする筈な訳だ。
なので、パスワード付きファイルの作成と展開の両方をMasterReversiがサポートするのが望ましい! 更に、インターネット経由でのやり取りを鑑みれば、データは圧縮されているのが望ましいので、MasterReversiの開発中に、作者オリジナルの独自形式圧縮ファイルというモノが誕生した訳だ。
と、言う事で、圧縮形式自体は、2007年の時点で完成していて、MasterReversiに、関連機能を搭載していたのだが、その10年後くらいの2018年に、EdaxBoardをレジストユーザー向けのプレミアムアイテムとして公開し、その配布パッケージにテキストエディタで閲覧可能なソースコードを添付する事にしたので、配布パッケージは、独自形式でパスワード付き圧縮をしたバイナリの形式で公開する事にした。
そのために、TiDecompを開発した訳なのだが、圧縮/展開用の処理コードはMasterReversiのソースコード内の自前クラスから持ってきたので、開発に必要になったのは、主に、GUI部分のみだった。
主に、と、書いているのは、独自形式ファイル用のパスワードは、何もレジストキーに限らないので、TiDecompでは、レジストキーからパスワードを生成する様な処理は、別に開発した。
データを圧縮する場合、同様に、レジストキーから生成されるパスワードを使って圧縮する必要があるのは言うまでもないのだが、必要なツールは作者的には作成済みで使える状況だ。
ただし、このツールについても、macOS版は存在しない状況なので、明日は、こちらのツールについても、macOS用に移植しておくつもりだ。
もっとも、今のところ、この圧縮ツールについては、公開する予定はないので、あまり真面目に作る必要はない。
また、そもそも、このツールは、コマンドラインユーティリティの形式で作ってあるので、macOSへの移植はTiDecompよりも簡単な筈だ。
なので、多分、明日中には完成するので、macOS版EdaxBoard自体の公開も、明日の夜くらいには、あるかもしれない今日この頃だ。

