Kindleでプログラミング入門書フェアをやっていたので、おすすめの技術書を紹介

こんにちは。
機械学習を定期的に書いている、橘です。

あらかじめお断りしますが、私、慶事休暇+GWで、明日から16連休で既に浮かれ気分で文章を書いているため、機械学習での印象とは違うかもしれません。ご了承下さい。

本日、テックブログの編集長から

「Kindleのセールをやっているんだけど、何かおすすめない?というか、ブログ書いてみない?」

といわれ、

40e1cf46cdc134ad52d65671cc53a43f3ef8b90d_full

ということはないですが、さくっとおすすめを書いてみることにしました。

(ちなみに、Pycon2012での小飼弾さんの基調講演より、ネタを拝借しました。定期的にこのネタは使わせていただいているため、この場で御礼を申し上げます。)

戯れ言はさておき、いくつか目にした本を紹介していきます。
とはいえ、私自身はオライリーのようながっちりした本を読むか、ネット上のコードを拾ってコーディングすることが多いため、あまりプログラミング本を手にしていません。

そのため今回は、”読んで雰囲気のわかる”というテーマでご紹介していきたいと思います。

まずKindleセールのラインナップ

Kindleセールは次のとおりです。

【半額】春のプログラミング入門書フェア(4/28まで)

それなりにプログラミングに触れたことのある方向け

Code Complete 第2版 上下巻

Code Complete 第2版 上 完全なプログラミングを目指して
http://www.amazon.co.jp/dp/B00JEYPPOE

Code Complete 第2版 下 完全なプログラミングを目指して
http://www.amazon.co.jp/dp/B00JEYPUHQ

本書は、ある程度プログラミングに触れたことのある方であれば、おすすめできる一冊です。
値段が高めのため、半額のうちに購入することをおすすめします。

本の冒頭にも説明されていますが、どのような本かというと

「学者の方々が考える理想的な開発スタイル」

「技術者の方々が経験している開発スタイル」

のすき間を埋め、解説してくれている本です。

「動くものを作る」というのが、プログラミングや開発で一番わかりやすい目的だと思います。はじめのうちはそれで問題はないのですが、いくつか開発するうちにノウハウができてて、機器の選定やOS・ミドルウェアを考慮しなくなったり、仕様要件を固める作業に時間を割かない状態で開発をすすめるようになってしまう現状があるかと思います。本書でいうところの「コンストラクションの軽視」です。

本書の著者は、そういった現状を踏まえ、さらに開発に関する論文・研究結果のデータを元に、現状の開発スタイルに存在する表面的に、もしくは潜在的にある問題点を明確にし、開発の現場で有効と考えられる開発手法を紹介しています。

良くいえば「開発マニュアルであり、哲学書」です。
悪くいえば「開発をしらないと読めないし、読めたとしても今日から使えるものではない」といったところでしょうか。
(副作用のないものは「毒にも薬にもならない」ものだと思っています。ロキソニンのように。)

深く読む必要がなければ、開発経験の少ないマネージャーの方々も「こんなことを考えて開発しているんだ」という面を知る意味でもいい本です。GW中に一気にざっと読んで、トピックだけでも覚えておくのもおすすめです。

プログラミングの雰囲気を知りたい

C++の絵本(Cの絵本)

Cの絵本
http://www.amazon.co.jp/dp/B00O22XG76

C++の絵本
http://www.amazon.co.jp/dp/B00NHCSFJG

C#の絵本
http://www.amazon.co.jp/dp/B00NV5L802

誤解のないように先に言っておきますが、** 私自身はC言語からプログラミングを始めるべきではない ** というスタンスです。
** 流行ってる言語を調べて触ってみる ** というところから始めるのがいいと思っています。

絵本シリーズはもう定番中の定番だと思います。
書店などでも目にされたことのある方はほぼ100%(※1)という調査結果が出てもおかしくありません。

※1 「技術書棚に行って、Cの絵本に目線を向けた」方を対象としたアンケート調査による

プログラミングは入門本でも分厚い本が多く、手に取るのに躊躇していまう方も多いかと思います。個人的な見解としては、「入門本の大半は入門本でない」と思っています。

ですが、本書は「読むだけで雰囲気がわかる」レベルでの入門本だと思います。
絵で表していることはもちろん、プログラミングの難しい部分をできるだけ排除しつつもプログラムはこういうプロセスで書いていく、ということは抑えられると思います。

C言語は多くのプログラミング言語のルーツとよく言われていますが、C言語自体は決して簡単な言語ではなく(むしろ難しく)、そして”今風の”ものを作ろうとすると相当な労力を必要とします。そういった意味でも、あらゆる言語のルーツであるC言語の雰囲気を本書でつかむことで、他の”今風の”プログラミング言語を触るきっかけになりえます。

C++やC#は、C言語をある程度わかっている前提で書かれているため、初めて読む方はC言語から読むことをおすすめします。

良くいえば「雰囲気の分かる本」です。
悪くいえば「本書だけでは次に繋がるきっかけにしかすぎない」です。
(副作用のないものは(略)

エクセルを使う方ならこれを機にデータベースを

おうちで学べるデータベースのきほん

おうちで学べるデータベースのきほん
http://www.amazon.co.jp/dp/B00TTRZFDC

本書は本屋の立ち読みレベルのため、あまり覚えていません。。。すみません。
ですので、本のおすすめというよりプログラミングの勉強方法のススメです。

今流行りのデータベースはその限りではありませんが、データベースはSQLというプログラミング言語のような言語で、データベースの中にある表にデータを入れたり、消したり、編集したり、検索したりします。イメージとしては、エクセルのデータを操作するのと大差がないと言っていいと思います。

そしてプログラミングというと「アルゴリズム」のようなものを思い浮かべる方も多いかもしれませんが、データベースは
「データを取り出す」「データを消す」「データを編集する」「データを検索する」など、やりたいことを命令していくだけです。ですので、SQL文を書くところは少し慣れが入りますが、ちょっとした操作であればプログラミングよりも楽に入門できるかと思います。

そして、データベースはデータベースだけで何かを作るということは、基本的にしません。他のプログラミング言語と組み合わせることで、例えば「ブログの記事を書く」「データの一覧を表示する」などの複雑な処理を実装することができます。ですので、データベースを抑えておけば、他のプログラミング言語にも触ることのできるきっかけとなると思います。

番外編(昔話を聞こうか)

root(ルート)から/(ルート)へのメッセージ―スーパーユーザーが見たひととコンピュータ

root(ルート)から/(ルート)へのメッセージ―スーパーユーザーが見たひととコンピュータ
http://www.amazon.co.jp/dp/4756107869

kindleでは出ていませんが、UNIXと呼ばれるシステムでサーバーを管理していた頃の、管理者の方の知恵や苦労話の詰まった一冊です。紹介されている技術で今役に立つことは、かなり少ないと思います。ですが、技術が進歩し、苦労しなくてもすむようになった、ということです。山奥にあるデータセンターで障害が起こって、電話で操作を命令して実行してもらう、ということは今はほとんどないはずです。(というか、ないと信じたいです。21世紀を。)

単純に、私の好きな本でした。

最後に

ここまで色々紹介してきました。正直、入門者向けといえるかどうか、自信はありません。

私が考える、プログラミングの現状(というか昔から)は、以下の3点に尽きると考えています。

特に3.に関しては、今回の記事をちゃぶ台返しにしている感が否めません。

ですが、本はいいものです。
私はkindle paperwhiteの他に、オライリー本を常に3冊は携帯している(変態という名の)紳士です。

1. 初めはなんだって難しい

何度も書きますが、「多くのプログラミングの入門本は入門本ではない」というのが私の持論です。プログラミングの習得には時間がかかりますし、作れるようになるまでには時間だけでなく労力も知識も必要です。何かしらを始めるにはなんだって苦労が伴います。ですが、その分だけ報われることもあります。

2. 「難しい部分」にのみフォーカスしている

「プログラミングは難しい」という考え方が定着している現状があると思います。確かにコードは何が書かれているかぱっと見わかりづらいですし、プログラミングをする上での考え方は慣れが必要です。

ですが、そういった「難しい部分」にのみ注意が向きすぎていないでしょうか?

私はGWに沖縄に行く予定です。(昨日支払いをしました。)
沖縄に行くのに、飛行機で行くつもりです。(当然エコノミーです。)

ところで、沖縄に行くのに「九州までヒッチハイクで行く」「鹿児島からイカダで行く」といったルートを考えるでしょうか?もしそれらを先に考えてしまったら、おそらく「沖縄に行く」ということはしないでしょう。

プログラミングも「プログラム」を作るということが最終的な目的です。
逆に言えば、「プログラムを作れるならプログラミングをしなくてもいい」のです。(イカダで行かないのと同じです。)

「見当違い」と思われる方もいるかもしれません。ですが、「難しいことに執着するがあまり、目的を見失う」ということは本当に多くあると思います。少し視点をずらしてプログラミングの「簡単な部分」を探してみることが、入門の糸口だと思います。

3. 知っている人に聞けば解決

本より人のほうが、早いです。「人の情報は不確か」と思う人も多いですが、正直なところ「本」も人が書いたものです。情報が不確かなこともありますし、古い情報のために役に立たないこともしばしばあります。

入門の方は特に、直接でもネットでもいいので、「◯◯がしたいのですが、何から手をつけたらいいか」を聞いてみると良いと思います。個人の主観は入りますが、いい情報が手に入ると思います。

30分で書こうと思いましたが、休み直前で諸々の仕事をこなしつつだったため、2時間ほど書いてしまいました。
ご覧頂き、ありがとうございました。

よいGWを!

あなたにおすすめの記事