ITエンジニアのための数学(SIer編)
前回の記事*1を書いて、そういや仕事で使っている数学をもう一度整理したくなったので、書いてみます。
SIerの仕事でよく使う数学
オッサンの仕事で普段からよく使う数学分野を列挙します。
離散数学*2
非連続数を取り扱う離散数学は、アルゴリズムの基礎となる概念も多く、活用の幅は非常に広いです。組合せ論、グラフ理論、数列、漸化式など。
データ構造、再帰、ポインタなど、使われる分野は多岐にわたります。
直接的なアルゴリズムの理解を深めるといった点の有効性がありますが、離散数学の問題を解く力は、関係のモデル化、関係網羅の把握といった技量につながると思います。
数値論理学(論理代数・ブール代数)*3
If文など、条件判定を使うなら、論理代数を勉強することは損がないと思います。
命題論理は、まさに真偽判定そのものです。
また、論理代数の能力は、判定条件などで使用される論理式の簡素化などでも役立つ場面が多いです。
SIerとは関係ないけど、回路設計は間違いなくこれが必要です。
所謂ロジカル・シンキングにつながる論理的な読解を鍛えることができる述語論理は、ビジネル仕様から命題を導き出し、適切なロジックに落としこむための力を鍛えます。
集合論・圏論
仕様やテストケースの境界など、これは満たす、満たさないと言った条件範囲を集合とみなせば、集合論の適応範囲となります。
設計やテストケース作成などでベン図を書いたりすれば、視覚的にもわかりやすいものとなります。
あと、関数型プログラミングやっている人は、圏論が馴染みがあるかもしれません。
統計学・確率論
プロジェクトマネジメントなどを行うようになると、リスク計測など不確定要素の評価が必要となります。
そんな時に必要となるのが確率論です。
現時点までのトラブル発生確率から、次回のトラブル発生確率を占うなど、ベイズ確率の考え方を応用することは多いです。
また、以前の記事*4で書いたように、見積と統計は密接に絡んでます。重回帰分析などの考え方は見積などでも有用です。
代表的なものはこんな感じです。他にも、数値解析、情報理論、計算理論などは仕事上目に触れる機会も多いのでは、と思います。
まとめ
色々書きましたが、数学はSE仕事として、非定型の業務をモデル化するといったビジネスアーキテクチャの分析能力と密接に絡んできます。この力は、プログラミングをやっていた時期から現在に至るまで、仕事を行う上でのベースとなり効果を発揮してます。
そういった意味では、大学教育の数学だけでなく、高校教育までの数学、特に文章題は思考のトレーニングにちょうどいいなって思います。
とはいえ、思考方法は有用ですけど、公式や用語を使うか、と言われると。。。例えば、グラフ理論で言えばオイラー閉路を仕事で使うのか、とか言われると微妙ですけど。。。
まあ、数学を勉強してないとITエンジニアになれないわけじゃあないと思いますが、よりよい仕事のためにも勉強して損はないと思いますよ。
※ここまでが、自分の子供が「数学なんて役に立たないよ」とほざいたら「いいや、ITエンジニアに数学は仕事に重要なんだ。社会に役立っているんだ」と諭すためのメモ。
以上