paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

初心者でもOK!レベル別・アルゴリズムをすぐに学べる書籍とサイト12選

f:id:paiza:20170124114610j:plain
Photo by Tim Samoff
秋山です。

皆さんはアルゴリズムについてどれくらい知っていますか?というか勉強したことありますか?

私はもともと情報系だったので学校でも習いましたが、paizaのプログラミングスキルチェック問題を作るときなどはいまだにいろいろ調べたりしています。

アルゴリズムについて勉強したことがない人は、気になってはいるものの、プログラミング言語の書き方やフレームワークの使い方などを学ぶことに手一杯でつい後回しになっている…という方も多いと思います。

ただ、アルゴリズムを知らないままプログラミングを続けていると、少し複雑な処理を考えなければならなくなったときなどに、力技のやり方しか考えつかなくてすごい人だったらもっとスマートな書き方ができるんだろうな……」と悶々としてしまうことがあるはずです。

今回はそんな方に向けて、アルゴリズムについて調べたり学んだりする際に役立つサイトと書籍をレベルごとに紹介していきます。

プログラミングを始めたばかりの初心者の方から、逆に既にある程度プログラミングはできるので初心者向けじゃ物足りないという方まで、参考にしていただければと思います。

■手軽にアルゴリズムを学べるサイト・アプリ

アルゴリズム図鑑


料金:ダウンロード無料(全項目の表示は+360円)
iOS版はこちら】【Android版はこちら
アルゴリズム図鑑は、様々なアルゴリズムをアニメーションを使った解説を見ながら学べるアプリです。鍵つきのアルゴリズムは課金をしないと見ることができませんが、無料版でも多くのアルゴリズムを学ぶことができるので、気軽に試してみることができます。

VisuAlgo


アルゴリズムをビジュアルで見せてくれるサイトです。アルゴリズムは文章だけで概念を解説されてもなかなか分かりにくいことが多いですが、こちらはビジュアルで動作の様子を見ることができます。「文字で読んで何となく分かったような気になっていただけ」のアルゴリズムについても、ビジュアルの動きで直感的に理解することができます。

SORTING


ソートアルゴリズムに特化した、ビジュアルで見せてくれるサイトです。

SORTINGは、複数のアルゴリズムを同時に動かして見比べられるのがいいですね。「このソート方法とあのソート方法って、どっちがどんなやり方だっけ?どっちが早いんだっけ?」というときも一目瞭然です。

■初心者から中・上級者までアルゴリズムを学べる書籍

◆初心者向け

アルゴリズムの絵本

アルゴリズムの絵本-プログラミングが好きになる9つの扉

アルゴリズムの絵本-プログラミングが好きになる9つの扉

絵本シリーズのアルゴリズム版です。こちらは多少C言語の基礎知識が必要かと思いますが、「アルゴリズムは文章だけで説明されても分かりにくいし、図が多い書籍があればとっつきやすいな……」という方に。

アルゴリズムを、はじめよう

アルゴリズムを、はじめよう

アルゴリズムを、はじめよう

アルゴリズムの入門書としてかなり分かりやすい書籍だと思います。アルゴリズムを学ぶ以前の、プログラミングにおける基礎的な分岐や繰り返しといった処理についても解説がありますので、「そもそもプログラミングの勉強も始めたばかり」という方にも。

◇「アルゴリズム」のキホン

「アルゴリズム」のキホン (イチバンやさしい理工系シリーズ)

「アルゴリズム」のキホン (イチバンやさしい理工系シリーズ)

こちらも多くの図を使って、かなり初心者向けにかみくだいた解説がされているアルゴリズム入門書です。「情報系の勉強をしたことはないんだけど、仕事でエンジニアと会話することが多いので勉強したい……でも難しい書籍だと理解できない……」という場合にもよいかもしれません。フルカラーだしキャラクターもかわいいです。

◇図解でかんたんアルゴリズム

アルゴリズムについての説明がコンパクトにまとまっている新書です。よく使うアルゴリズムのパターンがが多く収録されています。技術書は大きいものが多い中で、珍しい新書サイズです。「分厚いと読む気がしない」「通勤中に勉強したい」「いろいろなアルゴリズムの概要が知りたい」という方に。

◇マッチ箱の脳(AI)―使える人工知能のお話

マッチ箱の脳(AI)―使える人工知能のお話

マッチ箱の脳(AI)―使える人工知能のお話

ちょっと変わり種でAIに特化した書籍を……2000年に出たので最新の話ではないですが、AIの基礎的なアルゴリズムをきちんと例題を出しながら解説してくれているわかりやすい書籍です。遺伝的アルゴリズムニューラルネットワークエキスパートシステムなどについて、初心者でもわかる……はず。

↓Web用に編集・公開されているページがこちら
「マッチ箱の脳」Web Version

◆中級者向け

アルゴリズムの基本

アルゴリズムの基本

アルゴリズムの基本

アルゴリズムの基本は、基本的なソートやグラフに関するアルゴリズムが図と一般用語で解説されています。

どこまでが初心者向けでどこから中級者向けの書籍かというと難しいところですが……多少数学的な知識などが前提な箇所もあるため、プログラミング自体が初心者の人や数学が苦手な人、絵本的な入門書から始めたい人にはちょっと難しいかもしれないので初・中級者向け?ぐらいの立ち位置かなと思います。

逆に入門書じゃ物足りない人や理系出身の人、既にある程度プログラミングをしている人が改めてアルゴリズムの勉強を始めるのであればこのへんの書籍からがいいかと思います。

◇The Art of Computer Programming Volume 1 Fundamental Algorithms Third Edition 日本語版

スタンフォード大の数学者、クヌース先生の著書です。ぶ厚いですが、基本となるアルゴリズムについて考え方も含めて丁寧に説明されていて参考になりますし、実際にコーディングしながら読み進めていくとより理解が深まります。

アルゴリズムイントロダクション 第3版 総合版

アルゴリズムイントロダクション 第3版 総合版 (世界標準MIT教科書)

アルゴリズムイントロダクション 第3版 総合版 (世界標準MIT教科書)

  • 作者: T.コルメン,R.リベスト,C.シュタイン,C.ライザーソン,Thomas H. Cormen,Clifford Stein,Ronald L. Rivest,Charles E. Leiserson,浅野哲夫,岩野和生,梅尾博司,山下雅史,和田幸一
  • 出版社/メーカー: 近代科学社
  • 発売日: 2013/12/17
  • メディア: 大型本
  • この商品を含むブログ (7件) を見る
アルゴリズムイントロダクションアルゴリズムに関する書籍の定番中の定番というか、とにかく基本的なアルゴリズムに関する詳細が網羅されています。

これがあればアルゴリズムのことは大体OKと言えばOKなのですが、プログラミング初心者が最初の一冊として挑戦するには難易度が高いしぶ厚いので、既にある程度プログラミングができる人、上記の「アルゴリズムの基本」が理解できて「もっと詳しく書かれた書籍がほしい!」という人によい書籍かなと思います。

◇計算理論の基礎

計算理論の基礎 [原著第2版] 1.オートマトンと言語

計算理論の基礎 [原著第2版] 1.オートマトンと言語

こちらはプログラミングの書籍ではなく数学寄りの内容になっていますが、わかりやすくて有名な良書です。

そもそもアルゴリズムの根底には計算理論(簡単に言うと計算模型やアルゴリズムを理論的に扱う学問のことです)があり、より深く学ぶならその辺にも触れておく必要があるかと。まずは数学の基礎知識からオートマトンや正規言語などにつハードルてある一巻を読んでみてください。

■まとめ

アルゴリズムの勉強は、一見ハードルが高そうに見えるので、プログラミングを始めたての人でも取っつきやすそうなものから、中・上級者まで対応できる書籍まで紹介してみました。

アルゴリズムを知るとプログラミングについてより深く考えられるようになると思いますので、ぜひ勉強してみてください。

paizaでは、未経験者でも動画を通してアルゴリズムやプログラミングを学べる「paizaラーニング」を公開しております。

本日から2017年1月30日までの期間限定で、アルゴリズム入門2無料で見放題になっています。

無料公開の期間を過ぎると有料に戻ってしまいますので、ぜひこの機会にアルゴリズムを学んでみてください!

paizaラーニングでは、paizaの人気美少女キャラクター霧島京子(cv:上間江望)が、かわいい声で優しく・楽しく・わかりやすくプログラミングを教えてくれます。「霧島京子による1本3分程度のレッスン動画」に加え、「ブラウザ上でコードを書いて実行できるオンライン実行環境」「複数の練習問題」で、初心者でも無理なくプログラミングを習得することができます。


paiza.jp


paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。

↓詳しくはこちら
paiza.jp

そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
paiza.jp
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

ITプログラマ・エンジニア向け転職・就活・学習サービスのpaiza