このページを開いた皆さん,プログラミングの世界にようこそ! これから四つのパートを通じて,はじめてのプログラミングを体験してみましょう。
「まだ一度もプログラミングなんてやったことないし,そもそも何をすることかも,ちゃんとわかってないんだけど…」 ノー・プロブレム!そんな皆さんのために用意したのが,このプロローグです。プログラミングの知識ゼロの方でも理解できるよう,「プログラミングってなに?」から始まる七つの素朴な疑問にお答えします。
プログラミングってなに?
プログラミングとは,「コンピュータを動かすソフトウエアを創り出す」ことをいいます。コンピュータをどのように動かすかを決め,その手順書(プログラム)をコンピュータが実行できる形式で具体的に記述していきます。皆さんがお使いのWindows(あるいはMac OSやLinux)も,Webブラウザやワープロも,いわゆるコンピュータ・ソフトウエアはすべてプログラミングによって作り出されたものです。
プログラミングというと,「猛スピードでキーボードをたたく」というイメージがあるかもしれません。実際,映画などに出てくる,すご腕のプログラマからは,そんな印象を受けます。しかし実際のところ,プログラミングの作業では,頭を使う場面のほうが多くなります。たとえ熟練したプログラマでも,書籍やインターネットで情報を集める,下準備として短いプログラムを書いて実験してみる,あるいはいろいろなやり方があるうちのどれがよいか,もっと良いやり方があるのではないか,と悩んだりするのに,より多くの時間を費やすのが普通です。
プログラミングでなにができる?
「コンピュータにできることならなんでも」というのが答えです。プログラミングにより作成したプログラムは,コンピュータにできることはすべて実行できます。では,「コンピュータにできること」の限界はどこにあるのでしょう? それは誰にもわかりません。少なくとも,まだその限界に達していないことは確かです。
プログラミングの勉強を進めていくにつれて,コンピュータが備えている機能そのものはとても単純であることがわかってくるはずです。そのような単純作業をどれだけこなせるかはカタログに書いてあっても,それをどう活用するかまでは書いてありません。それはプログラム次第です。
皆さんが普段お使いのパソコンが実に様々な機能を提供してくれるのは,そのように単純な機能を複雑に積み重ねて作られたプログラムが動いているおかげです。実際,誰かが書いたプログラムによって,昨日までできなかったことがある日突然できるようになるということも起こります。
プログラミングって難しい?
いいえ,プログラミングを始めるのはとても簡単です。パソコン1台さえあれば,準備時間ゼロでプログラムを書いて動かすこともできます。詳しくは,今後に公開予定のPart1(目次はこちらから)をご覧ください。
複雑なプログラムを作ろうとすると,当然,難易度は上がります。それでも,プログラミングを手助けしてくれる道具(ツール)を使うと,作業がラクになります。インターネット上には,無料でダウンロードできるツールがたくさんあります。
こうした道具を使いこなすのに加えて,自分ですべてをゼロから作るのでなく,「使えるものはできるだけ使ってラクする」という方法をとることで,ブログラミングの手間をより軽くできます。例えば,Windowsを作ることはできなくてもWindowsの機能を利用して動くアプリケーション・ソフトなら,ある程度の知識を身に付ければ作れるようになるでしょう。実際,プログラミングの世界では,「できるだけ他のプログラムと機能を共有して,同じプログラムを何度も書かずに済むようにする」という考え方が広く浸透しています。
どうやって勉強すればいい?
まずはプログラミングに使う言語(プログラミング言語)の文法と,プログラムを読み書きする方法を学ぶ必要があります。左ページで触れたように,プログラムはコンピュータにどのように振る舞えばよいかを指示する手順書です。つまり,プログラミングは文章をつづる作業に似ているので,まずは「文章の書き方」を覚えなければならないわけです。
上達のコツも文章表現に似ています。まずは,先輩たちが作った良質のプログラムをたくさん読み,動かせるものは実際に入力して動かしてみましょう。そして,身についたテクニックを生かして,プログラムをたくさん書いてみましょう。
作りたいプログラムを思い通りに書けるようになるまでには行き詰まることもあるかもしれません。そのようなときは悩んだり試行錯誤したりして答えを出し,その過程で知識を吸収していくことが結局は早道となります。
仕事で行うプログラミングは,趣味のプログラミングとどう違う?
まず,様々なルールが存在し,それに従わなければならない点が違います。「プログラムの書き方,プログラムの内部構造の分け方などは,ソフトウエア開発会社ごとに細かく決められているのが普通です。新人研修の終わりに感想を聞くと,納期の存在,決められた仕様に従うことの重要性,品質の大切さなどを初めて実感したという人が多いですね」(あるコンピュータ・メーカーの教育担当者)。
もう一つの違いは,仕事でのプログラミングは「空想を形にするのではない」(同)ということです。業務システムの開発では,顧客のビジネスを理解して,なにが必要かを見極めなければなりません。
加えて,仕事でのプログラミングのほうが,人とのコミュニケーション能力がより求められます。業務システムの開発は,様々な役割の人が協力して作り上げることが多いからです。特に新人のエンジニアは,「自分がものを一番知らない状態で,年齢も立場も違うグループに入っていくことになります」(同)。
ソフトウエア技術者は,みなプログラミングの知識が必要?
ソフトウエア技術者である以上,プログラミングの経験や知識は欠かせません。実際にプログラムを書かなくても,作ろうとしているものをはっきりとイメージでき,出来上がったものが設計通りかどうかを確かめるためには,そうした経験や知識がどうしても必要になるからです。
ただし,プログラマは当然仕事でプログラミングをしますが,それ以外のソフト技術者は必ずしも仕事でプログラムを書くわけではありません。特に,大規模なシステムの開発を請け負う会社に勤める場合,仕事でプログラミングをするのは入社して最初の数年だけで,以後は開発プロジェクト全体のマネジメントや,システム設計などプログラミングよりも前の工程(上流工程)の仕事をする機会が多くなることが珍しくありません。実際にプログラムを書く作業は,国内外のソフト開発会社などに発注するためです。
会社に入らずにプログラミングを仕事にできる?
できます。「今,プログラミングの実務経験を6~7年間積んだあと,派遣で働く20代後半のプログラマがたくさんいます」(リクルートスタッフィング ITスタッフィング部部長の田中智己氏)。上流工程よりプログラムを書く仕事をしたいという人もいれば,正社員として働くよりも収入が上がることに気づいて,派遣を選ぶ人も少なくないそうです。
ただ「派遣でプログラマを続ける限り,収入はあまり伸びません。プログラマを続ける人もいますが,正社員になることを前提とした『紹介予定派遣』で上流工程のエンジニアにステップアップしていったり,あるいはプログラミングの技術を生かしてベンチャー・ビジネスやWebシステムの開発会社を興したりするケースも見られます」(テンプスタッフ・テクノロジー ITエンジニア事業部 システムセンターの嶋田光臣氏)。