こんにちは。谷口です。
プログラミング初心者のみなさんは、アルゴリズムについて勉強された経験がありますか?
「プログラミングは勉強しているけど、アルゴリズムについてきちんと勉強したことはない」「プログラミング言語の書き方やフレームワークなどの勉強を優先しているから特にやっていない」という方も多いと思います。
ただアルゴリズムを全然知らないと、ちょっと開発が複雑になってきたときに
- どう実装すべきかわからない
- とりあえず力技で作る
- 力技で作ったコードは改修が面倒
- できる人に「もっといいやり方がある」と言われる
- しかし自分ではその「いいやり方」を思いつけない…
…といったことも起こりえます。
そこで今回は、paizaを作っているエンジニアたちに、実際に読んでアルゴリズムの勉強に役立った書籍を聞いてきました。
アルゴリズム初心者の方の参考になればと思います。
長田です。ブログでは健康オタクエンジニアとして何者なのかわからない記事ばっかり書いていますが、一応エンジニアとして、主にpaiza新卒の開発を担当しています。前職はフリーランスのエンジニアでした。
世界でもっとも強力な9のアルゴリズム
- 作者: ジョン・マコーミック,長尾高弘
- 出版社/メーカー: 日経BP
- 発売日: 2012/07/19
- メディア: 単行本
- 購入: 15人 クリック: 437回
- この商品を含むブログ (20件) を見る
小難しい数式などはほとんど出てこなくて、非エンジニアの人でもわかるように書かれているので、アルゴリズムに苦手意識がある人や、まずとっつきやすいところから入門したい人にもおすすめできます。もちろん、技術的な知識を補強したい人にもおすすめ。
青木です。paizaラーニングの企画・開発を担当しています。
[改訂新版]C言語による標準アルゴリズム事典
[改訂新版]C言語による標準アルゴリズム事典 (Software Technology)
- 作者: 奥村晴彦
- 出版社/メーカー: 技術評論社
- 発売日: 2018/04/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
各種アルゴリズムの具体的な実装がわかりやすくまとまっています。最近、新版としてリニューアルされました。
アルゴリズムの紹介と一緒にC言語による実装コードが掲載されているので、「コードに書いたらどうなるんや?」というのがわかりやすいです。(C言語が読めれば…)
The Art of Computer Programming
- 作者: ドナルド・E・クヌース,有澤誠,和田英一,青木孝,筧一彦,鈴木健一,長尾高弘
- 出版社/メーカー: アスキー
- 発売日: 2004/02/18
- メディア: 単行本
- 購入: 2人 クリック: 150回
- この商品を含むブログ (65件) を見る
※日本語版
The Art of Computer Programming Volume 1 Fundamental Algorithms Third Edition 日本語版
- 作者: Donald E.Knuth,有澤 誠,和田 英一,有澤誠,和田英一,青木孝,筧一彦,鈴木健一,長尾高弘
- 出版社/メーカー: KADOKAWA
- 発売日: 2015/06/26
- メディア: 単行本
- この商品を含むブログ (2件) を見る
TeXの開発者としても知られ、「コンピュータアルゴリズムの特徴についての理論」を研究し続けるクヌース先生の集大成と言える著書です。あらゆるアルゴリズムが分野別に徹底解説されているので初心者にはちょっとしんどいかもしれませんが、いろいろなアルゴリズムを学びまくりたい人におすすめ。
全7Volume構成の予定で、現在Volume4のBの途中までが出版されています。
吉岡です。ブラウザ上でWeb開発やプログラミングが実行できるPaizaCloudやpaiza.IOの開発を担当しています。
プログラミングコンテストチャレンジブック[第2版]
プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?
- 作者: 秋葉拓哉,岩田陽一,北川宜稔
- 出版社/メーカー: マイナビ
- 発売日: 2012/01/28
- メディア: 単行本(ソフトカバー)
- 購入: 25人 クリック: 473回
- この商品を含むブログ (36件) を見る
改めて挙げるまでもないかもしれませんが、競技プログラミングのバイブルですね。競プロの世界でトップレベルの方々が書いた本なので、競プロにおけるレベルアップやコーディング選考を受けるのに役立ちます。
全探索、ダイナミックプログラミング、整数や素数の扱いなどなど、競プロでよく使われるテクニックや主要なアルゴリズムについてがC++でていねいに解説されています。
まとめ
現役エンジニアがおすすめする、アルゴリズムの勉強に役立ちそうな書籍をご紹介しました。
興味を持たれた方は、この読書の秋にぜひ読んでみてください。
なお動画でプログラミングが学べる「paizaラーニング」では、「アルゴリズム入門編」のレッスンも公開しております。FizzBuzz、フィボナッチ数、ハノイの塔、巡回セールスマン問題といったアルゴリズムが初心者でも学べます。
「アルゴリズム入門編」について詳しくはこちら
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。