C++自分史の続きで、拡張性・柔軟性を得るには寄り道が必要だなということ
先日、C++自分史を書いてみたところ、実際当時作成していたクラスライブラリの件を思い出した。これは、C++ではなく、Cで記述していたものなのだけれど、元々はFortranのライブラリ。
具体的には、測量計算に使うもので、平面座標と緯度経度の換算を行ったり、各種座標補正清算を行ったりするライブラリだ。指令は、単純にメインフレームで動いていたものを、PCやUNIXで利用できるように移植せよ、というものだったのだけれど、メインフレームとPC、UNIXでは、プログラムの実行形態が異なる。
メインフレームの場合、JCLを使って、いわゆるバッチ処理を行うのだけれど、PCの場合、インタラクティブな処理もある。当時すでに稼働していたMULTI 16のディジタイザーシステムでは、完全にインタラクティブなスタイルになっていた。
ところが、である。緯度経度がらみの計算は、結構パラメータが多い。例えば、ユニバーサル横メルカトール図法だと、地球の長半径、短半径、原点の緯度経度のほかに、東方偏差などを入れなくてはならない。あと、縮尺係数は、0.9996だっけ。
メインフレームの場合、これらは、ファイルに記述してジョブを流すだけだ。使いまわしもできるので、パラメータの入力ミスも少ない。PCで、メニューに従って作業する場合でも、こんなものを毎回入力したくないと思うのが人情というものだ。
そこで、要求とは別に、PC、UNIXで使えるパラメータ管理のしくみをしのばせておいた。実は、これを使って、メインフレームで行っていた他のプログラム処理も同じようにできるようにして、なおかつ、インタラクティブな処理で入力した場合には、ちゃんと上書きされるように、インターフェイスをつくっておいた。この仕組みは、その後数年間の開発で重宝することになった。
所属していたのがエンドユーザー企業ということで、要求に非常に近い場にいたというのが幸いしていたと思う。しかし、ソフトウェア開発では、過去からの継続を理解して、未来を見据える目が求められるのは事実だ。
結果がすぐに出るということでは、C++BuilderのようなRADツールは、「今」に対応するのに優れている。しかし、多くのケースで、ユーザーは、過去からの継続で「今」を求めていることが多く、それを理解した上での未来ではない。過去からの継続だけを実装することで、「今」はいいのかもしれないけれど、その先を考えて少し寄り道をしないと、せっかく便利なツールが足かせになってしまうこともある。
結果がすぐに出るツールというのは、あまり考えなくてもできてしまうという側面があるから、そこは注意したいところだといつも思っている。
なんてことを、日ごろから感じているので、今回、それと関連したテーマでパネルディスカッションをやってみることにした。いつものデベロッパーキャンプで、久々のパネルである。日ごろ、RADツールをうまくつきあっている開発者の人々が、どのような意識で、これらの問題があたっているのか、楽しみである。5月31日、NSスカイカンファレンスにて。