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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録ボタンを押すと、利用規約プライバシーポリシーに同意したことになります。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く