最近のトラックバック

2008年7月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
ブログ:ココログ

« 2007年9月 | トップページ | 2007年11月 »

2007年10月21日 (日)

OuDia開発の経緯-13 Undoの最適化(2005年9月8日)

 以前も記しましたが、初期のOuDiaは現在のものに比べてかなり動作が重いものでした。特に重かったのが [編集]-[元に戻す] の動作、いわゆるUndo(アンドゥ)機能でした。

 当時のUndo機能が遅い理由は明白でした。このころのOuDiaは、編集動作ごとに路線データ全部をメモリ上に保存し、Undo動作が行われた時には路線データ全部をUndoデータから読み出して上書きしていたからです。
 補足しますと、『路線データ全部』というのは、全部の駅・全列車種別のデータ・及び全ダイヤの全列車の全駅の発車時刻を含みます。また、『編集動作』とは駅の追加・削除・修正から列車の駅時刻の1分の変更までを含めた、『路線ファイル』に保存されるデータのあらゆる変更動作を指します。
 列車本数の多い路線のデータを入力していると、データ量は次第に多くなっていき、それに従って編集動作が遅くなっていくのでした。

 解決方法も明白です。編集動作ごとに保存するデータを、Undoに最低限必要なデータに減らせばいいのです。たとえばある列車のある駅の時刻を変更した場合、Undoに最低限必要なデータは、『どのダイヤのどの列車のどの駅の時刻を何分変更したか』ということだけです。これなら、『路線データ全部』に比べてデータ量は大幅に減らせます。
 しかし、OuDiaの『編集動作』は、小は列車の駅時刻の1分の変更から、大は駅の追加までいろんな種類があり、それによって『Undoに最低限必要なデータ』は変わります。特に駅の追加・削除は、その時点で存在する全ダイヤ・全列車の駅時刻の変更につながります。これらをうまく管理できるような設計を考える必要がありました。

 そんななか、大阪の某大型書店のコンピュータのフロアで、『デザインパターン』に関する書籍を目にしました。『デザインパターン』とは、ソフトウエアの設計ノウハウをまとめたものです。
 このうち、Undoの最適化に役立つものはないかと探した結果、OuDiaでは『 Memento パターン』と『Command パターン』を参考にしてUndoの再設計を行いました。これがうまく当たり、Undoを含めた編集動作全体を軽快にすることができたのでした。

2007年10月13日 (土)

OuDia開発の経緯-12
OuDia の最初の限定公開(2005年8月5日)


OuDia の最初の限定公開(2005年8月5日)

 最初の OuDia は7月末に動作し始めましたが、その後自分でデータ入力を行って不具合を修正し、8月5日に OuDia Ver. 0.1.805.1 をネット上で公開しました。はじめての OuDia の公開です。

 このころの OuDia は今よりずっと完成度は低く、インターネットで不特定多数に公開するほどの自信は持てない状態でした。このため、『@nifty 鉄道フォーラム』という、会員制フォーラムのデータライブラリで公開しました。

※ 『@nifty 鉄道フォーラム』は現在では運営形態が変わり、『有限会社鉄道フォーラム (http://www.railforum.jp/) 』 となっています。

 これとは別に、当『OuDiaのホームページ』の試作も始めており、そちらでの公開も行っていました。が、これはあくまで知り合いに OuDia を試してもらうためのものでした。このころの『OuDiaのホームページ』は、検索サイトに登録していなかったので、知らない人が訪れることは事実上不可能でした。

 このバージョンは結構多くの方にダウンロードしていただき、多くの方からフォーラムに、ご意見・ご感想をお寄せ頂きました。多数の好意的な感想をお寄せいただき、開発者として非常に嬉しく感じました。モノ作りの喜びを再認識させていただけたと思います。

 僕はプログラマを職業としていましたが、プログラムを作る仕事の現場の多くは、最終的にプログラムを使う人と接する機会がほとんどありません。多くの場合、プログラマはユーザーからはその存在を感じられない『裏方』なのです。特に、下請けとして開発を受注するような会社にいるプログラマは、エンドユーザーと直に接する機会はなく、苦情だけが特定の『担当者』から伝えられる、という状況になっています。

 そういう意味では、作ったものを使ってくれた人の生の声を聞けるというのは、とても新鮮な経験でした。

 その後、OuDiaは、皆さんからお寄せいただいた意見や、自分がデータを作成してみて不便だと感じた点をもとに、機能向上を重ねていきました。
 また、重い動作を軽快にするための設計の見直しも繰り返していきました。今のOuDiaはこのころに比べるとずいぶん軽快な動作になったと思いますが、この軽快さはある日突然実現したわけではなく、工夫を重ねて徐々に軽快になっていったのでした。

2007年10月 6日 (土)

OuDia開発の経緯-11
ダイヤグラムビューで編集操作(2005年7月23日)


ダイヤグラムビューで編集操作(2005年7月23日)

  『10.ダイヤグラムビュー・まっすぐな列車線』で述べたような工夫を重ねて、ようやくダイヤグラムビューに、それなりに見栄えのするダイヤグラムが表示できるようになりました。
 が、この時点でのダイヤグラムビューの機能は、「ただ表示するだけ」でした。時刻表ビューにはそこそこ力を入れて編集機能を充実させてきたのに、ダイヤグラムが「ただ表示するだけ」では、何か物足りないものが感じられました。

 また、WinDIAのダイヤグラムウインドウも、機能は「ただ表示するだけ」であり、時刻表ウインドウに連携するような機能はありません。僕自身が以前WinDIAを利用した時には、「ダイヤグラムの表示結果をもとに発着時刻を修正するのが不便だなあ」と感じられました。このため、このような作業をサポートする機能が何か欲しいな、と思いました。

 まず思いつくのは、「ダイヤグラムビュー上でダイヤの編集」という機能です。具体的には、ドローソフト(Microsoft Word や Excel の『図形描画』みたいなもの)のように、ダイヤグラムビュー上のマウス操作で列車線を引いたり修正したりできるようなものです。
 しかし、これは作るのに相当手間がかかり、すぐにできるようなものではありませんでした。
 また、「どのような操作方法にすればいいのか?」というところを、仕様としてうまくまとめることができませんでした。一般のドローソフトで図形を作成する場合とは異なり、ダイヤグラムはウインドウ上を直線が高密度で交錯します。その高密度の列車線の中から、目的の列車線をマウスでクリックして選択するだけでも難しく、快適な編集作業とはいかないのではないか?と思われました。
 このような経緯で、このアイデアは没になりました。

 「ダイヤグラムを見ながらダイヤデータを修正」という作業をサポートでき、しかも比較的簡単に実現できる機能として考えついたのが、

 ダイヤグラムビューの列車線をダブルクリックすると、時刻表ビューが開き、ダブルクリックされた列車にフォーカスが設定される

という機能でした。
 当初は「本当に便利なのかなあ?」と半信半疑で作成した機能でしたが、動作してみると結構便利で、僕自身のお気に入りの機能になりました。

 OuDiaは一言でいうなら「ファイル編集ソフト」です。そもそも画面そのものが地味ですし、動画再生ソフトなどのような動きはありません。このため、それを使った作業も非常に地味で飽きやすいものです。そんな中で、「ダイヤグラムビューの列車線ダブルクリックによる時刻表ビューへのジャンプ」という機能は、OuDiaではほとんど唯一の、派手な動きを伴う機能であり、OuDiaのアクセントになっていると思うのですが、いかがでしょうか。

« 2007年9月 | トップページ | 2007年11月 »