Hatena::Grouplcwiki

syster開発秘話

syster開発秘話

systerは開発途中に大きな仕様変更が2回か3回あって、そのたびに大きなコード変更を、ときには全くゼロから再び作り直す羽目になった。そのため、それほど大した動作はしていないにかかわらず開発に1年以上の月日を費やしてしまった。

バージョンA(2011年6月末~10月末頃?)

初めのバージョンは扱う情報の種類別にディレクトリを用意し、その中の少数のファイルに追記式で情報を記述する形式だった。

情報の一覧(目次)は、unite.vimによってその都度作られる形式だった。

また、各エントリにタグを設定することが出来、unite.vimでそのタグのエントリだけを集めて閲覧することも出来た。

しかし、思ったよりも一覧性が悪く、また、むやみにソースファイルを分割しすぎたので作っているときにどこに何があるのかが自分で分からなくなって嫌になって制作中断。

さらに、11月頃にはこれと全く別の仕様で情報を整理する構想を思いつき、その仕様を採用するなら今まで作ってきたバージョンAを全て破棄しなければいけないため、どうするか悩み、開発は全く手つかずの状態になる。

以後しばらくは全く関係ない小物ツールを作ったり他の作業をして過ごす日々を送る。


しかしこの制作を通じてVimの先輩方と交流を持つことが出来、スクリプトの作り方や使い方を知ることが出来た。

バージョンB(2012年1月~6月)

前のバージョンにはhowmリンクがなかった。リンクについては随分悩み錯誤した。

howmリンクがどうしても欲しくなって、qfixhowmの作者に実装を教えていただいたりした。

そしてhowmライクリンクを作り始めたことから制作が再開した。

以前破綻した経験を踏まえ、ソースファイルは過度に分割せずにメインを1つに抑え、12月のVimアドベントカレンダーで作ったfoldCC.vimを使って折り畳みを駆使して一覧性の高いソースを作るように心がけた。

その甲斐あって、しばらく開発は順調に進む。以前のバージョンはどこに何があるのか自分でも把握していなく触るのが嫌だったのでほとんどゼロから作り直した。その際、11月に構想していた新しい仕様に切り替える。

その仕様は現在の仕様とよく似ているが、indexファイルがmaster、sub1、sub2と、それぞれ作られ、そこに随時書き込んでいくというものだった。

しかし何か変更を行う度にmaster-indexバッファを開いて書き込みに行くので時間がかかったし見た目にも美しくなかった(しかもsubindexを指定しているとmasterを書き込んだ後それぞれのsubindexを開きmasterと同じ内容をsubにも貼り付けるので効率もよろしくなかった)。

途中、行数が1000を越えたあたりから関数の数が多くなってどこに何があるのか分からなくなる状態が再発し開発が停滞する。

最終的にファイルを4つ程度に分割した。分割しすぎず一覧性を損なわずちょうどいいバランスを模索した結果である。