
「プログラミングに興味があるのだけど、なんだか難しそうで理系の人がやるイメージが頭に浮かんでいる。数学が苦手な自分でも勉強すれば習得できるのだろうか。」
今回はそういった悩みを解決します。
本記事で分かること
- プログラミングに数学の知識は必要か?
- 数学の知識があると有利なプログラミング分野
- プログラミングに文系・理系は関係ない
- 【本質】プログラミングに求められるスキルは学習過程で自然と身につく
記事の信頼性
この記事を書いている私はエンジニア歴8年で、今も開発現場でプログラミングをしています。
ですので、現場で開発するために求められるプログラミングスキルに関してお答えすることができます。
今回は『プログラミングに数学の知識は必要か』というテーマについて解説します。
最近はAIを中心としてソフトウェア開発の需要が増えてきていて、プログラミングに興味を持つ方も多くいますよね。
ただ、プログラミングってなんだか難しそうで、理系の人が得意する数学の知識など専門的なスキルが必要なんだよね、、と不安に思っていませんか?
先に結論をお伝えすると、プログラミングに数学の知識は基本的には不要で、数学が苦手と感じる人や文系の人でも習得できます。本記事ではその理由について解説します。
この記事を読むことでプログラミングを難しそうに捉えていたイメージが変わりますよ。
プログラミングに数学の知識は不要
冒頭でもお伝えした通り、結論はプログラミングに数学の知識は基本的には不要です。
高校や大学で学ぶような微分・積分やフーリエ変換などの高等数学の知識は不要で、小学生で学ぶ足し算や割り算などの四則演算ができればオッケーです。
理由は、私がエンジニアとして8年働いた経験の中で数学の知識を必要とした場面はごく限られていたからです。
例えば、次のような日々の勤怠状況を管理するようなシステムを作る場合を考えます。
- システムにログインして個人の情報と紐づける
- 日々の勤怠時間を入力する
- 月々の労働時間を確認できるように表示する
勤怠時間とか労働時間とかが出てくると、数学の知識必要じゃん…
と思われるかもしれませんが、全くそんなことはなくて、必要なのは算数の知識ですね、時間の計算です。
こういった感じで、世にある大抵のソフトウェアは数学の知識不要でプログラミングできます。
数学の知識があると有利なプログラミング分野
とはいえ、数学の知識を必要とするログラミング分野もあるので、そういった分野に携わる人は数学の知識があると有利です。
具体的には次のような分野です。
- ゲームプログラミング
- AI
- 画像処理
1つずつ見ていきます。
ゲームプログラミング
ゲームプログラミングを行う人は数学の知識が求められることがあります。
例えば以下のような場面です。
・3Dグラフィックス:
高画質な映像を高速に描画するためには行列演算が使われています
・人や物の動き:
ゲームのキャラクターが実際の人のように動くための演算や、物がぶつかったり落下したりする自然のような動きを表現するためには物理演算が使われています
よりリアルで滑らかな映像を作るために高度な数学知識が使われているので、ゲームプログラミングを行う場合は数学の知識があると有利なケースがあります。
AI
最近注目されている自動運転や画像認識などのAI分野においても数学の知識が求められことがあります。
AIの研究には膨大なデータ量から特徴を抽出するために微分・積分が使われていたり、所望の特徴をフィルタするための統計処理など、数学的な側面が強い分野です。
ですので、プログラミングが得意ですというタイプより、大学で数学や分析などを学んできた人の方が理解が早いですね。
逆に数学が苦手な人だとAIの研究には苦戦するかも、、
AI分野においては数学の知識が求められます。
画像処理
スマホのカメラで撮影した写真(デジタルデータ)を編集する画像処理の分野でも数学の知識が必要です。
画像を回転したり切り抜きしたりする処理は行列演算が使われています。また、画像の色味を解析するヒストグラム解析などでも数学の知識が利用されています。
画像処理技術は古くからあり、最近はライブラリが複雑な計算をカバーしてくれるケースが増えましたが、とはいえ、原理を知らないと思ったような画像処理は実現出来ないですよね。
画像処理の分野でも数学の知識が必要です
プログラミングに文系・理系は関係ない
プログラミングは数学の知識が必要と思われていることもあり、理系がやるものだと考えている人も多いですよね。
実はこの考えは誤りで、プログラミングを学ぶのに文系や理系は関係あまりません。
なぜなら、文系の人でもプログラミングを習得してエンジニアになっている実例があるからです。
詳しくは『プログラミングは理系じゃなきゃダメ←嘘です【文系でもできます】』の記事で解説していますが、実際に文系の人がエンジニアとして働けているのであれば、理系じゃないとダメなんてことはないですよね。
文系の人もできる→プログラミングに数学の知識は不要
また、文系の人がエンジニアとして働いている実例からも、プログラミングに数学の知識が必要ではないということも言えますよね。
もしプログラミングに数学の知識が必要ならば、高校や大学で高等数学を学んでいない文系の人は出来ないわけですから。
プログラミングを学ぶのに文系や理系は関係がなく、数学の知識も不要です。
参考記事プログラミングは理系じゃなきゃダメ←嘘です【文系でもできます】
【本質】プログラミングに求められるスキルは学習過程で自然と身につく
では文系・理系は関係ない、数学の知識も不要なプログラミングに必要なスキルとはなんでしょうか?
私のエンジニア経験上、プログラミングに求められる本質的なスキルは次の3つの力だと捉えています。
- 論理的思考力
- 分からないことを調べる力
- 粘り強さ・継続力
上記3つを踏まえてここでお伝えしたいことは、プログラミングは数学的な知識や文系・理系の違いから生まれるスキルが必要ではないということです。
確かに数学を得意とする理系の人であれば論理的思考力に長けている人が多いかもしれませんが、それは数学を学んでいたから身についたことですよね。
分からないことを調べる力や粘り強さ・継続力も理系ならではのスキルではないはずです。
プログラミングに求められる本質的な3つのスキルは専門性が必要という訳ではなく、プログラミングを学習する過程で自然と身についていくものです。
さいごに:プログラミングに興味があれば積極的にチャレンジしよう
ということで『プログラミングに数学の知識は必要か』というテーマについて解説しました。
本記事のまとめ
- プログラミングに数学の知識は基本的には不要で、足し算や割り算などの四則演算ができればオッケー
- ゲームプログラミングやAI、画像処理といった数学の知識があると有利なプログラミング分野もある
- プログラミングに文系・理系は関係ないことから、数学の知識が不要だと言える
- プログラミングに求められるスキルは、いずれも勉強を行なっていれば自然と身につくスキル
プログラミングに求められる論理的思考力などは、学校教育でしっかりと身につけていなくても、勉強を行なっていくことで自然と身につきます。
ですので、プログラミングに興味があって、これから勉強してみたいなと考えている人は、積極的にチャレンジすべきです。
行動すれば身につけることができますよ。