作るのは当時の自分からすると何をして良いのかわからなかった。唯一わかっていたのは、動かないソフトウェアは「考えられていない」ということ。何を考えるのかも重要だったと思うけど、とにかくあちこち隅々まで考えられていない事で徹底されていた。当時はわからなかったけど、厳しい前提条件を自分の思い込みで設定してしまった上司が典型例だった。何も考えないで「それで良いんじゃない?」と言う。その何かにとって都合の良い思い込みで作り続けてしまう。そんな事はもうたくさんだと思った。その日からとにかく考えて作ることにした。厳しい前提条件は何故生まれてしまったのか?その前提条件を外す方法は何か?そもそも前提条件を外すのは無理なのか?なぜ人々は過ちを犯してしまうのか。(いや、それは考えすぎだった)調べてみるとその前提条件は、当時制御対象になっていた装置の実装制約から来ているものだった。とある信号を生成するのに使っていた設定ファイルが、無数の数式から出てきた値を保存するものになっていた。その値を編集するソフトウェアだったのだが、元の式が一体どういうものだったのかわからないものもあった。仕方がないから100個くらいあった設定値の数式をあらゆるソースコードやユーティリティから漁っていくことにした。中にはよくわからないパラメータも無数にあった。わからなくなってくると周りの先輩に聞いて回った。中には「そんなの勝手にやれ!」とか「なんでそんなの必要なんだよ!」と怒り出す先輩もいたが気にしなかった。「自分はこれを完成させないといけないんです」と逆切れした。兎にも角にも「前提条件を外せば今よりももっとまともに動くはず」という目論みで進めた結果、意味不明な設定値の羅列だったものが、設定ファイルから元の数式にはまるパラメータを逆算できるようになり、これがきっかけで問題だらけだったソフトウェアが動作するようになった。それだけでなく、パラメータの生まれた背景や意図を知る事になり、結果的に今まで出来なかったような便利な設定も出来るようになった。この結果を喜ぶ人は社内に殆どいなかったが、少なくとも御客様とその製品を主に担当していた先輩だけは喜んでくれた。このことがきっかけになって、自分は他の人よりも考えることにしようと心に決めた。自分は頭が良い方ではない。それでも何かをしないといけないと思った。みっともない話をする事についてこういうみっともない話(個人的な情けない話)は、ふつうはしないものだと思う。色んな人が色んな事を言うわけだし、そういう批判や非難は誰しも耳にしたくない。心に留めておいて欲しい。ソフトウェアを書くというのは、ありのままの自分でいないと書けないということ。わかる範囲でしか書けない。残念ながら現代の計算機は、未だもって思った通りには動かない。自分の書いている範囲でしか動かない。最近見た光景だが、その彼は様々な状況や人間にありがちな見栄から、どんな事を言われても「簡単です」と答えていた。実際にそれらがどうなったか。簡単と言われていた内容が、とてつもない人数をかけてやる一大プロジェクトだったり、熟練した人なら特に問題もなく完成させられるはずの内容を、いつまで経っても完成させられない状況に陥っていた。彼は見栄っ張りだった。見栄やプライドは成長を阻害する。わからないものはわからない、難しそうなものは難しそう。それは何の恥でも無知でもない。それは個人の能力の限界かもしれないが、それは別に人格とも関係が無い。知らないものが事があるのは恥ではない。全てを知るのは無理だ。素直に自分に対してそれを認めれば良い。馬鹿にする人も気にしなくて良い。いう人達は単に暇なんだ。今日もソフトウェア開発に直接関係なさそうな事を書いてしまったけど、もしかしたら一番大事なことなのかもしれない。思い立って何かソフトウェア開発にまつわる話を書こうと思ったのだけど、おもむろに重い話を書くと読む人も嫌になると思ったので、いっけん関係ない話をしようと思う。ピアノを弾けない人に「明日からピアノでジャズを弾いてくれ」と頼んだとする。面を食らった人はピアノ曲集みたいなのを手に入れておもむろに曲を弾き始めるだろう。「曲集を練習しました」という演奏にしかならない。長年この問題を考えていたけど、結局のところ動作や結果、それぞれひとつひとつには「背景となる思想や積み重ねがあってそうなる」という事かもしれない。したら何を言っているのかわからないかもしれない。前の話、ビーバップの伝統を受け継ぐピアニスト、バリーハリス氏が教育の現場で学生に「Cmを弾いてくれ」と言った光景を見たことがある。学生はどうしてか弾きなれている(?)Cm7を弾いてしまう。何も考えることなく7thを足してしまうわけだ。なると話は全然違う方向になる。バリー氏はCmを弾いて欲しいと頼んでいるにも関わらず、Cm7を弾く人達について、頭を使っていない(=Cm7はF7を経由してBbメジャーへのトニック進行を暗に示唆する)と見ているのだ。Cm7を弾いた時点で、結果的に本来の意図であるマイナーとは全く異なるメジャーに帰着することになり、異なる結果になってしまう。(え?)すべての一見簡単に見えることが、あらゆる浅はかさによって全く異なる結果を生んでしまう。これが「どんな物事も基本が一番簡単に見えて一番難しい」という由縁だ。コードを1つ弾くだけでも間違いは起こり得るのだ。当時工学部の学生だった自分は、そろそろ真面目に勉強をして大学生活から外へ出たい気持ちになっていた。電気好きの一級建築士だった祖父から受け継いだ電気への興味をそのままに電気電子工学科なる学科に進んだのは良いが、真空蒸着なんかをやっている間に何をやりたいのだっけ?とわからなくなっていた。在学五年目に差し掛かったあたりから、当時徐々に日本国内で人気の出ていたマイクロコントローラに興味を持つようになり、研究室の先生にお願いして幾つかの部品を購入してもらった。当時、手にしたものの中にはTI社のDSPもあったのだが、これはのっけから開発環境のセットアップがよくわからずに躓いて放っておいた。