プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

プロジェクトX


昨晩プロジェクトXアンコールを見た。


http://www.nhk.or.jp/projectx/encore95/


日本初のワープロを作った東芝の技術者たちの物語だ。
現在のかな漢字変換の基本がほとんど完成していることに驚く。
番組の演出が上手なので、いつもながらプロジェクトXは面白い。


当時のコンピューターは今ほど速くなく、変換に20秒もかかる文字もあったと言う。
技術者は変換速度を3秒までにするようにと言われるが、せいぜい11秒ぐらいにしかならない。
しかし、何気なく見たテレビから、変換キーを押してから辞書を探すのではなく、文字を入力中に辞書を探すロジックを思いつく。
先読みの技術は当時からあったのだな。


もし当時のコンピュータがもっと性能がよかったら、どうなっていただろうか。
今のコンピュータならまともに辞書を引いても1秒とかからないかもしれない。
そうしたら技術者は工夫をしなかっただろうか。


現在のコンピュータはメチャメチャ性能が高い。
ちょっとぐらい効率の悪いプログラムを書いたって、それなりに動いてくれる。
いくら性能が高いとは言ってもプログラマならわざわざ力任せのプログラミングなどしないだろうが、昔に比べて工夫する努力が減ってないだろうか。


少し前、ハンドヘルドPC向けに、画像オブジェクトが移動するプログラムを書いた。
まずはWindows上で実験してみる。BitBltを使った単純なものだったので、それはすぐに作ることができた。
できも悪くないように思えたので、さっそく実機に移植してみる。
単純な描画ルーチンの置き換えで、それはすぐに動いた。


しかし、それは満足するできのものではなかった。
CPU性能もビデオ性能もデスクトップPCより劣るハンドヘルドでPCは、オブジェクトの描画にちらつきが生じたのだ。
描画する部分を最適化すると、なんとか性能を確保することができた。
元のPC用プログラムも直してみる。するとそれは以前よりスムーズに動くようになっていた。


昔だったらすぐに効率が悪いことに気が付いて、工夫したことだろう。
冗長なコードなんて書いてないつもりだったけど、無意識に無駄な処理を書いていたことに気づいて、ちょっとショックだった。
いつからこんなふうになってしまってたのかな。。。


PCの性能は年々上がっていくし、現在のハンドヘルドや携帯電話ですらすぐにPC並の性能になっていくだろう。
ちゃんとストレスなく使えるのであれば、こんなことは別に気にする必要はないのかもしれない。
それよりも現場では生産性や納期の方が重要視されている。
メモリやディスクの制約もなく、プログラムの速度が問題になることも少なくなった。


それでもぼくはプログラムの効率や性能にこだわりたい。
柔軟性がなくマジック番号が乱れ飛ぶプログラムを書くつもりはないが、可能な限り性能を意識してコーディングしていきたい。
別に難しいロジックを考え出さなくても、ちょっとした工夫でプログラムの性能が上がったりするものだ。
もしかして今のOSやアプリを最適化したら、すげー速くなったりして。:)


番組中、技術者が言っていた。
「ユーザに苦労させてはいけない。技術者だけが苦労すればいいんですよ」
これは主に変換効率であるとか、ユーザの使い勝手のことを言っているのだろう。
だが、ぼくには「技術者は効率を上げる努力を怠ってはいけない」と言っているように聞こえるのだ。