プログラミングを学び始めた最初の１年間で購入した書籍

## はじめに
初投稿です。普段はNW運用をしている若手エンジニアです。
就職するまでIT業界のことはほぼ知らない状態で、入社してからもネットワーク技術の習得で精一杯でした。
そんな私も昨年2017年5月からプログラミングの独学を始め、かれこれ1年が経ちました。
これからプログラミングを始めようとする方の参考にでもなれば、と思い、いくつか紹介してみます。

## HTML,CSS,JavaScript
- [HTML+CSSワークショップ 手を動かして学ぶWebデザイン](https://www.amazon.co.jp/HTML-CSSワークショップ-手を動かして学ぶWebデザイン-麻夕子-fc0/dp/4844366602)
    - HTML,CSSは厳密にはプログラミング言語ではないものの、何はともあれ「まず、ここから」と思い、最初に手にした本。
    - 開発環境はBrackets
    - Webデザイン初心者向けの書籍。架空のパン屋さんのwebサイトの制作を通してHTML,CSSの基礎について学ぶ。後半に少しだけ「画像をスライドさせる」JavaScript(jQuery)が登場。
    - web制作の全体像、ツール、HTMLとCSSの役割→HTML,CSSの書き方、基礎→Webサイト制作の実践・・・という流れ
    - 現場で実際に使う技術を意識して書かれている点と、説明パートと実践パートのバランスが学習を進めやすい。
    -最近、このサンプルコードを自分なりにアレンジするということをようやく実施できた。 

- [JavaScript 1年生 体験してわかる！会話でまなべる！プログラミングのしくみ](https://www.amazon.co.jp/JavaScript-1年生-体験してわかる！会話でまなべる！プログラミングのしくみ-リブロワークス/dp/4798153265/ref=sr_1_1?s=books&ie=UTF8&qid=1526053691&sr=1-1&keywords=javascript1年生)
    - webブラウザ上で動くミュージックプレイヤーを作る。
    - 開発環境はAtom
    - 対話形式、イラストや操作画面が豊富、オールカラーで見やすく、わかりやすく、やる気が持続しやすい
    - 集中すれば土日や３連休で十分終わる内容
    - HTML,CSS,JavaScriptをまとめて学べる
    - かなり子ども向けのデザインであるものの、内容はしっかり学べるものとなっている上、**目に見える動く成果物ができることは初学者として何より嬉しい。非常にオススメ**
 
## Python
- [12歳からはじめる ゼロからの Pythonゲームプログラミング教室](https://www.amazon.co.jp/12歳からはじめる-ゼロからの-Pythonゲームプログラミング教室-大槻有一郎/dp/489977463X/ref=sr_1_1?s=books&ie=UTF8&qid=1526054132&sr=1-1&keywords=12歳からはじめるゼロからのpythonゲームプログラミング教室)
    - RPG風迷路、戦闘シーンなどのミニゲームの製作を通してPythonの基礎を学ぶ
    - 開発環境はVS code
    - Python 3.6
    - **2次元リスト(配列)でマップを作成するのが「こんなの作れるのか！」と一番感激した。自分が書いたコードがゲームのマップとして現れ、そこをキャラクターが移動させることができたのは本当に嬉しかった。**
    - 「12歳から」というタイトルや萌キャラとは裏腹に、説明はしっかり詳しく書いてある。
    - 良い点は、一度に全てを写経するのではなく、一つのミニゲームを作る際にもチャプターごとに、どの機能を実装しているのか解説を見ながら進められる点。
    - GUIプログラムを呼び出す"tk inter"というモジュールを使用。

- [~短期集中講座~ 土日でわかるPythonプログラミング教室 環境づくりからWebアプリが動くまでの2日間コース](https://www.amazon.co.jp/短期集中講座-土日でわかるPythonプログラミング教室-環境づくりからWebアプリが動くまでの2日間コース-フロイデ株式会社-吉谷愛/dp/4797388978/ref=sr_1_1?s=books&ie=UTF8&qid=1526055059&sr=1-1&keywords=土日でわかるpythonプログラミング教室)
    - 開発環境: Docker,MeCab,Django,Atom
    - チャットボット製作を通して、形態素解析とAI(らしきもの)を学ぶ
    -  対話形式で進む
    -  全体の2/5あたりでうまく行かず、調べても調べても解決せず挫折
    -  良かった点は最初の環境構築で、Docker,Django,FizzBuzz問題という存在をここで初めて知り、ほんの少しだが実際に触れるきっかけになったこと。
    -  レイアウトに程よく余白があり、情報系にしては読みやすいデザイン。各節の終わりにそこで学んだことが箇条書きにしてあるのが良い。
    -  対話での説明で、途中わりと無理やり押し進めた感が否めない箇所が数カ所あり、つまづいた。

- [Pythonエンジニア ファーストブック](https://www.amazon.co.jp/Pythonエンジニア-ファーストブック-鈴木-たかのり/dp/4774192228/ref=sr_1_1?s=books&ie=UTF8&qid=1526055780&sr=1-1&keywords=pythonエンジニア+ファーストブック)
    - 仕事でPythonを使う際、全体像を掴むための本
    - 一応、Pythonの基本文法の解説パートもある。Pythonに初めて触るプログラミング経験者向きな説明のよう。
    - チーム開発で用いるツールとしてGit,Sphinx,PyCharmを紹介
    - Webスクレイピングでは、Beautiful Soup4とScrapyを紹介。ここで初めてスクレイピングという存在を知った。
    - データ分析ではJupyter Notebookを紹介。後半でNumPyやpandasなど多数軽く触れている
    - Webアプリ開発では、もちろんDjangoを紹介。「レゴ管理アプリケーション」の製作パートがある。
    - 総じて、初学者には難しかったものの、Python周りの用語を多く知ることができたのが良かった。もちろん各事項を理解できたわけではないものの、Python関連の話を聞いたり、記事を読む際になんとなく何の分野の話をしているかがふわっと推測できるようになった。
    - この本は浅く広く読んだだけで、手を動かしたり、熟読まではできていない。最初の１冊としては難しい印象。他の言語を書いた経験がある方向けだと思う。

## Ruby
- [たのしいRuby 第5版](https://www.amazon.co.jp/たのしいRuby-第5版-高橋-征義/dp/4797386290/ref=sr_1_1?s=books&ie=UTF8&qid=1526056528&sr=1-1&keywords=たのしいruby+第5版)
    - 複数の技術ブログで評判がよかったので最近購入。ただ、控えめに言って「本当に楽しくない」
    - ひたすら淡々と文字による説明とコードが続く。辞書的に文法を確認するやり方が良いのかな、と推察する。
    - 「たのしい」というタイトルは「この本が」ではなく「Ruby自体」である、という意見をどこかで聞いた時、なるほどと思った。
    - 個人的には初学者はPaizaやProgateなど動画学習から入った方が良さそうだと感じた。自分も動画学習を終えたら、この名著とやらに再挑戦しようと思う。

## Java
- [情報処理教科書 基本情報技術者試験のJava問題がちゃんと解ける本](https://www.amazon.co.jp/情報処理教科書-基本情報技術者試験のJava問題がちゃんと解ける本-坂下-夕里/dp/4798128112/ref=sr_1_1?s=books&ie=UTF8&qid=1526056904&sr=1-1&keywords=基本情報技術者試験のJava)
    - 今回紹介した中では、個人的に番外編。というのも、実際にコードを書いたり、熟読できたわけではないため。
    - タイトル通り、基本情報技術者試験の受験にあたり購入した本。Javaがどんな言語なのか、今後プログラミング学習をする上で雰囲気だけでもつかんでおきたい、という心持ちで読んだ（ただし、もちろん真剣に）
    - 読みやすいし、しっかりある程度の時間を確保できればこの本で十分Javaの初歩的な知識は身につきそうではある。
    - 所々を部分的に学習した程度だが、これまで触れてきた言語と比べ毛色が違う、堅い印象を受けた。今後もJavaをメインで学習していく予定はなく自分の中で優先度は低いものの、再読はしようと思っている。
    - この紹介だと説得力ないだろうけど、本書はオススメ

## まとめ
自分と同じような初学者の方の参考となり、お役に立てる記事となれば幸いです。
プログラミングの動機や目的、好みなどは経験やバックグラウンドが異なるのでそれぞれだと思います。
ぜひ、実際に手にとってめくってみて、「この本なら頑張っていけそう！」と確信したものを使って、学習を進めてみてください。
初学者への私のイチオシは
- [JavaScript 1年生 体験してわかる！会話でまなべる！プログラミングのしくみ](https://www.amazon.co.jp/JavaScript-1年生-体験してわかる！会話でまなべる！プログラミングのしくみ-リブロワークス/dp/4798153265/ref=sr_1_1?s=books&ie=UTF8&qid=1526053691&sr=1-1&keywords=javascript1年生)
です。
![51OdklJWLnL._SX396_BO1,204,203,200_.jpg](https://qiita-image-store.s3.amazonaws.com/0/256600/4dc72b9e-2b05-71da-844b-218d5907105e.jpeg)

難しい書籍でつまづくより、まずは「書いたものが目に見えて動く嬉しさ」を体感して、次の学習へつなげていくことが大切だと思います。一緒に頑張りましょう。

#おわりに
また、今回は触れませんでしたが、私は書籍の他に
- [Paiza](https://paiza.jp)や[PyQ](https://pyq.jp)などの動画学習サイト
- [Qiita](https://qiita.com/trend)や[paiza開発日誌](https://paiza.hatenablog.com)や[侍エンジニア塾ブログ](https://www.sejuku.net/blog/)や[Fire Engine](http://www.hirotsuru.com/entry/2016/12/31/172517)などの技術ブログ
も併用して、情報収拾したり学習を進めています。
次回はコードも含めた記事も書いてみます。