ソフトウェアエンジニア#ソフトウェアエンジニア#勉強

数学的知識が業務に役に立ったことはありますか?

数学系の大学院を出てからweb系のソフトウェアエンジニアを5年近くやってますが、業務を遂行するにあたって数学的知識が必要になった場面が思い当たりません。せいぜい四則演算くらいです。

入社時にリクルーターから「数学の大学院出てるならソフトウェアエンジニアにとっては有利だよ」みたいなことを言われましたがあれは何を以てそう言う話をしてくれたのか謎です

文系未経験の方がエンジニアになるために微分積分を勉強してる場面を見たことあるのですが、あれはなんなんでしょうか。


データサイエンティストだと統計の知識が必要だとか、

デザイナーだと三角関数たまに使うとかは聞いたことあります。

Web系のソフトウェアエンジニアにおいて高度な数学の知識が直接必要になる場面はあるのでしょうか

(編集済み)
31

コメント

コメント一覧

古い話になりますが、建築関係の業務アプリ開発に携わった時に、三角関数使いました。

それぐらいしかないですね。

確かに。建築の現場では三角比は重要ですね

高度かどうかはわからないですが、関数型プログラミングでは代数、集合論、群論などがパラダイムの理解においては必要になるかと思いました。

モナド理解するのに圏論がって話は聞きますね。

一般に使われるWebではないですが、メーカーだと検査のWebアプリ開発で使いました。特に半導体の特性検査では高度な計算を使ってました。理解しなくても仕事は出来ますが、理解したほうが仕事が捗りました。

(編集済み)

製造業に近ければ近いほど高度な計算が必要そうですね

数学的な知識が必要な実装は既存ライブラリ内で既にされていて、それを利用するだけというケースがほとんどですからね。ビジネスロジックを実装するのが職業エンジニアの領域で、そのビジネスには直接の数式は出てこないということかなと。ただ、データ分析だと数学とは少し異なりますが統計学が関係してきますし、機械学習だとそのアルゴリズムや特徴量の分析などの知識が必要ですが、しかしwebエンジニアにはその手のものは必要とされないでしょう。

確かに数学的な知識が必要な場面はライブラリで済みそうですよね。

もちろんデータ系の職種だと統計とか線形代数の知識は必要ですが、web系だと必要なさそうですよね

数学そのものかわかりませんが、モナドを理解するために圏論は参考書買って勉強したり、あるドメインロジックを抽象化すると集合演算として記述出来ることがわかって、集合演算のライブラリを使って実装したことはあります。


ただ私は数学科大学院レベルの数学的な教養は持ってないので、見逃している適用箇所はあるかもしれません。

業務でHaskell 使ってるって会社を昔聞いたことあります。その場合モナドを理解するのに圏論勉強する人は多いですよね。

RFCなど、プロトコルや標準規格に関する文献を解釈する際に、光工学や電子工学をベースにした高度な数学的解釈が必要で、その際にとても役に立ってます。


結局はライブラリなどツールを使うだけに帰着しますが、どう成り立っているかを深く早く理解できるのは非常に有用だと思ってます。

(編集済み)

RFCのことでしょうか?


規格文章に数式を含めるってのはよくある話ですかね。

ありがとうございます。typoですw

画像処理するときに高校数学、大学の線形代数の教科書引っ張り出しましたねー。


Webアプリケーションでちょっとした画像加工するツールを作ったときです。


でも大学院レベルの数学をWebエンジニアはあんまり使わないと思います。

(編集済み)

画像処理はフーリエ変換とかアフィン変換が使われてるので内容理解に数学の高度な知識は必須ですね。

深層学習系の理論を理解するのに、基本的な数学の知識は役に立ちました。

自分も勉強してるのですが、バックプロパゲーションがなぜうまくいくのか今だに理解できてません😐

アプリケーションでは依存関係を整理するのでグラフ理論の理解があると綺麗に書けると思います。

確かに依存関係のあるプロジェクト管理とかでグラフはよく使われるので、グラフ理論は覚えておいて損はないですね

JPEGはフーリエ変換を基とした画像圧縮アルゴリズムです。日常的にこれを意識する事はありませんが、これを知っておくとなぜJPEGは写真向きだがベクターデータの出力には向かないかを理解できます。


車関係のデータを使って機能開発をしているときに、GPSから取得した時系列の速度データはありましたが、距離のデータがなかった事があります。任意の区間の距離を提供する測定器はありませんでした。この時、速度の積分は距離であるため、積分を使って距離を割り出しました。


同じプロジェクトで、急加速と急減速を特定して危険運転の判定をしたり、燃費改善のアドバイスをする機能を作る必要がありました。今度は微分を使って加速度を求める事で、閾値以上の加速度を検出して機能の実装を行いました。


仕事の95%以上は数学を使いませんが(メソッドの大きさを考える時に物理数学の考えを応用することはあるが、数学をやっているわけではない)、いざ必要になった時に知らないと仕事が進まなくなるリスクはあると思います。実際、車のプロジェクトでそれができたのは自分だけでした。

(編集済み)

JPEGのフーリエ変換は三角関数が役に立つ最たる例ですよね!


速度を微分して加速度、積分して距離は微分積分の基本ですがこんな応用の方法の方法があるんですね

私は特殊な仕事がらグラフ理論や統計を使いますが、一般的にはライブラリ化されてるなどの理由から数学的知識は使わないと思います。

※三角関数レベルを数学的知識と呼ぶかは悩ましいですね。

数学的知識でなく数学的思考は使うと思いますが。

(編集済み)

他の方も挙げてるモナドとかはありますね。flatMapとかもその背後にある圏論的な意味がわかると面白いです。

他には公開鍵暗号とかもですかね。実際に暗号アルゴリズムを実装することはなくても、たとえばECDHってのはどういうもので何の役に立つのかとかが理解できるとエンジニアとしての幅は広がると思います。

たしかに公開鍵暗号の仕組みで詳しくは知らなくても中で素因数分解とか離散対数とかやってるってわかれば、どういうユースケースがあるのか想像しやすいですよね

会計に長年 携わると、やっぱ暗算は早くなりますね。

2325ー1369=960くらい、とか概数計算ね。


大数は慣れません。10万×1万とか いくつだっけ?って思います

パートナーが会計事務所に勤務してるのですが暗算はたしかに早いですね

高度な数学の知識とは違う気がしますが、大数の計算はぱっとはできないですね自分も

(編集済み)

数学科からCSに移行してそのままソフトウェアエンジニアですが、ガチの数学は日常では使わないですね.... ただバグ取りやテストを書くときの考え方は証明を組み立てるのに近いと思いますし、データを大量に扱うには統計は便利、3Dやるなら行列は大事、関数言語と圏論は相性がいい等、親和性は高いがマストではない感じですね。


普段は様々なライブラリに隠されているが、一皮剥けばサラッとガチ目の数学に出会うと思ってます。

トピック投稿主様へ


ご投稿ありがとうございます!


本トピックを、WorkCircle公式SNS、アンバサダーXアカウントにて紹介させていただいてもよろしいでしょうか?


社名や具体的な内容が含まれる場合、一部言い換えや塗りつぶしをし、匿名性の維持を徹底させていただきますので、ご安心ください。


大変お手数ですが、使用を許可していただける場合は、こちらのメッセージにご返信頂けますと幸いです。


どうぞよろしくお願いいたします。

大丈夫です!

計算量(オーダー)の考え方が少し役立ったくらいですかね🤔


ちょっと競プロ的な側面が強いですが、特定の処理が遅いので計算量を見直して改善したりしました。


具体例では、昔この記事を見て、ほほーとなったのを覚えています。

https://mixi-developers.mixi.co.jp/%E5%8B%95%E7%9A%84%E8%A8%88%E7%94%BB%E6%B3%95%E3%81%AB%E3%82%88%E3%82%8Bdvd%E3%81%AE%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E5%88%86%E5%89%B2%E3%81%AE%E6%94%B9%E5%96%84-438875f65528


とはいえ,あまり使う機会は多くないというのが正直なところです。

数学そのものというよりは、物事に対する抽象化や具体化を不自由なく行うための一つのアプローチに数学的考え方があったり、プログラミングがあるっていう話だと理解してます。


その意味では例えば哲学や文学でも一般化をしたり具体化をしたりすることはあるわけで、必ずしも数学が役に立つ、みたいな話というよりは、普段生きてる中で物事を見る考え方とエンジニアリングの適用方法になんらかの相性があるんじゃないですかね?

コミュニティ
企業一覧
求人
給料