あなたがプログラムを理解できない10の理由:第2回

たにぐちまこと(H2O Space.)
2008-05-13 14:10:00
  • このエントリーをはてなブックマークに追加

理数系の頭脳が必要だと思っている

 プログラマは理数系の仕事。そんな「誤解」したイメージを持っている方がいるかもしれない。もちろん、あえて「文系」か「理系」かと分類するのであれば、理数系になるかもしれない。

 しかし、本当に数学の知識が必要になってくるのは、ゲームのプログラムや科学技術計算をするような高度なプログラムが必要になった時だ。PHPやJavaScript、ActionScriptなどでちょっとしたWebのスクリプトを作りたいといった程度であれば、必ずしも数学の知識は必要ない。

 それよりも大切なのは、正しい単語(ファンクションやパラメータ)を、正しい文法で並べてスクリプトを作る能力だ。つまりは、伝えたいことをコンピュータに正しく伝えて、会話をする能力といえるだろう。そういう意味では「文系」であるといってもよいかもしれない。というよりは、文系か理系かなどはあまり関係なく、ちょっとしたきっかけで、誰でも理解できるようになるはずなのだ。「自分は文系だから……」と恐れるのではなく、まずは親しんでみよう。

 ただし、若干ではあるが理数系の「センス」も必要。

 たとえば「1+2+3+……+10」という具合に、1から10までの合計を求めたい場合、単純に「1+2で3、3+3で6……」と順番に計算するよりも「10+1(=11)、9+2(=11)、8+3(=11)……」と、11のブロックが5個あることが発見できれば、11×5=55と瞬時に答えを求めることができる。

 ある問題に対して、真正面から向き合うのではなく、発想を転換してみる。別のアプローチを模索してみることは、スクリプトを理解できるようになるための大きな一歩になる。

 具体的な例を挙げよう。たとえば、次のようなスクリプトがある。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>サンプル01</title>
<style type="text/css">
#tblSample {
border-collapse: collapse;
border: 1px solid #999;
}
#tblSample td {
border: 1px solid #999;
padding: 5px;
}
</style>
</head>
<body>
<table id="tblSample">
<script type="text/javascript">
var style;
for (var row=1; row<=10; row=row+1) {
if (row % 2 == 1) {
style = ' style="background-color: #ccc"';
} else {
style = '';
}
document.write('<tr ' + style + '>');
document.write('<td>' + row + '行目</td>');
document.write('</tr>');
}
</script>
</table>
</body>
</html>
ブラウザで表示を確認する

 このJavaScriptを動作させると、画面上のテーブルが1行おきに背景色が変わる。では、このスクリプトはいったいどういう意味なのだろう。

 「%」という記号は、剰余算で「割ったあまりを求める」という計算式だ。「1行おきに背景が変わる」というのと、剰余算はいったいどういう関係があるのだろう。それは「1行おきに」という言葉を、理数系のセンスで言い換える必要がある。

 「1行おきに」ということは、「1行目、3行目、5行目...」という順番で色をつければよい。これはつまり「奇数」の行に、色をつけるということだ(もちろん偶数でも良い)。

 奇数という数字は、さらに言い換えると「2で割ったときに1余る数字」と言い換えることができる。つまり、その数字を2で割った時に1余れば奇数。だから背景色を変える。そうでなければ(=余りがなければ)、偶数なので背景色を変えないというスクリプトを作れば、「1行おきに背景色を変える」スクリプトとなる。

 このように、スクリプトには単に日本語を翻訳するのではなく、「スクリプトにしやすい言葉に言い換える」「スクリプトにできるように仕組みを変える」といった作業が必要になる。この部分には若干の慣れが必要ではあるが、パズルゲームや謎解きゲームのように、楽しみながら考えていけば、身につくだろう。

  • 新着記事
  • 特集
  • ブログ