エンジニアに数学は必要か?その関係性と学び直しに有効な本を紹介

転職を考える人にとって、最近人気が高くなっている職種に「エンジニア」があります。エンジニアは理数系のイメージが強いですが、意外に文系出身の人も多いです。そのため、「エンジニアに数学は必要か?」という議論がよく持ち上がっています。この議論、エンジニアへの転職に興味があるみなさんは、ちょっと気になりますよね。

今回の記事ではエンジニアと数学の関係性を紐解いた上で、数学の学び直しをする際に役立つおすすめの本も紹介します。これからエンジニアへの転職を目指すみなさんは、ぜひ参考にしてください。

エンジニアに数学は必要か?

結論からいえば、数学が苦手でもできる作業もありますが、総合的にはエンジニアには数学が必要であり、無縁ではいられません。なぜなら、エンジニアの仕事の基本ともいえるプログラミングと数学は、どちらも論理的思考力が必要だからです。

プログラミングにおいて、課題に対する結果を得るための筋道を立てるために論理的思考力が求められます。数学も同様に、数式を証明するために論理的思考力が必要です。また、プログラミングには関数を使用する場合もあります。そして、論理的思考力とは物事を理論をベースに考える能力であり、課題の解決やコミュニケーションに役立ちます。

ここからは、エンジニアにとって数学は必要なのかという基本命題について、掘り下げて見ていきましょう。

エンジニアは数学と無縁ではいられない理由

なぜ数学が必要なのか、無縁ではいられないのかを順を追って説明しましょう。

「エンジニア」といえば「ITエンジニア」の意味で使われることが多いですが、実際はIT以外の分野も含めて「工学に関連する技術者」を意味する言葉です。エンジニアの語源の由来は「工学」を意味する「エンジニアリング」とされています。そして「工学」の定義は「数学と自然科学をベースとし、時として人文社会科学の知見も用いて社会に有益な事物や環境の構築を目的とする学問」です。要するにエンジニアが拠り所とする工学は、数学と自然科学によって成り立つもので、数学なくしては存在しません。そのため、「必要か不要か」以前の問題として、エンジニアという存在の理論的根拠のひとつに数学があります。

数学が得意か苦手かはさておき、大前提としてエンジニアは数学と無縁ではいられません。

数学的知識がなくともプログラミングは可能?

エンジニアの依って立つ根拠に数学があります。しかし、プログラミングの作業をする上で、数学の難しい知識は必ずしも必要とされません。数学が苦手であっても、四則演算などの数学の最も基本の部分が理解できていれば、プログラミングに取り組むのに特に問題はありません。エンジニアになることも可能です。

プログラミングに数学が絡むわかりやすい例

数学が苦手でもプログラミングは可能ですが、それでもプログラミングに数学が絡んでいることは多いです。わかりやすい例を3つ挙げておきましょう。

まず、時間を計算する場合に、秒を分換算するなどの時間換算が必要になることがあります。例えばタイマーのようなアプリケーションをプログラミングする場合に、「時間」「分」「秒」の3段階で表示するとしましょう。プログラム上では時間経過をミリ秒(1/1,000秒)で取得することがよくありますが、それを「時間:分:秒」という形式で表示させるために、換算処理を施さなければなりません。

次に、座標を表す場合も数学的処理になります。グラフ上にある特定の点の位置を表す場合に、座標で表す方法を学校で習ったことがありますよね。この座標の知識が、プログラミングにおいて必要になることがあります。例えば画面の寸法を取得する際に、「x=200,y=100」などの座標で表されるのが一般的です。ちなみにプログラミングでの座標の原点は画面左上端となり、この点は数学の問題とは異なります。

最後に、プログラム上で条件式を考える際にも数学の知識が必要となります。条件式とは2つ以上の値の関係性を、記号を用いて表現します。数量的な関係性をコードで表現する場合に使われるのは、数学において数の大小を表現する不等号や等号(「>」「<」「=」)などです。他にも、数学的表現がプログラミングで日常的に使用されています。

アルゴリズムの理解に数学は必要

アルゴリズムは、ある問題を解決する手順や計算方法を意味します。そしてプログラムの作成は、言い換えればアルゴリズムを構築することです。数学の知識がプログラミングに役立つのは、このアルゴリズムを理解する手助けとなる点です。

アルゴリズムにはさまざまな種類があります。例えばプログラミングによく利用されるものの中に「ソート」と呼ばれるアルゴリズムがあります。これは複数のデータを、あるルールに基づいて並べ替えるアルゴリズムです。ソートにも種類があって、種類によって計算に掛かる時間やメモリの消費量が変わってきます。それらを調べるためには、対数や指数関数などの数学の知識が欠かせません。

数学苦手なエンジニアは仕事の幅が狭くなる

ここまでで述べたように、そもそもエンジニアの仕事は数学なくして成立しないです。実際のプログラミングの作業では、数学的知識がなくても進められるものもありますが、不要ではありません。

つまり、数学が苦手だと、エンジニアとしての仕事の選択肢が絞られてきます。ロースキルでこなせる案件なら問題なくとも、ミドルスキル以上の案件になれば関数をはじめとして、数学的な処理の必要性も増えてくるでしょう。エンジニアの仕事に継続的に取り組むのであれば、苦手のままいるよりは進んで学び直し、エンジニアとしての守備範囲を広げるほうが賢明です。

数学が重要になるプログラミング分野

初学者がプログラミングを学習する段階では、難しい数学的知識はなくても問題ありません。ただし実際にエンジニアとしてゲーム開発や統計処理、AI開発などの分野を志向する場合には、高度な数学の知識が必要です。これらの3つの、数学が重要となる分野を見ていきましょう。

統計処理

統計処理は膨大なデータを分析し、そこから規則性や傾向を見出し、マーケティングなどに役立てる分野です。この分野では確率分布を表したり標準偏差の数値を求めたりなど、さまざまな数学的知識が求められます。

AI(人工知能)開発

近年大いに注目されているAIの開発では、ビッグデータなどの膨大な情報を扱い、それを処理したり予測したりするために微分や積分などの理論を応用します。そのため、微分や積分、数理統計学、線形代数などの高度な数学的知識がなければ、AIの開発に携わるのは困難です。

ゲーム開発

ゲーム開発の分野ではプログラミングに数学的知識が必要になり、特に3Dのゲームにおいてはそれが顕著に表れます。例えば3Dの動きをプログラミングするためには、三角関数などの数学や物理の知識が必要です。また、プレイヤーがより現実的な動きを感じられるように、物理計算を駆使しなければなりません。

このように、3Dゲームではキャラクターやさまざまな物体の動きの表現にリアリティが求められます。そのため、動きを計算する数学的知識が必要です。

数学とインターネット関連のエンジニア業務

現代に暮らす私たちが利用するサービスは、インターネットを通じてのものが増えています。ドラマや番組を視聴するデバイスの比重は、テレビからPCやスマホにシフトしつつあります。アプリを利用する時間も増えているでしょう。また、仕事においても企業向けのASPやSaaSの利用が活発になり、使用するデータ量も増えています。

このような時代において、エンジニアは多くのユーザーにサービスを使ってもらえるようにネット上の膨大なトラフィックをさばき、蓄積されたデータからサービスをさらに賢く改善する必要があります。

コードの実行時間とユーザー増加の関係

インターネットを介したサービスは、使用される頻度が高まれば秒間のリクエスト数が増えます。そうなると、データ表示のためのアルゴリズム実行時間が物理的に遅くなります。訪問ユーザー数が1,000人/日の時点では気にならなかった処理速度が、10万人/日になると違和感を感じ、100万人/日になると離脱する理由になりかねません。

そこで役立つのが数学的知識です。例えば、コードの実行時間がユーザー数の増加に応じてどのぐらい遅くなるのかなどを、数学的知識を使って計算できます。計算上でユーザーが増えたときに顕著に遅くなるコードを見つけ、そうなる前に改善の手を打てます。そのように数学は、上手に使えばサービスのクオリティを向上できるので、エンジニアにとってはレベルアップを後押ししてくれる要素といえるでしょう。

エンジニア向け数学の学び直しに役立つ本5選

エンジニアとして進んでいきたい方向で数学的知識が必要であれば、思い立った時点から学び直しを始めましょう。ここではエンジニア向け数学の学び直しに役立つ、おすすめの本を5冊紹介します。

プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問

この本では、パズルを解くうちに自然とアルゴリズムが身につき、楽しみながらスキルアップできます。シンプルかつ高速で処理ができるコードが書けるようになるでしょう。

プログラミングは魅力ある作業です。ソースコードによって何もないところから価値を生み出したり、自分が初めて書いたコードでプログラムが動く瞬間を見たりして、プログラミングの楽しさを感じるでしょう。

本書で紹介される数学パズルは、例えば「両替した際の硬貨の組み合わせは何通り?」などのような身近なものを取り上げた問題で、3人のキャラクターたちと一緒にそれを解くコードを考えます。「国名しりとりで一番長く続く順番は?」などの楽しさがある問題で、ワクワクしながらスキルを磨けます。数学に苦手意識がある人におすすめです。

詳しくはこちら

アルゴリズム図鑑 絵で見てわかる26のアルゴリズム

この本では、アルゴリズムをまるごとイラストにしており、面白くかつ理解しやすくなっています。アルゴリズムはどのプログラミング言語でコードを書くにしても、不可欠といえるでしょう。にもかかわらず、現場で教わることはほとんどなく、独学も難しいものです。そこでアルゴリズムを独学することにフォーカスしたのが本書です。

具体的には26個の基本的なアルゴリズムと7つのデータ構造が、イラストで解説されています。フルカラーなので、図の意図がわかりやすく、それぞれのアルゴリズムの考え方や問題点、計算効率などが理解可能です。グラフやソートの動きを図で追うことで、アルゴリズムの仕組みや考え方を理解する後押しとなります。

プログラムを書くために知っておくべきアルゴリズムの世界を楽しく学べるので、すべてのプログラミング初学者におすすめです。

詳しくはこちら

プログラマを育てる脳トレパズル 遊んでおぼえるPythonプログラミング&アルゴリズム

この本では、初めから終わりまで遊び感覚で、楽しみながら「使えるコード」が書けるようになります。まったくの初心者でも、一からPythonのプログラミングとアルゴリズムがわかります。

特徴は4つあり、ゲームを作ることを通して基本を理解できること、パズルで実践的にコードの書き方が身につくこと、環境構築なしにGoogle Colaboratoryですぐ開始できること、パズルの解答はPythonだけでなくJavaScriptとRubyバージョンもあることです。

プログラミング言語の文法の勉強は、おおむね退屈なものでしょう。しかし、簡単なゲームであっても自分の手で作る作業は、達成感を味わいつつ基本を身につけられます。そして徐々に難しくなるパズルを通じて、アルゴリズムを考えた「使えるコード」が描けるようになる仕組みです。堅い勉強法が苦手な人におすすめです。

詳しくはこちら

Pythonで動かして学ぶ!あたらしい数学の教科書 機械学習・深層学習に必要な基礎知識

この本では、AI開発に求められる数学の基礎知識が1冊でわかります。確率や線形代数、統計や微分などの、機械学習・深層学習に必要な数学の基礎知識をわかりやすく解説した本です。

コードと数学を学びたい人、AIや機械学習を勉強するにあたって数学が壁になっている人、急に仕事でAIを扱うことになった人、単に改めて数学を学び直したい人、文系出身でエンジニアになりたい人などにおすすめの本です。

詳しくはこちら

問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本

この本では、中学から大学教養レベルまでの数学的知識の中で、アルゴリズム学習に必要なものを取り上げ、典型的な数学的考察と有名なアルゴリズムについて丁寧に解説しています。

アルゴリズムをプログラミングで問題を解決するのに欠かせないツールとした上で、そのアを理解し応用するために最低限必要な数学的な知識と考察力が身につくでしょう。知識を実践力に培うための、200問もの例題や演習問題が掲載されています。体系立てて、プログラミングに必要なアルゴリズムの基礎を学びたい人におすすめです。

詳しくはこちら

まとめ

エンジニアにとって数学は、まさに取り組む分野に内包されたものなので、決して無視できません。特に数学的知識がなくてもできるプログラミングもありますが、スキルアップのためにはある程度の数学的知識が必要です。

プログラミングやアルゴリズムに関連する数学を学ぶことで、エンジニアとしての仕事の幅が広がるので、ぜひ学び直しをおすすめします。エンジニアを目指して転職を考えているみなさんは、ここで紹介した情報を参考に、おすすめの本なども活用してエンジニアに必要な数学的知識の習得にチャレンジしましょう。

いますぐ求人を探す

タリスマンに転職相談をする