アルゴリズムを楽しく学ぼう! 独習に役立つWebサイト・参考書・競技プログラミングを紹介〈13選〉

プログラムの性能を改善して開発スピードを向上させるため、アルゴリズムを気軽に、かつ楽しく学べるWebサイトや書籍など、13種類のさまざまなコンテンツを紹介していきます。

アルゴリズムを楽しく学ぼう! 独習に役立つWebサイト・参考書・競技プログラミングを紹介〈13選〉

アルゴリズム(algorithm)とは何なのでしょうか? 例えば、 Wikipediaにはこうあります。

アルゴリズムとは、数学、コンピューティング、言語学、あるいは関連する分野において、問題を解くための手順を定式化した形で表現したものを言う。

「問題を解くための手順を定式化した」とは、ソフトウェアエンジニアにとって「プログラミング」のことです。 みなさんも日々の開発業務において、問題(要件)を解くための手順を考え、その手順を特定のプログラミング言語で表現していませんか?

アルゴリズムは、一般に「ソート(整列)」や「探索」といった特定の処理について使われることが多い言葉ですが、 広義においてはプログラミングされた成果物そのものと考えられるわけです。

つまり、アルゴリズムを知っていることは、プログラムを知っていることなのです。

プログラムの性能を改善し、開発スピードを向上させるために

プログラムを知っていると、どんなことが起きるのでしょうか?

プログラムを最適な手順で記述できれば、コストや性能が数千倍変わることもあるでしょう。いわゆる「ソート」や「探索」といった狭義のアルゴリズムへの理解が、そういった性能面のイノベーションにつながります。

このようなアルゴリズムは多くのプログラムで使用されており、それぞれのアルゴリズムの性能が、開発するプログラムの性能に大きな影響を与えます。アルゴリズムは計算量というキーワードで定式化されるため、計算量の少ない適切なアルゴリズムを選択すれば、プログラムの性能を大幅に改善できます。

プログラムの性能に詳しくなり、どれぐらいの負荷に耐えられるかといった疑問に答えられれば、追加開発の必要性を説いたり、適切なキャパシティプランニングが行えるようにもなります。

また、コンピュータの強みは、人間にできない大量の情報を処理することであり、データ量が多い場面で活用されることが大半です。

使っているアルゴリズムの性能が、データ量に伴ってどれぐらい劣化するのか? 性能が劣化した場合に、他のアルゴリズムを使って改善できないか? といったことを迅速に判断できれば、開発スピードを向上させることもできます。

この記事では、プログラムの性能を改善して開発スピードを向上させるため、アルゴリズムを気軽に、かつ楽しく学べるWebサイトや書籍など、13種類のさまざまなコンテンツを紹介していきます。

Webコンテンツ:学習サイト、ゲーム、動画

Webで学習できるサイトやコンテンツを5つ紹介します。

Algorithms, Part I (Coursera)

1

Algorithms, Part I | Coursera

機械学習の講座などの評価が高いCoursera。初学者向けだがアルゴリズムの紹介に留まらず、実装時のパターン紹介や計算量の証明などにも踏み込んでいる。講座を受けたユーザ評価が非常に高い人気コンテンツ。

VisuAlgo

2

VisuAlgo - visualising data structures and algorithms through animation

ソートやハッシュテーブル、二分探索木などのアルゴリズムを視覚化しているサイト。ビジュアルとC言語でアルゴリズムの仕組みが理解できる。

paiza アルゴリズム入門コース

3

アルゴリズム入門編(3レッスン) | プログラミング学習ならpaizaラーニング

ブラウザ上で動画を見ながらプログラミングを実行できる入門講座のpaizaラーニング。Javaを書きながらアルゴリズム問題の解き方を学べる。FizzBuzzや、最小の移動コストで荷物の配送路を導く「巡回セールスマン問題」など計3コンテンツが公開中。

アルゴロジック(アルゴリズム体験ゲーム)

4

アルゴリズム体験ゲーム・アルゴロジック|JEITAソフトウェアで未来をつくる

プログラミング経験のない中学生・高校生向けに制作された、アルゴリズム体験ゲーム。ゲーム内のロボットの移動を通じて、順次処理と繰り返し処理を感覚的に理解できるのが特徴。難易度がやや高い、大人向けの問題もある。

AlgoRythmics(フォークダンスでアルゴリズムを説明するムービー集)

データを昇順・もしくは降順に並べるソート(整列)アルゴリズムをフォークダンスで説明している動画。ハンガリーの民族音楽にのせて、数字に扮したダンサーが踊ってソートを再現。その他のシリーズも再生回数はいずれも40万回越えと、学習要素が強いだけでなく、中毒性も高い。

競技プログラミング(オンラインジャッジサービス)

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く