初心者でもわかる「アルゴリズムとデータ構造」【概要を理解】

2018年12月20日

エンジニアの虎岡です。みなさんは「アルゴリズムとデータ構造」について知っていますか?

プログラミングの勉強を始めた方、大学でコンピュータについて学んだことがある人は一度は聞いたことがある言葉だと思います。

「アルゴリズムとデータ構造」はプログラミングをする上で非常に重要な概念です。全てのソフトウェアは何らかの「アルゴリズムとデータ構造」を用いています

今日は「アルゴリズムとデータ構造」について専門的な知識を用いず説明します。

アルゴリズムはレシピ

料理に例えるとアルゴリズムはレシピです。料理の作り方です。カレーのレシピ、オムライスのレシピ、ハンバーグのレシピのように何かのソフトウェアを作るにはアルゴリズムが存在します。

既存のアルゴリズムを使う場合が多い

実はアルゴリズムを作る仕事をしているエンジニアは少ないです。多くのエンジニアは既存のアルゴリズムを使います。

オムライスを作るときを考えてみてください。レシピを一から作りませんよね?既存のレシピを使う、または既存のレシピを少しアレンジするだけでしょう。

クックパッドでオムライスのレシピを調べるとたくさん出てきます。同様にGoogleで作りたいソフトウェアについて調べるとアルゴリズムがたくさん出てきます。

「オムライスはどうやって作るのだろう?」と何も見ずにオリジナルで作る人は少ないです。エンジニアもGoogleで検索して既存のアルゴリズムを利用します。

アルゴリズムは研究者やスーパーエンジニアのような天才たちが作っています。多くのエンジニアは彼らの成果の恩恵を受けて仕事をしています。

データ構造は冷蔵庫の整頓の仕方

データ構造も料理に例えます。データ構造は冷蔵庫の整頓の仕方だと思ってください。ここではデータは食材となります。

冷蔵庫の中身がぐちゃぐちゃだと欲しいものがどこにあるかすぐにわからないですよね?反対に整理整頓された冷蔵庫は探しやすく素早く欲しいものを取り出せることができます。

ポイントは優れたデータ構造では欲しいものが速く見つかるということです。データ構造によって速度が数万倍違うことはザラです。

優れたデータ構造を作ることは大変ですが。。。アルゴリズムと同様すでにその方法はネットで共有されています。なので一から自分で考えることはほとんどないです。ありがたいですね。

アルゴリズムとデータ構造を勉強する必要はあるか

「アルゴリズムとデータ構造」を重要な概念として説明しました。

ではエンジニアとして稼ぐ上で

「アルゴリズムとデータ構造」を勉強する必要はあるのでしょうか?

回答は

「中級者になってある程度稼げるようになったら勉強すればいい」

です。

確かに重要な概念ですが「アルゴリズムとデータ構造」について詳しく知らなくても稼ぐことはできます

初心者が「アルゴリズムとデータ構造」について勉強すると慣れずに挫折する可能性があるのでおすすめしません。

ある程度プログラミングに慣れてきてシステムを作れるようになった後で勉強すれば良いです。そのタイミングで勉強するとなぜ重要なのかが理解しやすいです。特にサーバサイドプログラミングをした経験があれば一層力がつきます。