Photo by Ian Ruotsala
こんにちは、谷口です。
最近は機械学習、AI、ビッグデータといった分野が話題になっているので、ディープラーニング、ニューラルネットワーク、クラスタリングなどなどについて、よく勉強している!という方もいるかと思います。
一方で、「プログラミングを始めたばかり」という方や、「プログラミング経験はあるけどアルゴリズムについてきちんと勉強したことはない」という方にとって、アルゴリズムの勉強って少しハードルが高いですよね。「いつか勉強しようかな~」と気になってはいるものの、プログラミング言語の書き方やフレームワークの使い方などを学ぶ方を優先してしまい、「いつか」が永遠に来ない…という方も多いのではないでしょうか。
ただ、アルゴリズムについてよく知らないと
- 複雑な処理をどう実装すべきかわからない
- どう実装すべきかわからないのでとりあえず力技で作る
- 力技で作っているのでコードを改修するときに面倒なことになる
- できる人に見てもらうと「もっといいやり方があるよ」と言われる
- でも自分ではその「いいやり方」が思いつけない
といったことが起こりがちです。
そこで今回は、アルゴリズムの勉強に役立つサイトと書籍をレベルごとに紹介していきます。
■入門者~初心者向け
◆VisuAlgo
アルゴリズムをビジュアルで見せてくれるサイトです。以前は英語版だけでしたが、現在は一部日本語にも対応しています!
アルゴリズムは文章だけで解説されてもなかなか理解しづらいですが、こちらはこんな感じでコードとアニメーションを見ながら動きを確認できるので大変わかりやすいです。(上の画像はバブルソートです)
◆アルゴリズム図鑑
料金:ダウンロード無料(全項目の表示は+360円)
【iOS版はこちら】【Android版はこちら】
アルゴリズム図鑑は、アニメーションを使った解説を見ながらアルゴリズムを学べるアプリです。
鍵つきのアルゴリズムは課金をしないと見ることができませんが、無料版でも多くのアルゴリズムを学ぶことができるので、初心者でも気軽に試すことができます。
◆アルゴリズムを、はじめよう
- 作者:伊藤 静香
- 発売日: 2012/05/14
- メディア: 単行本(ソフトカバー)
◆「アルゴリズム」のキホン
「アルゴリズム」のキホン (イチバンやさしい理工系シリーズ)
- 作者:杉浦 賢
- 発売日: 2011/03/18
- メディア: 単行本
■中級者向け
◆paizaの【毎週火曜・3週連続】24時間限定出題!テストケース開示問題
paizaでは、12月12日(火)より、3週連続で毎週火曜に24時間限定スキルチェック問題を出題しています。次回は12月19日(火)です!
普段のスキルチェック問題では、解説や解法のヒントなどは一切公開しておりませんが、こちらの24時間限定問題は、挑戦していただいた全ての方に解説とテストケースを配信いたします。「プログラミング問題に挑戦してみたいけど、少し難しい問題になると効率のよい解き方がわからない…」という方に最適です!
24時間以内に問題に解答した人の中から抽選でAmazonギフト券や技術書など週替わりプレゼントも当たりますので、ぜひ挑戦してみてください!
◆paizaラーニング「アルゴリズム入門編」
動画でプログラミングが学べる「paizaラーニング」では、各言語のレッスンはもちろん、「アルゴリズム入門編」のレッスンも公開しています。
paizaラーニング では、動画レッスンを見て、その場でレッスン内容をプログラミングすることで理解を深め、その後に練習問題を解いて応用力をきたえることができます。
◆8月13日はpaizaの日!怪盗813からの挑戦状
「怪盗813からの挑戦状」は、怪盗813から出題される謎(※プログラミング問題)を解いてお宝を手に入れるキャンペーン問題です。プレゼントキャンペーン自体は終了しておりますが、現在も問題に挑戦して結果を見ることはできますので、ぜひ挑戦してみてください!
「問題を見たけどよくわからない…」という方は、上でご紹介したpaizaラーニング「アルゴリズム入門編」で解き方の解説もしておりますのでぜひごらんください。
◆一週間で身につくアルゴリズムとデータ構造
sevendays-study.com
アルゴリズムとデータ構造の学習サイトです。こちらはすでにプログラミングの基礎知識があることを前提とした内容になっているので、プログラミング入門レベルの学習が終わってから始めるのがよいかと思います。
◆アルゴリズムの基本
- 作者:トーマス・H・コルメン
- 発売日: 2016/03/11
- メディア: 単行本
どこまでが初心者向けで、どこからが中級者向けの書籍かというと難しいところですが……。こちらは、多少数学的な知識などを前提とする箇所もあるため、プログラミング自体が初心者の人や数学が苦手な人にはちょっと難しいかもしれません。初・中級者向け?ぐらいの立ち位置かなと思います。
入門書じゃ物足りない人や理系出身の人、既にある程度プログラミング経験がある人なら、この辺の書籍から始めてもよいかと思います。
◆The Art of Computer Programming Volume 1 Fundamental Algorithms Third Edition 日本語版
The Art of Computer Programming Volume 1 Fundamental Algorithms Third Edition 日本語版 (アスキードワンゴ)
- 作者:Donald E. Knuth,青木 孝,筧 一彦,鈴木 健一,長尾 高弘
- 発売日: 2017/01/10
- メディア: Kindle版
■まとめ
アルゴリズムの勉強は、一見ハードルが高そうに思われがちなので、プログラミングを始めたての人でも取っつきやすそうなものから、中・上級者まで対応できる書籍まで紹介してみました。
アルゴリズムを知るとプログラミングについてより深く考えられるようになると思いますので、ぜひ勉強してみてください。
paizaでは、未経験者でも動画を通してアルゴリズムやプログラミングを学べる「paizaラーニング「アルゴリズム入門編」」を公開しております。
また、上でもご紹介した通り、12月19日(火)・12月26日(火)に、挑戦すると解説とテストケースが見られる24時間限定スキルチェック問題の出題を予定しております。火曜日にぜひ挑戦してみてください!
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。