文系出身者のプログラミング苦手意識の根源?プログラミングにまつわる数学とは

プログラミングは「理系出身者」が使う難しいコンピュータ言語というイメージを持っている人も多いのではないでしょうか。

プログラミングを行うには「難しい数学」が必要と思い込んでいる文系出身者の方もいますが、最近では、文系出身者の方もどんどんプログラミングを学習しています。

それでは、プログラミングには具体的にどのような数学が必要なのでしょうか。

文系出身者の方でも、プログラミングに携わる際に知っておいた方がいい数学知識について見ていきましょう。

プログラミングに必要な数学基礎知識

簡単な計算から、幾何的なものまで、これまでに聞いたことがありそうなものからご説明をしていきたいと思います。

「余り」を求める計算

ある値を何かの数値で割り算をした際に「余り」が出ることがあります。

例えば、「11」を「5」で割った時の答えは「2」と「余り1」となりますが、この「余り1」を求める計算を行う「演算子」があります。

多くの言語では、「%」が余り(剰余)を求める演算子となっていて、「倍数の判定」などで利用されています。

【例】Javascript:計算例
11 % 5 //演算結果は「1」

【例】Javascript:倍数の判定
if( x % 6 === 0){
    condole.log("変数xは6の倍数です。");
} else {
    condole.log("変数xは6の倍数ではありません");
}

グラフィック描画関連の数学

ゲームなど、グラフィックを扱うアプリケーション開発に欠かせない数学知識が「幾何学」などの図形を扱う数学です。

図形を扱うのに必要な知識に「三角関数」がありますが、学生時代に勉強した人も多いのではないでしょうか。

おなじみの「SIN(サイン)」「COS(コサイン)」「TAN(タンジェント)」ですが、これらの理論は、図形を扱う際に利用する機会が増えていきます。

式が少し複雑なのですが、例えば、「図形を回転させたい場合」などに「SIN」「COS」を利用します。

→「座標平面上における数学の公式」

HTML5では、「CANVAS」要素を使って図形を描画することができますので、自分で数式を書いて確認してみることで、実際のプログラムの書き方を学ぶことができます。

図形の移動くらいであれば、高校までに学ぶ数学で対応することができますので、学生時代に学んだことを思い出しながら復習をしていきましょう。

といっても、HTML5では回転するためのメソッドがあらかじめ用意されているため、回転したい角度を指定するだけで、図形を回転できてしまいます。

→「CANVAS rotateメソッド」

「rotate」メソッドの引数に渡す回転角度は、「ラジアン」というあまり聞き慣れない単位が指定されています。

「ラジアン」は、「弧度法」と呼ばれていて、孤の「中心角」「長さ」「半径の長さ」で表される角度です。

→「ラジアン」

普段はあまり使うものでは無いため、馴染みが無い考え方ですが、あらかじめ用意されている三角関数関連のメソッドでは、「ラジアン」を扱う方が一般的となっています。

指数

「指数」は「nの何乗」のようにある値を「何回掛けるのか?」を表すことができます。

例えば、

\[2^{2} = 4\]

のように、「2の2乗は4」となりますが、「2を何回掛けるのか?」を表しています。

指数には「指数法則」と呼ばれる法則があります。

  1. \[a^{m}×a^{n} = a^{m+n}\]
  2. \[a^{m}÷a^{n} = a^{m-n}\]
  3. \[(a^{m})^{n} = a^{mn}\]
  4. \[(ab)^{n} = a^{n}b^{n}\]
  5. \[(\frac{a}{b})^{n} = \frac{a^{n}}{b^{n}}\]

全部覚える必要は無いのですが、こういう法則があるというのを知っておくと、計算が楽になるケースもあるかもしれません。

プログラムで指数を使った計算を行う場合は、

【例】Javascript:計算例
var num = Math.pow(2, 5); //「2」の5乗

のように利用することができます。

対数

「対数」と聞くと、なんだか難しそうに感じるかもしれませんが、「対数」と「指数」には深い関係があります。

「指数」が、

\[3^{2} = 9\]

とすると「対数」では、

\[2 = \log_{3}9\]

と書くことができます。

対数では「3を底とする9の対数」と表現し、logの右側の「3」を「底」と呼びます。

\[2 = \log_{底}9\]

特に「10」を底とする対数を「常用対数」と言います。

\[2 = \log_{10}100\]

その他の数学

他の数学では、「微分・積分・行列」などがありますが、最近では「人口知能」関連技術がクローズアップされるようになり、「微分・積分・行列」などがデータ分析などで必要になるケースが増えているため、これらの数学知識に関しても身につけておくと良いのではないでしょうか。

実際のプログラム開発では、「フレームワーク・ライブラリ」を利用するため、数式をプログラム化することはそれほど多くありませんが、「仕組みを知っておく」ことはどんなことでも大切なことなので、文系出身者の方で、数学に苦手意識がある方もプログラマを目指す方は、数学知識の習得を目指してみてはいかがでしょうか。

HOMEへ