読者です 読者をやめる 読者になる 読者になる

paiza開発日誌

paiza(https://paiza.jp)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

初心者でも、今度こそアルゴリズムが理解できる書籍とサイト9選

プログラミング初心者 プログラミング学習 アルゴリズム

f:id:paiza:20161206123613j:plain
Photo by Anders Sandberg
f:id:paiza:20140916135428p:plainこんにちは、谷口です。

皆さんは、アルゴリズムの勉強はどのようにしていますか?

情報系の学部出身の方は授業で勉強したことがあるかもしれませんが、文系の方や、プログラミングの業務経験のない方は、「そういえばちゃんと勉強したことない」という方も多いかと思います。(私もかつてそうでした……)

アルゴリズムとは、「問題を解くための手順を定式化した形で表現したもの」のことです。例えば、複数のデータを並べ替えるソートの方法として、バブルソートヒープソートといったアルゴリズムがあるということは、アルゴリズムをきちんと勉強したことがなくても、知っている方は多いかと思います。

仕様書の通りにコーディングをしていくだけの業務であれば、アルゴリズムを勉強する必要はないかもしれません。さらに前述のようなソート等に関しては、多くの場合既に関数が用意されており、アルゴリズムを理解していなくても処理を追加することができます。

しかし、ソート一つをとっても、アルゴリズムを理解していなければ、どんな種類のソート方法があり、処理によって最適な方法はどれなのか……ということを判断することはできません。

また、問題が発生した時に、中でどのような動作が実行されているかということが分かっていなければ、対処をするのは難しいでしょう。

そうは言ってもどう勉強したらいいのか分からない」「ちゃんと勉強したことないけどなんか難しそう」という方のために、今回はプログラミング初心者の方がアルゴリズムを勉強する時に役立ちそうな書籍とサイトをご紹介いたします。

■初心者の方がアルゴリズムを勉強する時に役立ちそうな書籍とサイト

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

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

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

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

◆2.「アルゴリズム」のキホン

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

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

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

◆3.アルゴリズムの絵本

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

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

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

◆4.基本情報技術者 大滝みや子先生のかんたんアルゴリズム解法

基本情報技術者の試験対策向けの書籍で、疑似言語等アルゴリズムを考える必要がある問題の解法についてが詳しく解説されています。プログラミング経験が浅い人だと、こういった問題を解くのはなかなか難しいかと思いますが、初めて受験する人でも理解できるようにかなり丁寧に解説されています。もちろん受験しない人でもアルゴリズムの勉強に役立つと思います。

◆5.図解でかんたんアルゴリズム

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

◆6.アルゴリズムパズル ―プログラマのための数学パズル入門

アルゴリズムパズル ―プログラマのための数学パズル入門

アルゴリズムパズル ―プログラマのための数学パズル入門

こちらは「パズルを解くことで、アルゴリズム的思考を鍛える」というコンセプトで、150問のパズル問題が収録されています。ハノイの塔やnクイーン問題など、採用試験等でもよく出される問題についても収録されています。「パズルを解くのが好きだ」「実際に問題を解いて頭を動かしながら勉強したい」という場合にぴったりです。問題解くの楽しいです。難問もたくさんありますが……。

◆7.世界でもっとも強力な9のアルゴリズム

世界でもっとも強力な9のアルゴリズム

世界でもっとも強力な9のアルゴリズム

こちらは参考書というよりも読み物として、コンピューターの知識がない人でも分かるような形で、アルゴリズムの解説がされています。検索エンジンのインデクシング、ページランク公開鍵暗号法、誤り訂正符号、.パターン認識、データ圧縮、データベース、デジタル署名、決定不可性などの、実サービスでよく目にするアルゴリズムについてがわかりやすく書かれています。

◆8.数学ガール 乱択アルゴリズム (数学ガールシリーズ 4)

数学ガール/乱択アルゴリズム (数学ガールシリーズ 4)

数学ガール/乱択アルゴリズム (数学ガールシリーズ 4)

数学を題材にした小説、数学ガールシリーズの第4弾はアルゴリズムが題材になっています。確率、統計、アルゴリズムについて、魅力的な物語形式で書かれており、数学の知識がそれほどなくても式の立て方や、考え方について分かりやすく書かれています。

◆9.VisuAlgo

http://www.comp.nus.edu.sg/~stevenha/visualization/index.html


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

■まとめ

プログラミングの勉強を始めると、言語の勉強が主体となり、アルゴリズムの勉強というのはなかなか後回しになってしまいがちかと思います。また、初心者の方や数学が苦手だった方(私だ……)には敷居が高いと感じてしまうかもしれませんが、上記のようなとっつきやすい書籍やサイトもありますので、一度勉強してみるとプログラミングに関する理解も深まってよいかと思います。

paiza動画ラーニングについて

f:id:paiza:20160307113923p:plain
paizaには、オンラインでプログラミング学習ができるパイザ・ラーニングという無料学習コンテンツがございます!現在、PHPRubyPythonの入門編を学ぶことができますが、対応言語は今後もどんどん追加される予定となっています。

プログラミング未経験の方でも、「やさしく・楽しく・わかりやすい1本約3分のレッスン動画」 や 「ブラウザ上でコードを書いて実行できるオンライン実行環境」「複数の練習問題」で、未経験者でも無理なく学習を続けることができます。




paizaではITエンジニアとしてのスキルレベル測定(9言語に対応)や、プログラミング問題による学習コンテンツ(paiza Learning)を提供(こちらは21言語に対応)しています。テストの結果によりS,A,B,C,D,Eの6段階でランクが分かります。自分のプログラミングスキルを客観的に知りたいという方は是非チャレンジしてみてください。

http://paiza.jp

プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編