Photo by rosefirerising
こんにちは、谷口です。
皆さんは、アルゴリズムの勉強はどのようにしていますか?
情報系の学部出身の方は授業で勉強したことがあるかもしれませんが、文系の方や、プログラミングの業務経験のない方は、「そういえばちゃんと勉強したことない」という方も多いかと思います。(私もかつてそうでした……)
アルゴリズムとは、「問題を解くための手順を定式化した形で表現したもの」のことです。例えば、複数のデータを並べ替えるソートの方法として、バブルソートやヒープソートといったアルゴリズムがあるということは、アルゴリズムをきちんと勉強したことがなくても、知っている方は多いかと思います。
仕様書の通りにコーディングをしていくだけの業務であれば、アルゴリズムを勉強する必要はないかもしれません。さらに前述のようなソート等に関しては、多くの場合既に関数が用意されており、アルゴリズムを理解していなくても処理を追加することができます。
しかし、ソート一つをとっても、アルゴリズムを理解していなければ、どんな種類のソート方法があり、処理によって最適な方法はどれなのか……ということを判断することはできません。
また、問題が発生した時に、中でどのような動作が実行されているかということが分かっていなければ、対処をするのは難しいでしょう。
「そうは言ってもどう勉強したらいいのか分からない」「ちゃんと勉強したことないけどなんか難しそう」という方のために、今回はプログラミング初心者の方がアルゴリズムを勉強する時に役立ちそうな書籍とサイトをご紹介いたします。
■初心者の方がアルゴリズムを勉強する時に役立ちそうな書籍とサイト
◆1.アルゴリズムを、はじめよう
- 作者: 伊藤静香
- 出版社/メーカー: インプレスジャパン
- 発売日: 2012/05/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
◆2.「アルゴリズム」のキホン
「アルゴリズム」のキホン (イチバンやさしい理工系シリーズ)
- 作者: 杉浦賢
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2011/03/18
- メディア: 単行本
- 購入: 3人 クリック: 32回
- この商品を含むブログ (15件) を見る
◆3.アルゴリズムの絵本
- 作者: (株)アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2003/08/05
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 77回
- この商品を含むブログ (7件) を見る
◆4.基本情報技術者 大滝みや子先生のかんたんアルゴリズム解法
基本情報技術者 大滝みや子先生のかんたんアルゴリズム解法 ~流れ図と擬似言語~ 第3版
- 作者: 大滝みや子
- 出版社/メーカー: リックテレコム
- 発売日: 2015/01/28
- メディア: 単行本
- この商品を含むブログを見る
◆5.図解でかんたんアルゴリズム
図解でかんたんアルゴリズム 情報処理のかなめとなる考え方が手に取るようにわかる! (サイエンス・アイ新書)
- 作者: 杉浦賢
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2012/12/18
- メディア: 新書
- この商品を含むブログを見る
◆6.アルゴリズムパズル ―プログラマのための数学パズル入門
- 作者: Anany Levitin,Maria Levitin,黒川洋,松崎公紀
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/04/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (7件) を見る
◆7.世界でもっとも強力な9のアルゴリズム
- 作者: ジョン・マコーミック,長尾高弘
- 出版社/メーカー: 日経BP社
- 発売日: 2012/07/19
- メディア: 単行本
- 購入: 15人 クリック: 437回
- この商品を含むブログ (21件) を見る
◆8.数学ガール 乱択アルゴリズム (数学ガールシリーズ 4)
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2011/03/02
- メディア: ペーパーバック
- 購入: 19人 クリック: 779回
- この商品を含むブログ (101件) を見る
◆9.VisuAlgo
http://www.comp.nus.edu.sg/~stevenha/visualization/index.html
アルゴリズムをビジュアルで見せてくれるサイトです。アルゴリズムは文章だけで概念を解説されてもなかなか分かりにくいことが多いですが、こちらはビジュアルで動作の様子を見ることができます。「文字で読んで何となく分かったような気がする」アルゴリズムについても、ビジュアルの動きで直感的に理解することができます。
■まとめ
プログラミングの勉強を始めると、言語の勉強が主体となり、アルゴリズムの勉強というのはなかなか後回しになってしまいがちかと思います。また、初心者の方や数学が苦手だった方(私だ……)には敷居が高いと感じてしまうかもしれませんが、上記のようなとっつきやすい書籍やサイトもありますので、一度勉強してみるとプログラミングに関する理解も深まってよいかと思います。
paizaではITエンジニアとしてのスキルレベル測定(9言語に対応)や、プログラミング問題による学習コンテンツ(paiza Learning)を提供(こちらは21言語に対応)しています。テストの結果によりS,A,B,C,D,Eの6段階でランクが分かります。自分のプログラミングスキルを客観的に知りたいという方は是非チャレンジしてみてください。