ソフトを開発しようと思った動機、背景
ベクターソフトニュースでは「既存のソフトウェアに不満があって自分で作ろうと思った」とおっしゃる方が多いのですが、私が「連想メモ帳」を作ろうと思ったきっかけはそうではありません。きっかけは私自身にあります。数年前、プログラマを目指していた私は新しいものを作りたいと思いながらも、技術がついて来ずに歯がゆい思いをしていました。ネットで日々公開されていくソフトウェアを見て、自分のことを省みず批判をしてしまうことが多かった覚えがあります。
そのころの私には悩みがありました。技術を得ようとしても覚えることが多すぎて挫折しかけていたのです。周囲の人たちは「どの技術を習得すれば将来無駄にならないか」といったことに神経質で、新しい技術に乗り遅れまいと情報には大変敏感でした。私も同じようなものだったのですが、これは技術というものの表面しか見ていないことに気づいたのです。そしてメタな(抽象的な)知識に目を向け、情報技術の基礎やプログラム言語の内部動作まで考えるようになりました。それが功を奏して、いくつものプログラム言語に共通点が見えるようになり、初めて使うプログラム言語であってもすぐに使うことができるようになりました。
それでも、依然として私にはこれといってソフトウェア開発の経験がなく、実際に動くものは何ひとつ完成させたことがありませんでした。ただ「プログラマになりたい」という志だけで技術系掲示板に首を突っこんでは厳しい批判を受けるといったことを繰り返していました。「やりたいことはないものの、何かやりたい」という訳のわからない衝動に駆られていた覚えがあります。
「これではいけない」と半年ほど前に一念発起して作ったのが「IE常駐」というソフトウェアでした。
「連想メモ帳」のきっかけは「IE常駐」を見た知人の「じゃあ俺はメモ帳を常駐させるソフトでも作るか」という冗談でした。もちろんメモ帳を常駐させるだけでは意味がありません。ですが、それを聞いて私は過去のアイデアを思い出したのです。
「連想メモ帳」は『「超」整理法』(野口悠紀雄著、中央公論社刊)をヒントにしています。時間軸による整理法はメモを取るようなソフトウェアに使えると感じたものの、当時の私の技術ではどうにもできなかったアイデアでした。それがいまになって役に立ったのです。新しいソフトウェアはアイデアと技術が結びついてこそ形になるのだと思います。
開発中に苦労した点
「連想メモ帳」の開発には3週間かかりました。私の経験では最長の開発期間です。
開発には困難な点がありました。それは新しいアイデアである「メモを時間軸に並べること」をどういう方式で実現するかということでした。時間軸をどう取り入れて、どう見せるかを実現可能な方法にまとめなくてはなりません。ここが一番大変なところでしたが、いろいろな方法を考えては捨てて、結局、現在の形に落ち着きました。この経験で、新しいものを作る難しさを思い知りました。プログラム言語でどう実装するかということよりも、新しいアイデアをどう実現するかということのほうが数倍困難だった感があります。
開発が終わり、品質は実用できる程度ではありましたが、まだプログラムが乱雑でスパゲティのように絡み合っていました。バグが残っている可能性は捨てきれず、公開するには不安でした。そのとき後押しをしたのはプログラム言語にちょっと詳しい知人の一言でした。
- 「ソースがスパゲッててもちゃんと動けばいいでしょ。フリーソフトなんだし」
という一見暴言にも思える励ましの言葉のおかげで、私はこのソフトウェアの公開に踏み切ることができました。公開後にもバグの修正を行い、こうしてベクターソフトニュースに載せていただくこともできました。「とにかくモノを出すこと」が大事だと思い知らされました。アイデアを書き留めておいたこととメタな(抽象的な)技術に着目したこと、それに少しの勇気が「連想メモ帳」に込められています。些細なことや実現できそうにないことでもアイデアとして記録しておき、適当な期間を置いて読み返すという習慣を続けていてよかったと思います。
プログラマ志望の方々へ
私は自分の考えを他人に見せることに恐れがありました。でももっと大事なことに気づき、恐れずに見せていこうと思ったのです。
「とにかくモノを出すこと」が大事です。それと作ったソフトウェアを公開して自分を試すことです。欠点やバグをあれこれとあげつらわれることが心配になっても、そういった雑念に惑わされず、そこそこの成果を上げることを考えればよいのです。
「劣るほうが優れている」という言葉があります。これは「UNIXという考え方」(Mike Gancarz著、オーム社刊、原書「The Unix Philosophy」)に載っている言葉で、劣っている技術でも広く利用されるようになった例がいくつもあるということを示しています。つまり「どこを取っても不備がないこと」や「非の打ち所がないこと」よりも大事なことがあるということです。その大事なこととは、例えば、新しいアイデアを広く公開することです。欠点やバグ、プログラムの汚さを理由にして公開しないよりも、アイデアを示すことの利点のほうに目を向けていただきたいのです。他人を巻き込んでゆけば自分一人では思いがけない、新しいことが起きるものです。
「ベクターハッカ飴」 http://hp.vector.co.jp/authors/VA044037/ では「連想メモ帳」をはじめとして、私が作ったソフトウェアの解説をしています。私に共感をお持ちいただける方に少しでもお力添えできればと思い、作ったサイトです。本ソフトの内部に興味がある方はどうぞご覧ください。私のプログラムがみなさんのソフトウェア開発のお役に立てば幸いです。
(ハッカ飴)