プログラミングに数学知識は必要か

エンジニアとしてプログラミングをするために「数学」の知識は必要なのか。これからエンジニアを目指したいけど数学に自信がない人にとっては気になる問題です。
本記事では、プログラミングと数学の関係、数学が苦手な人がエンジニアになるために知っておきたいことをCEO岩本と、COOの中村大雅の意見を交えて解説しています。
数学が苦手な人がエンジニアを目指すには
結論から言うと、プログラミングには高校数学までの知識があれば十分であり、最低限、足し算・引き算・割り算・掛け算の「算数レベル」ができればエンジニアとしてプログラミングをこなすことは可能です。
事実、PRUMをはじめとした開発の現場では、数学に自信がない文系出身エンジニアもたくさん活躍しています。
── PRUMCEOとCOOのお二人は数学、苦手でしたか?
高校数学どころか中学数学までしかできないですよ。(笑)
中学数学すらできない、というか何も覚えてないです。(笑)
僕はエンジニアになって初めてsin(サイン)・cos(コサイン)・tan(タンジェント)の三角関数を使うようになりました。最初の現場がゲーム系でアニメーション担当だったので、ついに使うときが来た!と思いましたね。そもそも文系で高卒です。
プログラミングに大切なのは論理的思考力?
ちまたの情報ではプログラミングに必要なのは「論理的思考力」= 因果関係をもとに順序立てて考えること。であり、数学が得意な人はそもそも論理的思考力が高い人が多いため適性が高いと言われています。
では、なぜ論理的思考力がプログラミングに必要かと言うと、「論理的思考ができた方が新規サービスを開発する際の細かな設計やバグが出た場合の解決に役立つから」と言われています。
── 論理的思考力の部分についてどう思われますか?
僕はまず、数学ができる=論理的思考ができるとは思っていないです。論理的思考力はプログラミングだけではなくて、どんな仕事でも必要なものだと思うので、もちろんあった方がいいとは思いますけどね。
僕が思うのは、数学が必要というよりは応用力ですね。数学でいうと、たくさん公式がある中で問題に対してどれを応用して答えを導き出すかということが必要だと思うんです。
それと似た要素がプログラミングにもあって、「これを実装したい、ではどういう技をどの引き出しを開けて、どれとどれを組み合わせて実現するか」というのは、多分数学をやる中で学んだ手法が生かされている部分があるのだと思います。
ただそれは開発の一要素でしかなくて、例えばアプリケーションを考えた時に、「サービスなので誰か使う人がいる、そこでユーザーというものがイメージできたりだとか、この仕様だとこういう使い方をされた時にこういう穴があるよねとか、ここで困らないか?こっちの方が嬉しいのではないか?」など、国語の行間を読むようなスキルとかも必要になると思うんです。
なので数学か国語かで言うと、特に数学の方がすごいとか、より生かせるとは思わないですね。
多くのプログラミング現場では数学知識はほとんど使用しない

プログラミングと一口に言っても細分化されており、それぞれ必要な知識や技術は異なります。ゲーム開発やAI分野では高度な数学・物理の知識が必要となりますが、データベースを表示させたり、ウェブアプリケーション分野、スマホアプリやフロントエンドと呼ばれる見た目の部分ではほとんど数学知識を必要としません。
言語でいうと「HTML,CSS,Javascript,Ruby」などが筆頭で、数学が苦手だけどエンジニアを目指したい人は、このあたりの言語を中心に方向性を決めていくと良いでしょう。
── 実際、開発現場ではゲーム開発やAI分野でなければほとんど使わないのでしょうか?
AIをはじめとした特殊な開発現場では専門知識がたくさん必要なので数学は必要だと思います。
それ以外の場面では、その時に必要に応じて覚える人がほとんどです。僕も必要になってから学習したので先に数学を覚えないとダメだよっていうのは実体験としてないですね。
初めからゲーム業界など専門分野に行きたいと決まっているのであれば、そこで必要とされる数式などの勉強はしておいた方がいいと思いますが、出来ないからといって諦める必要はまったくないと思います。
コードを書くだけがエンジニアの仕事ではない

エンジニアといえば黒い画面にひたすら難しそうなコードを書いているという印象ですが、コーディングは開発業務の中のごく一部に過ぎません。提案から設計・開発・テスト、またそれに付随してクライアントとのやり取りなど多岐にわたります。
そのため、数学知識よりもIT全般の基礎知識やコミュニケーション能力を備えているほうが汎用性が高く、多くの現場で必要とされる可能性が高いです。
特に、エンジニア不足の日本では、理数系エンジニアだけでは到底、不足を解消できません。「文系だから」「数学が苦手だから」といってエンジニアへの道を諦めずに自分にあった道で活躍できるように頑張りましょう。