プログラミング今昔

初めて自分のPCを買ったのは1993年の事だったか。半年分のバイト代を貯めてEPSONのNEC PC-98互換ノート、PC386NOTE AR2を買ったのが初めてだった。

PCを買う前から、ポケコンなるものを大学の実験でのデータ処理などで使うこともあり、BASICでのプログラミングは身につけていた。専ら数値処理、文字列処理ばかりだったけれども。思えば、今に至る画像系・グラフィック系のプログラミングが苦手なのはこのころから始まっていたのかもしれない。

で、大学の授業でFORTRANをやったり、趣味で、C/C++をやったり、Delphiをやったりした。大学最後の年が1995年でWindows95祭りがあった頃である。大学生協で最初に店頭でWindows95を手にしたのは私だ。開店前に並んだ。これが自慢。ここまでが余談。

で、このころ、どうしても理解できなかったのが、MS-DOSからWindows95へ至る頃の16bit環境でのCによるプログラミングにつきものだった、「メモリモデル」という概念。途中で投げ出した(逃げ出した)上に、今のOSでは不要な知識なので、今でもわかっていない。覚えているのは、普通にプログラミングすると、システムの空きメモリがあっても、32kバイトしかメモリが使えないということだけだ。

この数値、Windows95でメモ帳をよく使っていた人なら覚えている人もいるとは思うけれども、メモ帳で扱うことのできたファイルサイズの上限である。Windows95/98などは32bit OSといっても、内部に16bit処理が残っていたので、このような制限が残っていたのである。同時期のWindows NT4.0のメモ帳にはこの制限がなかった。

閑話休題。

当時、MS-DOSで、コンソールで動くテキスト・エディタを題材にプログラミングの勉強をしていた。数値処理・文字列処理が好きだった自分にとって、またプログラミングをする自分にとっては普段使いのツールにもなる。そう思って参考書片手に始めたけれども、32kバイトの壁が立ちはだかった。実際にはプログラム本体が使うメモリ込みになるから、データ領域はもう少し小さくなる。

そんなころ、Linuxに出会い、1995年、NEC PC98互換機から、当時の呼び名でDOS/V機に買い換えたこともあって、インストールしてみた。非力なマシンにFDで時間をかけてインストールをし、Xを動かすことも、ネットワークも動かせなかったが、完全な32ビットコンパイラの存在そのものが嬉しかった。たいしたものは作れなかったけれども。

あれから15年が経った。今、MacのX Codeで細々と自分が使うツールを作り、Androidのプログラミングも手をだそうと思っている。X Codeが使えるのにiPhone向けのアプリを作らないのはAppStoreで公開できないからだ。開発者登録するコストを回収するだけのアプリを生み出すアイデアがない。

今、プログラムを書いていて思うのは、データ処理は昔と比べて非常に楽になった。ライブラリも充実しているし、マシンの処理時間が上がっているので、多少効率が悪かろうが、メモリを使い過ぎようが、処理してしまう。パフォーマンス・チューニングは昔ほどカリカリにしなくても保守性・ソースの可読性に注力した方が、仕事アプリ・趣味アプリ双方いいと思っている。

ただ、Webアプリにしても、Windows・Macネイティブアプリにしても、スマートフォン向けアプリにしても、重要なのは機能でも処理時間でも何よりも、操作性、UIが一番だと思うようになってきた。見た目と便利さ。裏で何してようと、ユーザの操作に影響が出なければ関係がない。スマートフォン向けはともかく、ネイティブアプリなら、マルチスレッドにして裏で処理すればなんとかなる部分も多い。また、いまどきのマシンはそれを許容する。

私がグラフィック系のプログラミングを苦手にしてきたり、デザインのセンスがなかったり、NEC PC-88などの頃からの人に比べればPC歴が半端に長いことが影響して、「人にやさしいUI」が思いつかない、作れないのも問題だと思っている。

また、思いついても、正直、GUIプログラミングで、思ったとおりの動作をさせるための知識を得るのは結構難しい。例えば、Visual Basicでボタンとテキストボックスを並べて処理を書きました、的なアプリは簡単に作れる。しかし、見た目がクールなアプリというのはその上をいく作り・構成をしているものであり、そのためのコードの書き方というのは一朝一夕で身につくものではない。

奥が深い。こんなコト書いてるけど、明日、来月、来年、どうなっているかわかったものではない。3年後にiOSとAndroidが残っている保証がどこにもない。ただ、UIは環境にあわせて覚えなおす必要があるが、効率のよいデータ処理の仕方というのは一度覚えればそれほど変わるものでもないし、与えられたライブラリを使いこなす力というのも一つの環境で身につければ環境が変わってもなんとかなるものだな、とは最近思っている。

コメント