俺、サービス売って家買うんだ

Swift, Kotlin, Vue.js, 統計, GCP / このペースで作ってればいつか2-3億で売れるのがポっと出来るんじゃなかろうか

文系新卒プログラマの君がスーツの代わりに買うべき20冊

f:id:ie-kau:20160314142800j:plain


こんにちは@hazumuです。

このブログでプログラミング関係の記事を書いたり、アプリを作ったりしているのですが実は文学部を卒業してたりします。

ちなみに今は社会人6年目の終わりで、これまではJavaScriptでインタラクティブな社内ツールを作ったり、ソシャゲのUIを作ったり、ゲーム作ったりしてきて、現在は会社でSwiftを使いiOSアプリを書いたり、Ruby(Rails)とJavaScriptを書きつつなれないインフラ構築をしながらWebサービスの開発を行ったりしています。

日本では、大学で学んだことと就職した先の仕事が結びつかないことがよくあるので、この春から晴れてプログラマになる文系の学生さんって結構多いのではないでしょうか?

僕は学生の頃にアルバイト先のベンチャー企業で、わからないなりにHTML、CSS、PHPを書かせてもらっていました。しかし、当時はプログラミングや情報工学の知識はスッカスカでよくわからないが何故か動いている、もしくはよくわからないから動かない状態でした。
そのため社会人になってから、どうにか知識を入れようと焦って色々な書籍を買い読み漁ってきました。

今回はその中で「これは読んでよかった」と思える本をブログにまとめてみました。
ずっと文系だったけどこの春からプログラマになる方々の参考になれば幸いです!

もくじ

  1. 何はともあれコンピュータの基礎から
  2. プログラミングに入門してみよう
  3. 面白くなってきたら
  4. 得意な一言語を磨こう
  5. データベースについて知ろう
  6. ネットワークについて知ろう
  7. 資格試験にチャレンジ
  8. 数学!数学!数学!
  9. ユーザーインターフェースの世界へ
  10. コードが書けるようになったら
  11. まとめ

何はともあれコンピュータの基礎から

コンピュータはなぜ動くのか?知っておきたいハードウエア&ソフトウエアの基礎知識?

コンピュータはなぜ動くのか?知っておきたいハードウエア&ソフトウエアの基礎知識?

今更だけど辺に諸言語の本から入らずにこの本から入ったらよかったと思います。
まずはコンピューターの歴史と仕組みと用語を知ってスタート地点に立ちたかった。

あなたはコンピュータを理解していますか? 10年後、20年後まで必ず役立つ根っこの部分がきっちりわかる! (サイエンス・アイ新書)

あなたはコンピュータを理解していますか? 10年後、20年後まで必ず役立つ根っこの部分がきっちりわかる! (サイエンス・アイ新書)

上の本より分厚さはありませんが「情報ってなんぞ?」ってところから学ぶことができる。古典だけど、だからこそ安くなってるので一読した方がいい。

プログラミングに入門してみよう

[改訂新版] これからはじめるプログラミング基礎の基礎

[改訂新版] これからはじめるプログラミング基礎の基礎

基礎力を付けたいとコンピューターサイエンスを勉強している友達に相談した時に真っ先に教えてくれた本。平易な用語で書かれており、知識ゼロの状態からでも引っかかることなく学べます。
後半ではプログラミングに必要な数学にも触れられており、初学には持って来いでした。

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

なぜシリーズのプログラミング編。コンピューターの話よりもう少しメモリの扱われ方などが具体的に書かれています。

ゲームプログラマになる前に覚えておきたい技術

ゲームプログラマになる前に覚えておきたい技術

前職の先輩におすすめされて半分だけ読みました(後半が3Dの話だったのでまだいいかと思い未読)。 2Dゲームの作り方の基本が学べます。

cocos2d-xではじめるスマートフォンゲーム開発 [cocos2d-x Ver.3対応] for iOS/Android

cocos2d-xではじめるスマートフォンゲーム開発 [cocos2d-x Ver.3対応] for iOS/Android

PHPやRubyなどのLL+Webフレームワークから始めると不明な部分が多いまま成果物が出来上がりがちです。
前述の本と合わせて簡単なゲームを作ってみるとアルゴリズムやオブジェクト指向のいい勉強になります。あと、作るのが面白いですしね。

面白くなってきたら

すこしプログラミングが板についてきて面白くなってきたら。

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)

  • 作者: アラン・シャロウェイ,ジェームズ・R・トロット,村上雅章
  • 出版社/メーカー: 丸善出版
  • 発売日: 2014/03/11
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (4件) を見る
数年間コーディングをした後に「デザインパターン」という言葉を知り何種類か学んだ上で、いざ設計してみようと思うときや、大規模なリファクタリングで死にそうになった時に読み返すと一気に視野が広がることがあります。

クラスの継承よりも[集約]

プログラミングの基礎 (Computer Science Library)

プログラミングの基礎 (Computer Science Library)

こんな書き方できるんだって思わせてくれるOCamlの本。読んだ後にコーディングスタイルが変わって同僚にいい意味か悪い意味かは言わないけど変化を察されること間違いなし。

得意な一言語を磨こう

一言語得意な言語があると、リファレンスを読まずとも業務効率化のための簡単ツールが作れたりしてお得です。

JavaScript 第6版

JavaScript 第6版

新卒1年目の春からJavaScriptを書くことがほぼ決まっていたので、大学最後の春休みに勉強しておこうと思い買った本。
オライリー本はある程度プログラミングの前提知識がいるので、前述の本を数冊読んでおくと理解が深まります。

僕の場合だとJavaScriptだっただけで、人によっては違う一言語を言語仕様レベルから深掘りしていくのが良い気がします。

データベースについて知ろう

職域上、業務でデータベースを触ることはほんとどないけどプライベートで開発する際や会社以外で開発を手伝う際に読んでてよかったとなってる本。

改訂新版 反復学習ソフト付き SQL書き方ドリル (WEB+DB PRESS plusシリーズ)

改訂新版 反復学習ソフト付き SQL書き方ドリル (WEB+DB PRESS plusシリーズ)

問題と回答のドリル形式でSQLを学べます。
SQLには結構自信があったのですが結合や集計関数でものすごいつまづきました。。

実践ハイパフォーマンスMySQL 第3版

実践ハイパフォーマンスMySQL 第3版

自分たちで運営しているサービスのSQLが重すぎて頭を悩ませていた時に血なまこになって読んだ本。

ネットワーク

ネットワークも業務でそんなに触ることはないけど理論がわかってると面白い。
例えばフロントエンドを書くとしてもTCPより上のレイヤはわかっておくと何かと捗ります。

ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識

ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識

ブラウザからWebページにアクセスしてブラウザに表示されるまでの長旅をOSI参照モデルのレイヤに分けて解説してくれます。
普段気にせず使ってるだけに詳しく知ることができて本当に面白い。

マスタリングTCP/IP 入門編 第5版

マスタリングTCP/IP 入門編 第5版

  • 作者: 竹下隆史,村山公保,荒井透,苅田幸雄
  • 出版社/メーカー: オーム社
  • 発売日: 2012/02/25
  • メディア: 単行本(ソフトカバー)
  • 購入: 4人 クリック: 34回
  • この商品を含むブログ (35件) を見る

より専門的にTCP/IPについて学びたくなったらこの一冊。
Webの開発者は絶対読んでおいて損はないと思います。

資格試験にチャレンジ

朝のカフェとか通勤電車で勉強して基本情報と応用情報は取ったりしました。

平成28年度 イメージ&クレバー方式でよくわかる栢木先生の基本情報技術者教室 (情報処理技術者試験)

平成28年度 イメージ&クレバー方式でよくわかる栢木先生の基本情報技術者教室 (情報処理技術者試験)

平成28年度【春期】【秋期】応用情報技術者 合格教本

平成28年度【春期】【秋期】応用情報技術者 合格教本

資格を持っていることで得をしたことは正直言って全くありませんが、情報処理の資格を勉強をすることで得られることは多くありました。
とりわけ専門的に学んできた人との知識差をほんの少しでも埋められたことは大きかったと思います。

数学!数学!数学!

深淵に踏み込もうとするたびに数学の壁に跳ね返されています。
これからもっと勉強しなければと。。。

マンガでわかる線形代数

マンガでわかる線形代数

ゼロから学ぶ線形代数 (KS自然科学書ピ-ス)

ゼロから学ぶ線形代数 (KS自然科学書ピ-ス)

アフィン変換を触り始めて、行列と対峙する必要がでてきた際に後輩に泣きついて毎週会社帰りにこの本を読みながら教えてもらっていました。
数Ⅲ・Cをやっていないとこの辺でほんと泣く。

ユーザーインターフェースの世界へ

JavaScriptやアプリを書くと切っても切り離せないUIの知識。

誰のためのデザイン? 増補・改訂版 ―認知科学者のデザイン原論

誰のためのデザイン? 増補・改訂版 ―認知科学者のデザイン原論

UIを組んでいるときに、「これって本当に使いやすいんだっけ?」って悩んだ時にこの本に書いてある七つの原則をフレームワーク的に使っていることが多いです。

コードが書けるようになったら

社会人になると、自分の成果を定量的にアピールしなければならないことって多くあります。

プログラマのためのサバイバルマニュアル

プログラマのためのサバイバルマニュアル

大企業に入社が決まった人が2年目、3年目ぐらいで読むのがオススメ。
出世しようと思っていてもいなくとも給料と関わってくるのでTip 18 人事考課を勝ち抜く項だけでも読んでおいたほうが良いです。

まとめ

ここまで眺めてもらったら察しのつく通り、自分はどちらかと言うと「どうやったらプログラミングができますかね?」という質問に対して「作りたいものを作ればいいよ」って答えるタイプではなく「まずは基礎固めしたらいいよ」って答えるタイプです。
(完全に先輩の受け売りですけどね)

「作りたいもの」を作って伸びるタイプの人は一定数いるのですが、その手の人は大抵、自然に成長していくか、そもそも基礎体力がある人です。
なので、「作りたいもの」はないけれどプログラミングを始めた人が「作りたいもの」に出くわしたそのタイミングですぐに開発ができるように基礎を積んで表現力を上げておくことが大切かなって考えています。

また、ネット上で良く文系理系論争を見ますが、文系に進んだ人って語学・歴史・思想が好きだったりする人じゃないですか。少なくとも僕はその類です。そう考えると、プログラマって(プログラミング)言語に触れて、長い(コンピュータや言語の)歴史を辿って、洗練された(設計)思想に触れてと文系的な知的好奇心をすべて満たしてくれる仕事だったりします。

最後に、一冊だけプログラミング関係じゃない本を紹介しておきます。

ジョゼフ・フーシェ―ある政治的人間の肖像 (岩波文庫 赤 437-4)

ジョゼフ・フーシェ―ある政治的人間の肖像 (岩波文庫 赤 437-4)

これは大学卒業前に先生に紹介された本です。

このジョセフ・フーシェという人は、フランス革命 - 帝政 - 王政復古という激動の時代のなかで常に政治の中枢にいながら、時勢を読みつつ、時には自分の思想や信念まで変えて上手く切り抜けてきた政治家です。しかも、情熱と時代をかき回すという趣味だけをモチベーションに。
話を今に戻すとフランス革命ほどではありませんが、この業界の趨勢も相当のものです。そんな中で物事があまりうまく行かず少し疲れた時にこの本を読みかえして、風を読みつつ楽しく渡っていこうと思い返したりしています。

この記事を読んでくれた、新卒文系プログラマの人といつか何処かで一緒に働けるといいですね(๑˃̵ᴗ˂̵)وオラッオラッ

関連リンク

www.ie-kau.net

www.ie-kau.net