Delphi入門

技術者の陥りやすいワナ!?

やっぱりC言語はカッコイイ!

さて、何故このようなタイトルを付けたかと言いますと… よく、大学とかで言語経験が豊富な(特にC言語)方は、「Visual Basic」などのRADツールを大変嫌います。 でも、そうではなく「Visual Basic」=「Delphi」などと考えている方も少なからずいるのではないでしょうか? また、「Visual Basic」に限らず使った事もないのにダメ!という人が中にはいらっしゃいます。 C言語で開発するのがいかにもカッコイイかのように思ってしまって、途中で挫折した人もいるのではないでしょうか? 以前に大学内で色々周辺の話などの話を聞くと、「言語はCだ!」という方も以外に多いと思います。 本当にCの良さが分かる方はその価値観は良いのですが、アテもなく「言語=C」というような方は 少々回りに流されていないか?と考えてしまいます。

きちんとしたメモリ管理ができない!内部ではどう動いているか分からないのでイライラする! というのが大きなウェイトを占めている場合が多いようです。 確かに、C言語などはコンソールアプリケーション(DOS上で動くソフトと思って下さい。) ならサクサクッとスムーズなものが作れるかも知れません。

また、OSレベルでの操作や、ハードディスクの厳密なメモリ管理のソフトなどを考慮する特にはまさに C言語などは最強のツールと化すでしょう。 勿論、「Delphi」でも、GUIを伴うツールでもコンソールアプリケーションでも、作れるようになっています。

職人根性

しかし、今考えているのは、そういうのを目的にしているのではなく、 一般にソフトを配信しようと考えている方はそういう考えを持っていても、時代遅れになるだけです。 何故かと言いますと、「職人根性」とでも言いましょうか… プロになればなるほど、自分の技能が優れていると感じ、無駄な事はしたくないし、綺麗に動かしたいと考えるからです。 この辺が良く技術者は扱いにくい…などと言われるゆえんでしょうか。

また、自分は会社というものはあまり良くシステムは分かっていませんが、 しばしば、営業部と開発部で衝突が起こったりするといような事を聞くことがあります。 つまり、「Visual Basic」や「Delphi」や、「Kylix」などと言ったツールは、 「あんなのボタンを配置して作成するまがいものだ!」と感じる訳です。

所がどうでしょう?これはあくまでも、主観的な意見です。客観的に見た場合は、ユーザーというのは圧倒的に初心者の方が多いです。 ユーザーから見た場合の答えは明らかです。 いくら、技術者の腕が良くても、ユーザに認めてもらう事ができなければ意味はありません。 これは非常にもったいない事と思います。 自分で良くできた!と思いこんでむなしい結果を見るよりは、 もう少しユーザ側の立場に立って物事を見るようにするのも重要だと思います。そこまで偉そうに自分も全然言えませんけど。 意識しないよりはマシだと考えてます。

偏った技術者は客観的に物事を見る事ができず、自分を貫き通してしまうのです。 腕は立っても、企業の場合は儲けにならなければ全く無意味です。 「儲け」と言うと金の亡者見たいに見えるかも知れませんが、 企業の場合は結果的にそうならなければ意味はなさないのは事実です。 勿論、上級者は上級者なりにキーボードだけで動くようにしてくれ!とか言われるでしょうけど、 それは予め設計しておくべきだと思います。設計する時には、 初級者〜上級者向けに作成しなくてはいけないのが難しい所です。

ユーザの心理は非常にデリケート

良い例が、i-modeを見て下さい。 自分は最初、携帯でネットなんてハッキリ言って馬鹿にしていました。 しかし、どうでしょう?ユーザーからはスゴイ反響ぶりです。 そういうのを色々見て、かつ自分でソフトを作成していますが、「ユーザの心理」というものは未だにナゾです。 勿論そんな簡単には行くわけもありませんよね。でも、 技術者はそれが捨てきれずに衝突を起こすのだと思っています。

ユーザ様の心理というのは非常に難しいです。 ちょっとインターフェースを変更しただけでも影響を与えてしまいます。ただ、「DOS時代からの人間なんで、○○して欲しい。」 というような方は考えて見た方が良いと思います。「自分が上級者」と思い込むのは構いませんが...

開発効率を考えてみる

何が言いたいのかと言いますと、これからの時代は、「GUI」でソフトを制作した、 よりユーザーフレンドリーなソフトが好まれる訳ですから(携帯用アプリとかは別として)、ばりばりC言語ノーマルでも、API(Application Programing Interface:まだ知らなくて良いです)とかを駆使すれば出来ますし、速度も高速に作れるかも知れません。 ボタンをポンポン配置するだけで作れてしまうのは納得いかないかも知れませんが、ちょっとボタンの位置を修正したい時に、いちいちプログラムで書いていては大変だと思います。

開発効率を考えれば圧倒的にこういったツールが速い訳です。また、「高速」などというのは一昔前までです。 現在では、コンピュータの環境が十分ついて言ってくれますし、あまり変わらないでしょう。 でも、「Excel」とかの大きなソフトの開発でしたらこういうのは考える必要ありますが、基本的にあまり変わりません。

これからの時代に必要なもの

また、初心者の方が見て一発で使えるためには「GUI」である事が必須条件です。 ですから、つまらない意地を張って「俺は言語経験長いんだ!だから一からバリバリ書くんだ!」 と言い張るのではなく、これからの世の中はより、ユーザーライクなソフトウェアの開発をする事がユーザーに取ってもより良いものと私は感じます。

自分もはっきり言って最近になって、 高速化というものを考えるようになりました。やはり、無駄な事をしたくない!という気持ちは非常に良く分かる事で、 「Delphi」でも無駄なコードを書いているのではないか?などとふと頭をよぎったりもします。

しかし、そう思っても、これは自分がそう考えているに過ぎず、いわば自己満足のような世界に入ってしまっていると考えるようにしています。 そして、試しに何秒かかるか?というテストプログラムを作ったりして確かめているんですが、 「Delphi」は結構無駄がありませんでした。ですから、GUI開発環境でできるだけ無駄なくコードを書く…という当たり前の結論に辿り付いたわけです。 全部Cやアセンブラで書けばそれは早いものが期待できますが… 所謂、簡単なツールならそれでもOKですが、大がかりなプログラムになった時には無理だと考えるべきではないでしょうか?

これからの時代にソフトウェアに必要なものは、「操作性」「デザイン・センス」「機能性」が必要だと考えます。 「デザイン・センス」はあまりに悪いとやはり使う気を無くしてしまうのも事実ではないでしょうか? これらを考えた場合、RADで開発する以外に道はないと感じます。でも、ゲームとかの製作は別次元の問題ですので、ここでは触れません。