今回は IT エンジニアの
数学についてお話したいと
思います。

IT エンジニアは
「理系」なので、
数学が得意だと思われがちですが
必ずしも、全てのエンジニアが
数学が得意な訳ではありません。

むしろ、数学ができるエンジニアは
「まれ」と言ってもよく、

数学が得意な事が
強みにはなっても、
数学が苦手な事が
弱点にはならない・・・というのが
私が、この業界にいて
実際に持っている感想です。

 

実際、
IT エンジニアの仕事は、

通信、データアクセス、表示

・・・ といった部分が主になるので、
それらが出来れば十分に戦力には
なります。

 

ただ、以下の三点から
数学ができるエンジニアというのは
できないエンジニアに比べて
確実に優れており、
それだけで差別化を図る事ができます。

●「計算量」の感覚が
身についている。
●独自の表示機能を作る事ができる。
●数値計算関連を扱った
ソフトウェアを作る事ができる。

それぞれについて、
見ていきたいと思います。

 

計算量の感覚が身についている

プログラムというのは
必ず、計算や処理を終了して
その結果をユーザーに見せるなり
どこかに渡す必要があります。

しかし、プログラムの
書き様によっては
終わらないプログラムというのも
出てきてしまいます。

例えば、三目ならべ・・・
〇× ゲームともいいますが、
これは、きちんとプログラムを書けば
コンピューターが人間に負ける事は
決してありません。

 

もちろん、人間側も
必勝法を知っていれば、
コンピューターに負ける事は
ないのですが、

では、なぜコンピューターが
負けないかというと、
全てのケースを
シミュレーションする事が
できるからです。

例えば、先手が最初に置く事が
できるのが、9マスのうち
どこでも置く事ができるので
9通りあります。

そして、後手が残った8マスのうち
どこかなので、8通り、

続いて先手が残った7マスの中から
選ぶので、
7通り・・・

という事で、
コンピューターは
多くても

9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1

で、362880 通り・・・

実際には、全てのマスが
埋まる前に勝負がつくケースも
あるので、もっと少ない数の
シミュレーションをすれば
良いのです。

(対称を考慮すれば、もっと計算量を
減らせますが、その話はここでは
省きます。)

これくらいの数はコンピューターに
とっては、造作もありません。

 

では、囲碁ではどうでしょう?

全ての方法を
シミュレーションできるのであれば、
コンピューターが負ける訳が
ありません。

しかし、コンピューターが
人間に勝てる様になったのは、
ごく最近の話・・・・

しかも、毎回勝てる訳では
ありません。

実際、囲碁で全てのケースを
シミュレーションしようとすると、
最初は
19路 x 19路 の中の 361 箇所
から選ぶ事ができます。

二手目は
残りの 360 箇所から・・・

三手目は
さらに残りの 359 箇所から・・・

とやっていると、
既に三手目で

361 x 360 x 359

で、4600万通りを越えてしまいます。

これでは、五手先、六手先なんて
やっていると、あっという間に
計算量が増えてしまい、
下手すれば数年かかっても
終わらないプログラムが
できてしまいます。

ですから、囲碁のプログラムは
全ての方法がシミュレーションできず、
ようやく、最近になって
全ての方法を調べる事ができなくても
強いプログラムを作る方法が開発され、
人間に勝てる様になってきたのです。

 

こういった、
プログラムの計算量については
多項式、指数関数、階乗 ・・・
といったキーワードが絡んでくるので、
やはり、数学感覚が
身についている方法が強いです。

独自の表示機能を作る事ができる

ソフトウェアで何か結果を
表示したいという時・・・

簡単な、テキスト、表、ツリー、
グラフ・・・

といった様なものであれば、
数学の知識がなくても
表示する事は可能です。

しかし、何か独自の表示機能を
作りたいといった時・・・

その時は、どういう風に
書いていくのか・・・というのを
座標を使って表示する必要があり、
そこには「座標計算」というものが
必要になってきます。

 

実際に私には
「自分の人生を変えた数学の問題」
というのが存在します。

【問】
Cを中心とした半径rの円がある。
点Pと中心Cを結んだ時の
円との交点Qの座標を求めよ。

(解答はこのページの
最下部をご覧下さい。)

 

それまで私は、
数学の知識がいらないデータベースと
WEB を使ったシステムの
開発に携わっていたのですが、
同じ部署の人から、ある日
こういう問題の相談をされたのです。

その人は、開発している
ソフトウェアで以下の様な
表現を組み合わせたネットワーク図を
描きたかったのですが、
矢印を書く上で、その先端の座標を
知る必要があったので、
こういう問題を解く必要が
出てきたのです。

 

実際に、私はその問題から始まり
いろいろな座標計算の相談に
乗っているうちに、
数値計算を必要とする
プロジェクトに携わる様に
なっていきました。

 

世の中には、いろいろな表示機能の
ライブラリがあって、
それを使うと、簡単な表現は
できるのですが
座標計算を知っていると、
それから拡張した、オリジナルな
表現方法を用いる事ができます。

数値計算プログラム

ソフトウェアというのは、
何か目的があって作るものであり、
ユーザーの業界の知識を
ある程度知っておくと、
開発の上でスムーズに
コミュニケーションを取りやすく
なります。

例えば、金融のシステムを
開発を作るなら
金融の知識は知っておいた方が
便利ですし、

会計のシステムを作るなら
やはり、会計の知識は
ある程度必要となってきます。

 

・・・ それと同じレベルの
話ですが、数学も知っておくと、
いろいろ複雑な計算をする
数値計算を目的とした
システムには携わりやすくなります。

例えば、私なんかが携わっている
科学者の為の
データ解析ソフトウェアも
数値計算はやはり知っておくと
便利です。

 

以上、数学が IT エンジニアにとって
強みとなる理由を3つ挙げてみました。

数学はエンジニアにとって、
必ずしも必要なものではありませんし、
数学を知らなくても
きちんとやっていけている
エンジニアは大勢います。

ただ、数学はできると
大きな武器になりますし、
座標計算が必要な可視化など、
他のエンジニアには
できない様な事ができる様になります。

それらを踏まえて
あなたの技術者としてのスキルを
上げる為にも
是非、数学のスキルアップを
考えてみて下さい。

 

 

問題の解答

(本来の数学の試験では、
自分で定義した t を最後の答えに
用いる事はできませんが、
プログラムでは t を一度計算して
それを使って計算した方が
単純で見やすくなり、
計算処理も軽減できます。)