Part1でプログラムを実際に動かしてみた感想はいかがですか? プログラムの中身はよくわからなかったかもしれませんね。

 それは当然のことです。プログラミングを作文にたとえるなら,Part1の「準備時間ゼロ!今すぐ体験できるプログラミング」を読み終えたばかりの皆さんは,紙と鉛筆の使い方を覚えた段階に過ぎません。自分の思うように文章を書くことができるようになるためには,起承転結や句読点の打ち方などの基本的な作法を知らなければなりません。長い文章を書くには,全体を筋道立ててまとめ上げる方法も身に付ける必要があります。さらに人の心に響く文章を書こうとすると,たくさんの文章を読んだり書いたりして表現の幅を広げ,同時に自分自身の見識も深めていかなければならないでしょう。

 プログラミングについても,全く同じことが言えます。プログラミングを始めたばかりという皆さんは,当面の目標として,短くてもきちんと動作するプログラムを作れるようになることを目指しましょう。どんなに複雑なプログラムでも,細部に目をこらせば,まとまった機能を持つ短い“プログラム片”の組み合わせでできているからです。

基本構造は入力,加工,出力

 Part2ではそのための下準備として,Part1で動かしたプログラムを題材に,プログラムを読み解くために重要になる五つのポイントを解説します。Part1に掲載したプログラムはどれも短く,もっとも長い「数当てゲーム」でも誌面の1ページに満たないものでした。それでも,あの短いプログラムの中に,どのプログラムにも共通して含まれるエッセンスが詰まっているのです(図1)。

図1●数当てゲームのプログラム(一部)。ここにはプログラミングの基本要素が詰まっている
図1●数当てゲームのプログラム(一部)。ここにはプログラミングの基本要素が詰まっている
[画像のクリックで拡大表示]

 プログラムは大きく,(1)データを受け取る,(2)受け取ったデータを加工する,(3)結果を出力する――という三つの部分で構成されます。

 Part1のプログラムも,この基本構造にのっとっています。このプログラムを理解すれば,当面の目標とした「短いプログラムを思った通りに読み書きできるようになる」ためのスタートを切ることができるわけです。

 ポイントの一つ目は,(1)プログラムを記述するために使用する言語「プログラム言語(プログラミング言語)」です。プログラミングの勉強を始めると,自分が使用する言語だけについ目が向いてしまいます。まず,プログラム言語全体を見渡しておきましょう。

 ポイントの二つ目,三つ目,四つ目は,それぞれプログラム内部で基本構造を実現するための三大機能,すなわち(2)受け取ったデータや,加工してできた中間的なデータを格納する「変数」,(3)入力,加工,出力などプログラム内で実行される処理の手順を格納しておく「関数」,(4)変数や関数を臨機応変に組み合わせて,複雑な処理の流れを記述する「制御構造」に対応します。プログラミングではこれらの使いこなし方が,起承転結や句読点の打ち方に当たります。

 最後のポイントは,(5)解決したい問題をプログラムを使って解いていくための手段である「アルゴリズム」の考え方です。変数,関数,制御構造を駆使して望む機能を実現するには,アルゴリズムを考える力が不可欠です。

広範な技術・知識を積み重ねよう

 プログラミングの勉強は,もちろんそこで終わりではありません。もっと本格的なプログラムを作成できるようになるためにはもっと別の技術や知識が必要になります(図2)。

図2●小さいプログラムを作る力は,複雑さ,品質,多機能さなどを備えるプログラムを作る土台となる。
図2●小さいプログラムを作る力は,複雑さ,品質,多機能さなどを備えるプログラムを作る土台となる。
[画像のクリックで拡大表示]

 例えば,企業活動を支える大規模で複雑なソフトウエアを作ろうとすると,とてもプログラマ一人で作ることはできません。そこで複数の人が協力して一つのソフトウエアを作り上げるために,ソフトウエアの機能を分割して個別にプログラミングを進める方法がいろいろと考案されています。

 そうした大規模で複雑なソフトウエアであるほど,不具合(バグ)があったらそれこそ一大事です。高品質のソフトウエアを作るには,プログラミングだけうまくできればよいわけでなく,「どんなプログラムが必要か」をきちんと見極めたり(これを分析と呼びます),「プログラムをどのように作るか」をきちんと決める(これを設計と呼びます)作業が欠かせません。設計通りに動作するかどうかを確かめる「テスト」も非常に大切です。

 ほかにも,身に付けておくべき知識やスキルがあります。例えばWebアプリケーションでは,膨大なデータを管理するためにデータベース・システムをよく利用します。ここで使うデータベースの開発や制御には,プログラミングとはまた別の知識が必要になります。ネットワーク経由でコンピュータ同士を連携させるなら,ネットワーク技術の知識も必要でしょう。

 この記事は,皆さんにプログラミングの第一歩を踏み出してもらうことを主眼にしているので,こうしたトピックには触れていません*1。ぜひ他の記事を参考にして,自分の技術や知識の幅を広げていくよう心がけてください。