基礎を学ぼう
月刊「Windows Server World」の連載コラム「IT嫌いはまだ早い」の編集前原稿です。もし、このコラムを読んで面白いと思ったら、ぜひバックナンバー(2008年6月号)をお求めください。もっと面白いはずです。なお、本文中の情報は原則として連載当時のものですのでご了承ください。
■□■
技術が進歩することで、一般利用者は便利になるが、専門家の育成が難しくなる。IT業界も例外ではない。高度に専門化されたIT分野の全容を理解するのは困難だ。こんなときこそ、基礎に立ち返って学習しよう。基礎を学ぶのは早い方がいい。新人研修の時期は、基礎を学ぶのに最適だ。研修期間中は残業も少ないだろう。雑務に追われない時期こそ、将来の基礎を作るチャンスだ。
●ITは魔法と区別が付かない
年長者の定番の愚痴は「最近の若い者は……」である。一説には、古代アッシリアの粘土板に書いてあったとか(*1)。特に、進歩の早い業界ではその傾向が強い。このことは「ヤンキーとIT業界人は昔話が好き」で書いたとおりである。
現実問題として、コンピュータと通信にかかわるテクノロジを、基礎から勉強するのは難しい。あまりにも高度な技術は、知識として学ぶことはできても、実感がわかないからだ。SF作家アーサー・C・クラークは「高度に発達した科学技術は魔法と見分けが付かない」と主張した(*2)。現在のITはまさにその域に達している。
もちろんITは「魔法(マジック)ではなく、論理(ロジック)だ」(*3)。魔法ではなく、技術として理解するための1つは基本に戻ることだ。コンピュータの基本は「変更可能な動作手順(プログラム)」である。2進数は、ハードウェアの基本ではあるが、コンピュータの必須要件ではない。変更可能なプログラムを実現できれば、2進数をベースにする必要はないし、アナログだって構わない。
コンピュータを内蔵した家電製品はたくさんあるが、こうした家電製品は「コンピュータ」とは呼ばない。電卓の内部では2進数に基づいて計算を行うが、コンピュータとは呼ばない。しかし、同じ電卓でもプログラム可能なものはコンピュータとして扱うことができる。
携帯電話にはJava仮想マシンが内蔵されているものもあるが、自分で作ったプログラムを自由に実行できるわけではないので、コンピュータではない。ただし、携帯電話用プログラムの開発環境を入手し、自分で作ったプログラムを実行できる場合はコンピュータである。逆にいうと、自分が作ったプログラムを実行できないようなら、それはコンピュータではない。
●プログラムを学ぶ目的
かつて、コンピュータの専門家は全員が多かれ少なかれ、プログラム開発の能力を持っていた。「ユーザー」という言葉が、そもそもプログラマの意味だったりする。
しかし、現在では分業が進み、プログラム作成経験のない人も増えてきた。コンピュータシステムの運用や管理を行う人を総称して「ITプロフェッショナル」と呼ぶ。現在のITプロフェッショナルには、プログラム作成の経験がない人も多い。プログラムなど書いている暇がないほど忙しいのだろうが、それでいいのだろうか。最近では、プログラム開発プロジェクトのマネージャですらプログラムを作成した経験がないことがあるという。
もちろん、プロジェクトマネージャとプログラマでは求められる資質が違う。すべてのプロジェクトマネージャがプログラマを経験すべきとも思わない。しかし、プログラムを作ったことがないというのはまずいのではないだろうか。
筆者の経験では、100行くらいのプログラムを書くと、大体のコツがつかめる。職業プログラマの気持ちを理解したいなら、1000行くらいのプログラムは書いた方がいいだろう。
●プログラムを学ぶ方法
実は、現在のコンピュータ環境は、かつてないほどプログラム学習に適した状態にある。職業プログラマでない人が手軽にプログラムを作成できる環境が整ったからだ。コンピュータの全容を理解するのは難しいが、プログラムの学習はかえって簡単になっているのだ。
筆者がコンピュータに触れた1980年代は、Basic言語の全盛期だった。当時のBasic言語は極めて単純で、作成したプログラムを、別のプログラムから再利用することが難しかった。再利用できないプログラムでは、魅力は半減する。
その後、PCでもC言語やC++言語が使えるようになったが、どちらも職業プログラマのための言語であり、ちょっと試すというレベルではなかった。しかも、安価な処理系でも、入手には1万円以上の投資が必要だった。
Windows時代になり、マイクロソフトは従来のBasic言語を大幅に拡張したVisual Basicを発表した、Visual Basicのビジョンは「本物のプログラム言語をあらゆる人に」だった。Visual Basicは有償だが、そのコンセプトを引き付いだVBA(Visual Basic Application Edition)は、Excelなどのオフィス製品に付属するし、Windowsには「VBスクリプト」として標準搭載されている(*4)。特にVBAは、多くのビジネスパーソンが積極的に活用している。ITプロフェッショナルどころか、職業プログラマよりも詳しい営業部員がいるくらいだ。
そのほか、インターネット上には無償で提供されたプログラム言語が数多くある。Webプログラマが愛用するPerlや、日本人が設計し、世界中で使われているRubyなんかがおすすめだ。
外国語の勉強を1人でするのは難しい。プログラム言語も1人で修得するのは難しいだろう。しかし、今はインターネットがある。人気のある言語にはコミュニティがあり、メーリングリストやWebフォーラムがボランティアベースで運営されている。これらに参加してみるのもよい。
●ITは魔法ではない
ある分野に精通することは、その分野の「ナゾ」がなくなることだ。魔法と手品は、英語ではどちらもマジックだ(*5)。よくできた手品は、眼前で見ても魔法にしか見えないが、種明かしをされれば理解できる。練習次第で、自分でもできるかもしれない。優れた奇術師は、1つの手品を応用して別の手品を考案するだろう。
IT分野は、多くの技術が投入されており、ナゾの部分も多いが、そのナゾを1つずつ理解していってほしい。そうすれば、新しい技術が登場してもついていけるはずだ。プログラムを作ることはそのきっかけになるだろう。
基礎を学ぶ理由は2つある。
1つは「応用力を身につけるため」だ。基礎ができていない人に応用はない。実は、IT業界でも、プログラムを書いている人は少数派だ。今すぐ業務に生かせないことを修得するのは無駄なように思える。正直にいうと、身につけた基礎が本当に役に立つかを保証することはできない。ただ役に立つ可能性が高まるというだけだ。しかし、それだけでも学ぶ価値はあるだろう。
もう1つの理由は「その方が楽しいから」だ。基礎が分かれば理解度が深まる。理解度が深まっても、できることに違いはない。しかし、理解度が深まった方が楽しいし、楽しいとやる気も出る。どうせ仕事をするなら楽しい方がいいだろう。
実際問題として、プログラムの動作が分かってもWindowsのトラブルシューティングができるわけではない。しかし、プログラマが陥りがちなミスを見つけるとちょっとうれしくなる。勉強の動機としては十分ではないだろうか。Linuxの開発者リーナス・トーバルズ氏の著書のタイトルはこうだ。
それがぼくには楽しかったから(JUST FOR FUN)
(*1)この話は世界中で広く知られているが、誰も出典を見つけられないらしい。たとえばhttp://d.hatena.ne.jp/MrJohnny/20061010。
(*2)クラークの三法則……法則というより警句で、本文でも紹介した第三法則が最も有名。
- 高名だが年配の科学者が可能であるといった場合、その主張はほぼ間違いない。また不可能であるといった場合には、その主張はまず間違っている。
- 可能性の限界を測る唯一の方法は、不可能であるとされることまでやってみることである。
- 高度に発達した科学技術は、魔法と見分けが付かない。
アーサー・C・クラーク氏は、SF小説「2001年宇宙の旅」の著者として有名だが、個人的にはスタンリー・キューブリック監督の映画の方が余韻が残って好きだ。また、静止衛星の原理を提案したことでも知られている。「あのとき特許を取っておくべきだった」というのはクラーク氏の定番のネタであった。そして2008年3月19日、90歳で死去された。ご冥福をお祈りする。
(*3)「ハリー・ポッターと賢者の石」でハーマイオニーが叫んだ言葉。
(*4)ただし、これらのVisual Basicシリーズは完全に同じものではない。単に「似ている」程度に考えてほしい。
(*5)ポール・ギャリコは「ほんものの魔法使い」という小説で、奇術師(マジシャン)大会に紛れ込んだ魔法使い(マジシャン)を描いた。
その後、マイクロソフトからはVisual Studio Expressと呼ばれる開発環境が無償提供されるようになった。
Visual Studio Expressは、マイクロソフトの標準開発環境であるVisual Studioから、大規模システム開発の機能を取り除いたものだ。個人で使うぶんにはフルセットのVisual Studioと遜色ない。むしろ、機能が単純化されている分だけ使いやすいくらいだ。
これでVisual BasicやC#、C++などの言語が簡単に利用できる。「Windows Azure Platform」と呼ばれるクラウド環境のアプリケーションだって作れる。素晴らしい時代になったものだ。