はじめに

コンピュータは人間が作成したプログラムが動作して動いています。プログラムがなければコンピュータはただの機械なのです。

プログラムにはいろいろな言語があって、言語ごとに特性があります。言語といっても、英語・日本語・中国語といったような人間の言語ほどの大きな違いはありません。基本は英語なのですが、構文や記述方法に違いがあったり、言語のよって得意分野も違うので、プログラマーという仕事の能力は特定の言語をどれくらい使いこなせるかが重要だったりします。

プログラム言語にはいくつかのグループがあります。

最初はアセンブラやC言語で、もっともコンピュータの機械語に近い言語のグループです。機械語に近いがゆえに、ハードウェアやOSが変わると修正が必要になります。その反面、機械語に近いということは高速で効率よく動作できるというメリットがあります。

次がCOBOLやFORTRANで、国際的な標準化が行われた初期の言語のグループです。主に汎用コンピュータ等で動作し、ハードウェアやOSに左右されない言語です。昭和の時代には、これらのグループの言語で多くのシステムが作られ、私もCOBOL出身です。ただし、汎用コンピュータがなければ動作しないので、PCが普及するにつれて、徐々に減少してきました。

次にPCが普及すると、PCとDBサーバを使ったクライアントサーバ方式が登場しました。VisualBasicなどの言語を使ったプログラムをPC(クライアント)側に、DBMSを使ったプログラムをDBサーバ側で動作します。この方式はPC普及当時は広まったのですが、PC側の環境を制約することが足かせになり、一時ほど使われなくなりました。最近のオープンシステムでは、WebブラウザとWebサーバとDBサーバの技術を利用した3階層システムが主流になってきています。Webブラウザを使うことで、クライアントサーバ方式と違ってPC側の環境をほとんど制約しなくなりました。また3階層システムは、画面処理をWebブラウザ・業務処理をWebサーバ・データ処理をDBサーバにわけることで処理が単純化できるようになりました。

最後に、大規模なシステム開発の他に、スクリプト言語という簡単に作れる言語が出てきて、個人でも簡単にプログラムが作成できるようになりました。Web系ではHTMLとCSSに動きをつけるJavaScriptがあります。Webサーバで動作するPHPもスクリプト言語です。ExcelやAccessのVBAと呼ばれるプログラム言語も定型的な処理を自動化できる優れものだったりします。

以前はプログラムを作成するというのはプログラマーという専門の人の仕事でしたが、Web系のJavaScriptやPHPやVBAはプログラマーでなくても作成できる言語です。

いろいろな言語がありますが、私が経験した言語の特徴について簡単に紹介いたします。

COBOL

COBOLは汎用コンピュータやオフコンで使われている事務計算用のプログラム言語です。

COBOLの特徴は英語の構文に非常に近く、コマンドと呼ばれる命令文に英語の動詞が使われていて、命令文1つ1つに関してはわかりやすいです。またファイルの定義やファイル内の1件のレコード定義が厳格なため、固定長テキストファイルの読み込み書き出しに向いている言語です。COBOLが利用されていた当時は、紙カードを読み込み、磁気テープに記憶して、ラインプリンタに印字するという処理には便利だったのです。COBOLは大量データを夜間に一括処理するバッチ処理に向いているプログラム言語なのです。

COBOLはPCではほとんどつかれることがありません。COBOLにはいくつかの大きな欠点があります。

COBOLのプログラムは環境定義・データ定義・手続き(命令)定義が明確に分かれていて、手続き定義で使用する変数はデータ定義内で定義しないと使えないのです。他のプログラムになれると簡単な変数もわざわざデータ定義で定義しなければいけないというのは非常に煩わしいのです。そのうえデータ定義で定義した変数には変数の属性や桁数も必要になるため、変数が使いにくいのです。

COBOLはバッチ処理に向いている反面、画面を使った対話型の処理には非常に不向きです。汎用コンピュータの端末である1画面25行・1行80桁の小さな画面の入出力処理でも、COBOLでは非常の大きなプログラムになり、しかも非常に操作がしづらい画面のプログラムになります。私が現役でCOBOLを使っていた時は、画面を使った対話型にはCOBOLは使いたくなかったです。

ファイル処理に関しても、固定長テキストファイル以外の処理は不得意です。特にデータベースを扱う場合は、データベース定義をCOBOLで読み込めるようにしなければなりません。データベースを操作するにも専用の命令が必要だったり、場合によってはデータベース操作用のサブルーチンを呼び出すこともあります。

COBOLというプログラム言語は汎用コンピュータ上でバッチ処理が主流だった1980年代までは活躍しましたが、PCが普及した今の時代は活躍の場をなくしました。現在は過去のコンピュータの遺産を引き継いでいるものに使われている程度です。

RPG

RPGといってもロールプレイングゲームではありません。IBMのオフコンのAS400で使用されているプログラム言語です。RPGは他の言語とは独自の世界を持っています。

RPGは1行の命令文の特定カラムに特定の記述をするプログラムです。そのため、コーディングの際にカラムを間違えるとエラーになります。フリーフォーマットになれると、カラム指定が非常に煩わしいのです。カラム指定の他の問題として変数名を短くしなければなりません。変数名に制約があるのは使いづらいのです。

RPGはファイルの操作には特徴があります。RPGはAS400のデータベースの論理ファイルを必ず使うことになっています。AS400のデータベースは基本的にリレーショナルデータベースなのですが、RPGではSQLではなくRPG専用の入出力命令でデータ処理をします。リレーショナルデータベースはSQLと使ういうプログラマーの常識を、RPGは真っ向から否定します。

他のプログラム言語を使った人間から見ると使いづらいRPGですが、1990年代には意外に使われていました。特に外資系の日本法人がIBMの汎用コンピュータの代わりにAS400を導入していたからです。AS400でRPGを習得してしまうと、複雑なデータベースを意識しなくてもプログラムが作成できるので、当時はRPG専用のプログラマーと人たちが存在していました。中には頑ななRPGプログラマーがいて、RPG以外のプログラムを全面的に否定していました。

AS400は今ではIBM System iになり、RPGもカラム指定がなくなって、Javaなどと連携するようになり、RPGも独自世界からの脱却しています。RPGも過去からの遺産を継承しながら今も生きています。

HTML・CSS

HTMLはWebページを記述するマークアップ言語で、Webページの文書構造を記述する言語です。HTMLはWebページの文書構造なので、レイアウトを調整するためにCSSというスタイルシートを使います。HTMLとCSSだけでは論理制御ができないので、HTMLとCSSはプログラム言語には含まれません。

HTMLとCSSはテキストエディタがあれば作成できて、ブラウザがあれば表示できます。ブラウザがあればOSの制約がなくどのコンピュータでも開くことができます。HTMLとCSSは特別な環境を必要としていないので知識さえあれば、誰でもどこでも作成できます。そのため独学で個人で作成したりWebページを公開している人もいます。

HTMLとCSSのみで作成したWebページでは変化をつけることができません。そのために最近のWebページではJavaScriptを使って、Webページに動きを持たせることが多くなってきています。ただJavaScriptになると論理制御の知識が必要になりますので、プログラマー経験者でないと難しいです。

HTMLとCSSは徐々に改訂されて新しい記述が増えています。最近ではHTML5やCSS3で作成されているWebページも出てきています。HTMLとCSSはブラウザによって表示が変わるので、新しい記述を使う場合には必ずブラウザで表示を確認する必要があります。

JavaScript

JavaScriptは、HTMLやCSSで作成したWebページに動きを持たせるためのスクリプト言語です。JavaScriptという名前ですが、Javaというプログラム言語とは全く関係がありません。

JavaScriptはテキストエディタで編集ができて、HTMLでJavaScriptの関数を呼び出すだけで実行ができて、プログラム言語としては非常に手軽に作成ができます。手軽に作成できる割に、C言語のような本格的なプログラム構文を使うのが特徴です。

JavaScriptはオブジェクト指向であるため、必要な部分を少しずつ作って機能を増やすことができます。しかも現在Webサイトを検索すると、JavaScriptのサンプルがたくさん検索されます。JavaScriptのプログラムが作成できなくても、ネット上から検索されたものを使うと、ある程度Webページに動きをつけることができます。ただネット上のJavaScriptが自分の思っているものと合致するとは限りません。ネット上ではJavaScriptのプログラムソースを公開しているものも多く、プログラムがわかればソースコードを自分用に修正して作ることができます。

JavaScriptは開発環境のいらないプログラム言語なので、学校教育の場で学生にプログラムを教えるのに格好なプログラム言語です。日本の学校でもHTMLとCSSとJavaScriptくらいは教える場があってもいいのではと強く思うのです。

PHP

Webページは基本的にHTMLとCSSで記述されます。ブラウザでWebページに動きをつけるためにJavaScriptを記述します。JavaScriptはあくまでもPC上で動作するプログラムなので、入力データのチェックして保存したり、対象データを読みだすことはできません。

データ処理が伴う場合はPCではなくWebサーバ上で動作するため、Webサーバで動作するプログラム言語がPHPです。PHPはWebサーバでWebサービス(Apache)が動いている環境であればスクリプトでそのまま動作します。構文の似ているC言語やJavaはコンパイルが必要な言語に比べて手軽に作成できます。データベースに接続してSQLでデータ更新もでき、手軽な割に本格的な処理ができる言語です。

PHPはもともとHTMLを生成することを目的に作られたので、HTMLとの相性は優れています。PHPの中にHTMLを組み込んだり、PHPのページとHTMLのページの間でデータのやり取りをしたりすることも手軽にできます。

Webページの画面で、入力してもらったデータを保存したり、入力項目からメールを送信したりする場合には、PHPを使うと手軽にできます。手軽で本格的なプログラムを作成したい人はPHPを学ぶことをお勧めします。

VBA

VBAとは、マイクロソフト社のOfficeに搭載されている簡易プログラム言語です。Word・Excel・PowerPoint・AccessそれぞれにVBAがあり、それぞれの機能を自動化して使いやすくすることができます。ただし、VBAが使われるのは多くのデータを扱うExcelとAccessで、WordやPowerPointではほとんど使われません。

VBAの特徴はプログラムを知らなくても、操作を記録させることでプログラムを作成できます。そのためよく使う操作をVBAとして記録すれば、繰り返して使うことができるのでOfficeでの面倒な操作が簡単になります。とはいえ操作を記録しただけ応用がききません。そのためある程度の操作は記録して、そのあとで判断や繰り返しの処理を追加すると非常に使いやすくなります。

VBAはVisual Basicと構文がよく似ています。ヘルプやリファレンスも充実していて、ネット上でもVBAのサンプルはたくさん見つかります。プログラムに関心のある人は、とっかかりとしてVBAが一番最適です。

なお、プログラムの心得のない人が躓くのが変数と条件分岐と繰り返しの処理です。せっかくいろんなプログラム言語を紹介したので、言語に関係なくプログラムを作るコツを紹介します。

プログラムのコツ

プログラム言語はいろいろあり、それぞれ構文が違い得意不得意の分野があります。また環境依存のプログラム言語が多いので一概にコツというのも難しいです。ただ、今までいろんな言語を見てきて、個人的に最低抑えておくコツがいくつかあります。そのコツを紹介しておきます。

まず一つ目が変数です。プログラムではタイミングやデータの状況で動作が変わってきます。タイミングやデータをプログラム動作中に一時的に記憶し必要なときに利用するときに変数が使われます。プログラム言語のよっては変数に多少制限がありますが、プログラムを効率よく作成するには必ず変数を使います。変数をうまく使えるかどうかがプログラマーのスキルを見極める基準でもあります。

二つ目が条件分岐です。プログラムが動作するときにデータの状況に応じて処理を変えるものです。代表的なものが、if ~ else ~ endifとswitch ~ case ~ default breakです。条件分岐はどのプログラムでも必ず使います。条件とはプログラムが動作するときに考えられる想定なのです。いろんなパターンを組み込むと条件分岐が多くなります。条件分岐が少ないほど単純でプログラムが簡単に作れます。単純なプログラムほど想定が少ないので、想定外が多くエラーになり使い勝手が悪くなります。よく想定外という言葉を使って弁解しますが、想定外というのは誰かが想定を少なくしている裏返しなのです。想定外という言葉を聞いたら想定した誰かの責任を問うのがよいでしょう。

三つめが繰り返し処理でループ処理とも言います。プログラムは同じ操作を繰り返すことが多くプログラムでよく使われる処理です。代表的なものが、for文・while文・until文です。一定条件下の間同じ処理を繰り返すものです。一定条件の時に変数を使うと汎用性の高い繰り返し処理を行えます。プログラムの才能がある人はこの繰り返し処理の使い方が上手です。私もプログラマー教育を受けましたが、繰り返し処理を理解するのに3か月ほどかかりました。

四つ目は配列の使い方です。データの性質に応じて配列にデータをセットすると効率の良いプログラムになります。配列と繰り返し処理を組み合わせることで効率よく使いやすいプログラムになります。

変数と条件分岐はプログラムの基礎なので、これらが理解できなければプログラムにかかわらないほうがよいです。繰り返し処理と配列が使いこなせればプログラマーの素質があるということです。プログラマーは努力だけでなく適性や才能によって能力が決まります。適性のない人が5年努力しても、才能のある人の3か月に負けてしまいます。

ExcelのVBAのように簡単に作成できるものをやってみて、プログラマーになれるかどうか判断してみるのもよいかと思います。プログラマーのような専門の仕事でなくても、自分の仕事を楽のする方法としてプログラムを作成するというのもお勧めします。