プログラマの仕事はツールを使うことじゃない,
プログラミングの本当の楽しさを味わおう

講師 矢沢 久雄

Visual Basicに代表される開発ツールの普及により,あらかじめ用意されたソフト部品を組み合わせれば,それなりのプログラムは作れるようになってきた。でも,それだけで大丈夫だろうか? もしあなたがSEやプログラマを目指すなら,どんなにツールの使い方を極めても,きっと不安が残るはずだ。不安を取り除くために,プログラミングの中核となるアルゴリズムを楽しく学習していこう。

図1●アルゴリズムなら紙の上にその手順を書き表せる
手順が明確であれば,頭の中にあるその問題の解き方が,紙の上に順序立てて書き表せる
 プログラミングの学習手順は,外国語の学習手順に似ている。外国語の学習手順では,まず始めに単語や文法を学ぶ。次にさまざまな慣用句と文章の構成,例えば手紙や報告書の書き方などを学ぶ。これらができて初めて,長い文章が書けるようになる。

 プログラミングの学習手順もほぼ同様である。まず始めにプログラミング言語のキーワードや構文を学ぶ。次に慣用句や文章構成力に当たる“アルゴリズム”を学ぶ。最後にアプリケーション・プログラムやシステムを開発することになる。

 単語や文法を学んだだけでは外国語が話せないのと同様に,キーワードや構文を学んだだけではプログラムを作ることはできない。プログラムは複数のアルゴリズムの組み合わせである。アルゴリズムを学ばなければ,システムを完成させることはできない。キーワードや構文と,実際に動作するシステムをつなげる存在,それがアルゴリズムである。

アルゴリズムを学んで不安を吹き飛ばせ!

写真1●Visual Basicの動作画面
 すさまじいスピードで進化し,発展し続けるWindows環境では,あらかじめ用意されたソフトウエア・コンポーネント*1を貼り合わせるだけで,それなりのプログラムは作れるようになってきている。目的の機能を実現するソフトウエア・コンポーネントを採用することにより,長い時間をかけてアルゴリズムに取り組む必要はなくなったかのように見える。その結果として,システムの開発期間が短縮され,コストが減ったことは確かに喜ばしいことかもしれない。

 どんなソフトウエア・コンポーネントがあるかを知ることは重要ではある。だが,それだけでプログラミングできるというわけではない。コンポーネントを適切に貼り合わせる構成力が必要なはずだ。さらに,必要な機能を実現するソフトウエア・コンポーネントが見つからない場合は,お手上げになってしまう。原因は,慣用句や文章構成(アルゴリズム)をよく理解していないまま,既存の文書(ソフトウエア・コンポーネント)を切り貼りして作文(システム開発)していることにある。

写真2●ソースは日経オープンシステムのWWWサーバーからダウンロードできる
 現在のシステム開発手法を否定するつもりは毛頭ない。が,皆さんがプロのSEやプログラマであるなら,基本的なアルゴリズムを体系的に習得しておく必要がある(図1[拡大表示])。ソフトウエア・コンポーネントを利用しなくても,目的の機能を自分自身のコーディングで実現できる能力を,自ら養成しておければ不安は消える。単純に切り貼りするようなプログラムでも,その完成度は変わってくるはずである。すぐにアルゴリズムの学習を始めよう。この連載では,アルゴリズムを学ぶきっかけ作りをしたいと思う。

 ただし,堅苦しく考える必要はない。アルゴリズムを学ぶことは,プログラムを作成する行為の中で,もっとも楽しいことなのである。筆者自身もアルゴリズムの楽しさを知ってしまったがゆえに,かれこれ20年間もプログラミングの世界に没頭しているのだから。

 なお,本連載では,プログラミング言語としてマイクロソフトのVisual Basicを利用する(写真1[拡大表示])。本文中で紹介するソースは,日経オープンシステムのWWWサーバー上で公開する(写真2[拡大表示])*2。もちろんアルゴリズム自体はプログラミング言語に依存するものではないので,他の言語を使ってプログラムを作成することもできる。