54838


現在スタック、キュー、ツリー、ソートなどを始めとしたデータ構造とアルゴリズムの勉強をしています。これはエンジニアの基礎的なスキルだから(と世間様が言ってる)という理由が私のモチベーションです。

ですがここで質問です。

### 質問

**これらが重要と認識されてる方は、これまでご自身の開発でどのようなシーンで使ってきたか教えてもらいたいです。もしできれば、実際の現場レベルでの活用事例を紹介したWebサイトの紹介もお願いしたいです**

というのも、RailsやDjangoやZend
FrameworkなどによるWebアプリケーションやiOSアプリ、機械学習などの領域でこれらを使ったことがあるというエンジニアが周りにいないです。私も使った記憶がありません。でもなんで世間様はこんなにもデータ構造とアルゴリズムを重視されてるのでしょうか。特にアメリカ西海岸のIT企業などで。

コーディング面接で必要であったり、Googleのような超巨大なサービスではフルに活用しないとパフォーマンス、サーバーのコストなどに雲泥の差が出てくるんだろうなとは思っています。

ですが、世の中の殆どのSEのうち、このような巨大なサービスでパフォーマンスをチューニングしてる人は一握りだけでしょう。

彼ら以外でもデータ構造やアルゴリズムをうまく活用している人たちはいるかもしれませんが、どのように用いてるのか全く検討もつきません。「XXXのような仕様のアプリケーションでフレームワークにはXXXを用いており、具体的にこういう処理で必要になる」くらいの事例をものすごく知りたいです。

例えばソートは組み込み関数で行えるので、どのソートアルゴリズムを使うのかなんて考えないです。ツリー構造でのトラバーサルなどそもそもデータをツリー構造にする時点で全然イメージがわかないうえ、post
order トラバーサルとかlevel order
トラバーサルやAVL木なんて実務でいつ使うんでしょうか。RDBのインデックスで使ってるとかそういうのは知ってますが、そんな低レイヤーをいじるのは一握りの人だけですよね。

長々と書きましたが、データ構造やアルゴリズムが必要とされるのはかなり一握りの人たちだけでほとんどのSEには必要のないこと、知らなくても業務はこなせるのになんでこんなにデータ構造やアルゴリズムがもてはやされてるのでしょうか、ということが気になっています。

### 追記

実際にデータ構造やアルゴリズムの勉強をしていると、そんなのなんの役に立つの？などと聞かれることが多々あります。上長に説明しても、そんなのGAFAに入るために必要なだけでしょとか失笑されます。


CC BY-SA 4.0
2019-05-09T00:02:56.110
54837
2019-05-09T04:46:45.607
2019-05-09T04:46:45.607
32428
32428
question
アルゴリズム データ構造
データ構造とアルゴリズムは実務ではどんなシーンで役立つのか？


巨大なシステムでは重要≒普通のシステムでは知らなくてよい、とお考えのようですがとんでもない話です。資源の少ないマイコンでは RAM も貴重 ROM
も貴重、電池も貴重で、最適なアルゴリズムやデータ構造を使わないと１つ１つの処理に余計な時間がかかります。電池機器（まあ端的にはスマホっすけど）では無駄な処理は一切許されません。ほぼ同じような処理をして
A 社のスマホは電池が１０時間保つけど B 社のスマホは２０時間保つ、とかなればお客様は B 社に流れてしまいます。この辺の事情はPCでも同じことですよ。

データ構造、アルゴリズムの

  * 詳しい実装までは知らなくてもよい（たいていは既にライブラリ化されているので、ありがたく使わせていただくだけで良い）のですが

  * 本質的に何がどう違ってどういうメリット・デメリットがあるか、は知っておかないと選択の余地がありません

他にも例えばカルドセプトというゲームでサイコロの出目がバグっている事件なんてのがありましたが、これも「疑似乱数」というアルゴリズムを正しく理解せずに使ってしまったがゆえに発生したものと推定されています。こんなバグを出してしまったメーカーの技術力は大いに疑われる、つまり市場の信頼を失ってしまいます。

知っていればもてはやされる、レベルの話ではなくて  
知らないと失笑される、と考えてください。


CC BY-SA 4.0
2019-05-09T00:45:16.240
54838
2019-05-09T00:45:16.240
8589
54837
answer