山本ゆうごブログ

山本ゆうごの仕事メモ

こうしてプログラマーになりました

プログラミングをやってみようと思った時のことを書いておく。大学3年から4年でほぼ全て詰まってる。

大学の授業ではピンと来てなかった

大学でもプログラミングの授業はあったがピンときてなかった。メーンフレーム上でFORTRANを書くという課題だった。何がOSのコマンドで何がプログラミング言語かの区別がついてなかった。FACOMかACOSかどっちかだったと思う。

友達がポケコンでプログラミングしてもピンと来なかった

ポケコンという電卓のおばけみたいなのがあったけど、その上で同級生がテトリスを作ってたりもしたがピンと来なかった。

PC上でのC言語は楽しかった

PC上でC言語のコンパイラを使って文字列操作をするというだけの課題があったがそれは面白かった。何よりもパソコン上でソフトウェアが作れるのだというところの面白み。特にPCに関しては情報もたくさんあったので片っ端から試した。この頃はまだ自分のパソコンを持ってない。しかし計算機センターにいくと、PC-98が大量にあったので、そこでフロッピーに入れた一太郎を持ち込んでサークルで使うレジュメを15インチのインパクトプリンタで印刷しまくった。プログラミグというよりもPCが面白かった。

念願の自分のPCを買った

コンパックショックというフレーズがあった。当時はNECのPC98シリーズかMacという高価なものしかなかったが、20万を切るという価格破壊を外資メーカーがやってくれた。そこで自分のお金でやっとPCを買うことができた。ちゃんとプログラミングもするんだろうなぁと思っていたから、MacじゃなくてDOS/Vにした。当時そのことをMacユーザの先輩に話すとものすごいで剣幕でまくしたてられた。そんなに宗教的な発想がコンピュータの世界にあるとは思わず、ただMacユーザ怖いとしか思わなかった。

最初はVBをやってみた

当時は無料でプログラミングということ自体が難しかったから、これもまたお金をためてVBを買った。VisualがついてもまぁBASICだから無難だろうと選んだ。

チュートリアルはサッカーゲーム

本に載ってるサッカーゲームを作ってみた。本格的なのではなく、タイマーイベントでボールが動いて、ゴールキーパーを動かして衝突判定。ところがゲーム自体にはあまり興味はなく。とは言え「タイマーイベント」という目に見えないコントロールがあって、イベントドリブンなんだなというのはわかった。

次に作ったのは自動スクロール

次に作ったのは、任意のウィンドウをスクロールするとうプログラム。機能はシンプルで。以下のような処理

  • 現在アクティブなウィンドウを見つける
  • そのウィンドウに対して1秒に一回 下矢印キーを送る

5行くらいのプログラム。このアプリのおかげで、ご飯を食べながら長い文章を読める。一時停止したかったら、そのウィンドウからフォーカスを外せばいい。これだけのことで、生活が豊かになった。

次に作ったのはモンテカルロ法によるπの計算

理系少年だったので、πの計算をやってみたいという野望はあった。もちろん代数的には解けない。どこまで言っても近似だ。ただ、近似を出す計算って、紙と鉛筆ではやりずらい。ところがコンピュータを使えば、ちょっとしたシミューレーションができる。モンテカルロ法によるπの計算とはこういう理屈。

  • 正方形の中に接する形で円を描く
  • 正方形の中にランダムに砂を振りまく
  • 正方形の中に入った砂の量:円の中に入った砂の量=正方形の面積:円の面積

ということで、πが含まれる比率を、実際の砂の量で近似できる。

凝った計算は全然せずに、代数的にときづらい計算でも、「ざっくり試す」ということができる。これはすごく感動して、「あー、コンピュータってのは人間が面倒なことをやってくれる機械なんだなぁ」ってことを痛感する。この時点でゲームプログラマーにはならないことが見えている。その後も新しいプログラミング言語を触る度に、モンテカルロ法でπの計算をさせている。

ちなみに、モンテカルロ法はすぐに近似はでるが、たくさん計算してもそんなに精度は上がらない。そういうのもかわいい。

秀丸エディタとの出会い

理系学生だったので、なんとなくTeXは触れてた方がいいんだろうなぁとは思っていた。TeXの関数を全部覚えるのは大変だなぁと思っていたら、秀丸エディタでTeXが記述しやすいとあった。これはいいと、試しに使い始めたのが、テキストエディタとの出会い。

私が持ってるPCってスペック的にはギリギリで一太郎が起動するまでも時間がかかったのだけれど、秀丸エディタは快適に動いた。エディタにはマクロがあるらしいということがわかり、さらにヘルプに構文が全部書いてある。シェアウェアとは言え有償コンパイラに比べればめちゃくちゃ安い。そこから自分が便利だと思うものを片っ端から秀丸エディタとVBの組み合わせで作っていった。学生とは言えこれは4000円払う価値があると、すぐに秀丸エディアにお金を払った。

秀丸エディタで就活管理

就職活動はまぁまぁの緊張だったので、各企業の状況を頭に入れるのが大変だった。当時は電話主体の就活だったので、企業側から電話がかかってきたときに、何の会社でどこまで進んでいたかがわからなくなる。そこですぐにジャンプできるようにして、ステータス管理をするという秀丸マクロを作っていた。今思えばテキストエディタのタグジャンプ機能でしかないのだが、そういうのを時前で作っていた。さらにエディタ上の電話番号をクリックすると、電話をかける機能も作ったし、FAXも送れるようにした。やたらとFAXを送ってくる学生はたぶん気持ち悪かったと思う。

そんな感じで地続き

あくまで自分の例でしかないし、今は時代が違いのかも知れないが、「手に職を!」とか「フリーランスで一発逆転!」という発想ではない。触っていって、自分が億劫だったことをどんどんやらせていった。それが私がプログラマーになった瞬間。

「料理ができるようになりたい」というときに、まずは自炊の料理を工夫するというところからスタートするのに近い。家で料理をしたことないのに料理教室に行くというのは飛び過ぎだとおもう。

私はよく「プロダクトの前にまかない飯から」と言ってる。自分や身の周りの人が食べて美味しいと思えるものを作るというのがチャレンジしやすくて評価もしやすい。仕事ということになるとやれマーケティングだのやれ競合だの売上だのということが発生する。プログラミングの本質じゃないところで手間を取る。まずはまかない飯から作りましょうよというのが持論。