開発秘話

このページの存在価値

存在価値自体が怪しい。だいたい,誰が読むんだろね,こんなページ…。そんな労力有るんだったら,他に努力しなさいってツッコミ飛んできそうなぐらいである。まぁ確かにそうなんだが,この使っていれば何とも思わない Culiet だって,それなりに…いやかなり苦労して作ってるんですな。その苦労を少しは知っていただこうという意味で書こうかと思ったけれど,そんなの対岸の火事。ならば,ねじれの位置ぐらいまでひねって開発の苦労を書けば,少しは秘話となって面白くなるだろうと思ったりして書いてみたりしたわけで…

開発の経緯

時代背景

Culiet なるソフトウエアがまだ姿形も無き古き日々(*1),Copio なるソフトウエアありけり。Copio は Vector 週間ソフトニュース等に取り上げられ,着眼点よろしと評価を得る。されど,スレッドといふ機構を用ひて処理を行ふにあたり,環境によっては動作が不安定である面が多し。たへかねた作者は,構造自体を作り直そうと決意す(*2)。

(*1) 何と今から200日も昔,平成11年3月までの話である
(*2) 時は平成11年4月

懐妊

いかんとせんと考え,某大学にて某友人達と某食堂で食しながら談話。その際に某心の友&くどい顔のP氏曰く

「スレッド止めて,プロセスでわければいいじゃん?」

この一言により,我が輩は Culiet を身ごもったのである。もっとも,この頃は名前はまだなく,Copio 3 となる予定であった。んがしかし,世の中は甘くない。ゆにばーしてぃーは忙しく,Copio 3 なるものは完成するのに時間がかかりすぎることが分かったのである。

古きを知って…

そこで Copio 3 なるものを新ソフトウエアとして先送りし(このころは Creatto というコードネームで呼ばれていた),旧来の Copio 2 にあった問題を改善した新バージョンを先に出すことにしたのである。これは無事に成功し,Copio 3 のリリースに至る。それでもまだ安定しているとは言い難いが,これは構造のせいである。私のせいではない(構造を考えたのは誰か,というのはほっときましょう)。

命名

時は少し戻って6月頃,とある再履修の授業にて Creatto の命名式が行われようとしていた。某心の友&出っ歯のQ氏(当然彼も再履)と案を出し合うこと数十分,彼の意見はことごとく無視され,私が編み出した Culiet に決定。候補としては,「Copio Super」「CopioEx」「Copio II」等,アホなものが並んでいた。

新しきを作る!

ようやく Culiet がどんなものになるか決まり,更に名前も決まったのであるが,開発はそう簡単には行かなかったのである。「案ずるより生むがやすし」と古人いうが,これは嘘である。

一つの機能を良く練ってからクラス化し,これを組み合わせるときに不整合がでないように良く確認してインプリメントしていく。こういった作業を延々と繰り返すこと1ヶ月,ようやく本体側が出来るのである。が,しかし,本当に休みが残りわずかになってきているにも関わらず,エンジンは全く姿形がない。これでは,ワープドライブのないエンタープライズである。ピカード艦長も真っ青である。

休みが終わりに近づいていたため,エンジンは1週間程度で仕上げなければならなかった。この際,クラス化している暇はない。ならばいい加減なソースを書くべきか…。そこでふと気がついた。5月頃に Copio 3 (とその頃呼んでいた) で使えるように,既にクラスを書いていたのである。使えないいい加減なものもあったが,使えるものもあったのである。これ幸いと実用レベルにあったいくつかのクラスを引っ張ってきて,さらに少し拡張して採用したところ,美味く動作したのである(*3)。

しかし,他にも問題はあった。圧縮機能である。これは過去に実験も勉強もしてない。コンポーネントはあるが,そういう問題ではない。…そう,結局は Unlha32.dll の使い方が分からないことには,利用できないのである。Unlha32.dll はデフォルトでパスが / であるが,ファイルシステムでは当然 \ である。この辺を一緒くたに扱うところが少々面倒ではあった。

(*3) 後日,問題が山のように見つかったが,それはご愛敬。もち修正済みっす。

誕生

こうして苦労した末,1999・9の月に完成した。予想通り構造のうまさのおかげか(密かな自慢を挟む高等技),細かな問題は多数見られたものの,構造的問題はみられなかった。これは偉大な進歩である。早速 HDD 用と MO 用のプロジェクトを用意し,MO は一日おきに曜日指定して実行するようにした。今まではバッチファイルを使ったり,Copio でバックアップ先を変更したりしてバックアップをしていたが,これで Culiet 一本化が図れるようになった。最高な気分である。

ここだけの話,削った機能

言い訳

この Culiet では,搭載しようと思っていたにもかかわらず,先送りした機能もないわけではない。ただ,今回の Culiet については,今までの全ての拙作ソフトウエアの中では,最もそういった削られた機能が少ない部類で,優秀である(と,俺は思う)。つまり,そう悲観することもないのである。

言い訳はこれくらいにして,見送った機能というのは,次の二つである。

削った機能1

一つ目は RMS の完全なるサポートである。これは,たとえば RMS におさまらないファイルを分割したりして記録することである。搭載しなかった主な理由は,分割が大変なのと,せっかくの自動実行があまり意味がないからである(メディアの入れ替えしなけりゃいけない)。そうはいっても必要な環境もあるだろう。次期バージョン以降で考慮すべき点である。

削った機能2

二つ目はバックアップ先の容量チェックである。これは,しないとまずい場合もある。たとえば HDD に容量が足りない場合,即座にバックアップ動作を止めてユーザに知らせなければならない。しかし,この Culiet では同じファイルに上書きする場合もあり,ファイルサイズだけで簡単に容量オーバーが判定できるわけではない。この処理のオーバーヘッドは無視できないほど時間を要するだろう。そこで見送ったのであるが,他の方法を考えて処理効率を下げずに出来るようにすべきであろう。今後検討を要する点である。