javaプログラマー向け学習のための本（新人から５年めくらいまで）を考えてみた


#1.ガチ新人向けのコンピュータに関する教養
新入社員で専門課程で情報処理教育を受けていない場合の基礎教育
専門教育を受けていてもレベルによっては、適宜読んだほうがよい

###[プログラムはなぜ動くのか　第２版　知っておきたいプログラムの基礎知識](https://amzn.to/2YCtb3h)

- プログラマにとってCPUとはなにか
- データを2進数でイメージしよう
- コンピュータが小数点数の計算を間違える理由
- 四角いメモリーを丸く使う
- メモリーとディスクの親密な関係
- 自分でデータを圧縮してみよう
- プログラムはどんな環境で動くのか
- ソース・ファイルから実行可能ファイルができるまで
- OSとアプリケーションの関係
- アセンブリ言語からプログラムの本当の姿を知る
- ハードウェアを制御する方法 
- コンピュータに「考え」させるためには
- レッツ・トライC言語!

### [ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識](https://amzn.to/2yJzwe3)

- 第1章 Webブラウザがメッセージを作る―ブラウザ内部を探検
- 第2章 TCP/IPのデータを電気信号にして送る―プロトコル・スタックとLANアダプタを探検
- 第3章 ケーブルの先はLAN機器だった―ハブとスイッチ、ルーターを探検
- 第4章 アクセス回線を通ってインターネットの内部へ―アクセス回線とプロバイダを探検
- 第5章 サーバー側のLANには何がある
- 第6章 Webサーバーに到着し、応答データがWebブラウザに戻る―わずか数秒の「長い旅」の終わり

###[コンピュータはなぜ動くのか～知っておきたいハードウエア＆ソフトウエアの基礎知識](https://amzn.to/2YQYjre)

- コンピュータの3大原則とは
- コンピュータを作ってみよう
- 一度は体験してほしいハンド・アセンブル
- 川の流れのようにプログラムは流れる
- アルゴリズムと仲良くなる7つのポイント
- データ構造と仲良くなる7つのポイント
- オブジェクト指向プログラミングを語れるようになろう
- 作ればわかるデータベース
- 簡単な実験7つでTCP/IPネットワークを理解する
- データを暗号化してみよう
- そもそもXMLって何だっけ
- SEはコンピュータ・システム構築の現場監督

##[Windowsはなぜ動くのか](https://amzn.to/2ZKgwrG)

- 第1章 Windowsが使われるワケ
- 第2章 オペレーティング・システムとは
- 第3章 Windowsとは
- 第4章 マルチタスクのふしぎ
- 第5章 マルチウィンドウのふしぎ
- 第6章 ハードウェア・サポートのふしぎ
- 第7章 プログラム連携のふしぎ
- 第8章 ネットワークのふしぎ

##[UNIXの絵本](https://amzn.to/2ZKNoR9)

-UNIXをはじめる前に
- 第1章 UNIXを使ってみよう
- 第2章 UNIXの基本操作
- 第3章 エディタを使いこなす
- 第4章 一歩踏み込んだUNIXの使い方
- 第5章 システムとユーザーを管理する
- 第6章 GUIを使ってみよう
- 第7章 日本語環境
- 第8章 高度な操作

##[はじめてUNIXで仕事をする人が読む本](https://amzn.to/2yMPDr9)

- 第1章 ログインログアウト
- 第2章 UNIXの基本操作
- 第3章 テキストエディタ
- 第4章 作業の自動化(シェルスクリプト)
- 第5章 オンラインマニュアル
- 第6章 セキュリティ
- 第7章 UNIXシステム管理
- 第8章 UNIXプログラミング環境
- 第9章 バージョン管理システム
- 第10章 ソースコードからのドキュメントの作成
- 第11章 ソフトウェアライセンス
- 第12章 UNIXとネットワーク技術
- 第13章 OSI参照モデル
- 第14章 データリンク層
- 第15章 IPと関連プロトコル
- 第16章 TCPとUDP
- 第17章 アプリケーションプロトコル
- 第18章 IP関連の技術
- 第19章 ネットワークセキュリティ


#2.アプリケーションをjavaで開発する基礎


##[スッキリわかるJava入門 第2版](https://amzn.to/2ZFyzzb)

- 第1章 プログラムの書き方
- 第2章 式と演算子
- 第3章 条件分岐と繰り返し
- 第4章 配列
- 第5章 メソッド
- 第6章 複数クラスを用いた開発
- 第7章 オブジェクト指向をはじめよう
- 第8章 インスタンスとクラス
- 第9章 さまざまなクラス機構
- 第10章 カプセル化
- 第11章 継承
- 第12章 高度な継承
- 第13章 多態性
- 第14章 Javaを支える標準クラス
- 第15章 例外
- 第16章 まだまだ広がるJavaの世界

##[スッキリわかる Java入門 実践編 第2版](https://amzn.to/2GWoMgJ)

- 第1章 文字列の操作
- 第2章 日付と時間の取り扱い
- 第3章 コレクション
- 第4章 インスタンスの基本操作
- 第5章 さまざまな種類のクラス
- 第6章 ラムダ式と関数オブジェクト
- 第7章 JVM制御とリフレクション
- 第8章 非標準ライブラリの活用
- 第9章 ファイルの操作
- 第10章 さまざまなファイル形式
- 第11章 ネットワーク通信
- 第12章 データベースアクセス
- 第13章 基本的な開発ツール
- 第14章 単体テストとアサーション
- 第15章 メトリクスとリファクタリング
- 第16章 コードとタスクの共有
- 第17章 アジャイルな開発
- 第18章 設計の原則とデザインパターン
- 第19章 スレッドによる並列処理

##[スッキリわかる サーブレット&JSP入門](https://amzn.to/2YNkEdh)

- 第1章 HTMLとWebページ
- 第2章 Webのしくみ
- 第3章 サーブレットの基礎
- 第4章 JSPの基本
- 第5章 フォーム
- 第6章 MVCモデルと処理の遷移
- 第7章 リクエストスコープ
- 第8章 セッションスコープ
- 第9章 アプリケーションスコープ
- 第10章 アプリケーション作成
- 第11章 サーブレットクラスの実行のしくみとフィルタ
- 第12章 アクションタグとEL式
- 第13章 JDBCプログラムとDAOパターン
- 第14章 Webアプリケーションの設計

##[オブジェクト指向でなぜつくるのか 第2版](https://amzn.to/2MOQgbX)

- 第1章　オブジェクト指向はソフトウエア開発を楽にする技術
- 第2章　オブジェクト指向と現実世界は似て非なるもの
- 第3章　OOPを理解する近道はプログラミング言語の歴史にあり
- 第4章　OOPは無駄を省いて整理整頓するプログラミング技術
- 第5章　メモリの仕組みの理解はプログラマのたしなみ
- 第6章　OOPがもたらしたソフトウエアとアイデアの再利用
- 第7章　汎用の整理術に化けたオブジェクト指向
- 第8章　UMLは形のないソフトウエアを見る道具
- 第9章　現実世界とソフトウエアのギャップを埋めるモデリング
- 第10章　擬人化して役割分担させるオブジェクト指向設計
- 第11章　オブジェクト指向から生まれたアジャイル開発とTDD
- 第12章　オブジェクト指向を使いこなそう
- 第13章　関数型言語でなぜつくるのか

##[Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発](https://amzn.to/33kc6tG)

- 第1章 Spring Frameworkとは
- 第2章 Spring Core(DI×AOP)
- 第3章 データアクセス(Tx、JDBC)
- 第4章 Spring MVC
- 第5章 Webアプリケーションの開発
- 第6章 RESTful Webサービスの開発
- 第7章 Spring MVC の応用
- 第8章 Spring Test
- 第9章 Spring Security
- 第10章 Spring Data JPA
- 第11章 Spring + MyBatis
- 第12章 Spring+Thymeleaf
- 第13章 Spring Boot
- 第14章 チュートリアル

##[プログラムはこうして作られるプログラマの頭の中をのぞいてみよう](https://amzn.to/33nu4LO)

- プログラム作りを始める前に
- メモリに触れてみる―四角を描く
- くり返し―プログラムを短くする
- プログラムの変形―四角をたくさん描く
- プログラムを分ける―四角を楽にたくさん描く
- 動きのあるプログラム―四角を落とす
- メモリに名前をつける―もっと日本語で
- 操作できるプログラム―四角を動かす
- 「計算」の本当の意味―ゆっくり落とす
- メモリをまとめて使う―四角を積み上げる〔ほか〕

##[プログラマの考え方がおもしろいほど身につく本 問題解決能力を鍛えよう!](https://amzn.to/2MZBlvR)

- 第1章 問題解決の戦略
- 第2章 パズル
- 第3章 配列による問題解決
- 第4章 ポインタと動的メモリによる問題解決
- 第5章 クラスによる問題解決
- 第6章 再帰による問題解決
- 第7章 コードの再利用による問題解決
- 第8章 プログラマの考え方

##[JUnit実践入門 ~体系的に学ぶユニットテストの技法](https://amzn.to/2MZBoYz)

- 第1章 JUnitチュートリアル
- 第2章 ユニットテスト
- 第3章 テスティングフレームワーク
- 第4章 アサーション
- 第5章 テストランナー
- 第6章 テストのコンテキスト
- 第7章 テストフィクスチャ
- 第8章 パラメータ化テスト
- 第9章 ルール
- 第10章 カテゴリ化テスト
- 第11章 テストダブル
- 第12章 データベースのテスト
- 第13章 Androidのテスト
- 第14章 コードカバレッジ
- 第15章 継続的テスト
- 第16章 テスト駆動開発
- 第17章 振舞駆動開発
- 第18章 ベーシックなテスト
- 第19章 アサーションとフィクスチャ
- 第20章 テストダブルの活用

##[Selenium実践入門 ―― 自動化による継続的なブラウザテスト](https://amzn.to/2MQD1aG)

- Part1:Seleniumの基礎知識
- 第1章:テスト自動化とそのメリット
- 第2章:Seleniumの概要
- Part2:WebDriver
- 第3章:WebDriver入門
- 第4章:WebDriverコマンド徹底解説
- 第5章:WebDriverコマンドの実践的活用
- 第6章:スクリプトの効率的なメンテナンス
- Part3:便利なライブラリ
- 第7章:Geb
- 第8章:FluentLenium
- 第9章:Capybara
- Part4:Seleniumのさまざまな活用方法
- 第10章:Selenium IDE
- 第11章:スマートフォンのテストとAppium
- 第12章:CI環境での利用
- Part5:実践的な運用
- 第13章:運用
- 第14章:サイボウズの事例
- 第15章:DeNAの事例


#3.Webの基礎

##[「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか](https://amzn.to/2ZL4GNT)

- はじめに
- LESSON 0 はじめに
- LESSON 1 「Webアプリケーション」とは何か
- LESSON 2 Webはどのように発展したか
- LESSON 3 HTTPを知る
- LESSON 4 CGIからWebアプリケーションへ
- LESSON 5 Webアプリケーションの構成要素
- LESSON 6 Webアプリケーションを効率よく開発するための仕組み
- LESSON 7 セキュリティを確保するための仕組み
- LESSON 8 おわりに
- LESSON 9 付録

##[Web開発の基礎徹底攻略](https://amzn.to/2GYGikx)

- 特集1
- [新人時代に押さえておきたい]Web技術まるごと整理
- 第1章:Webの世界へようこそ!
- 第2章:開発言語まるごと整理
- 第3章:サーバまるごと整理
- 第4章:データベースまるごと整理
- 第5章:クラウドまるごと整理
- 特集2
- コーディングの基礎知識
- 第1章:きれいなコードの重要性
- 第2章:適切な名前をつけ、不要なコメントはつけない
- 第3章:テスト駆動開発を実践する
- 第4章:常にリファクタリングを行う
- 第5章:1つのメソッドが行うことは1つにする
- 第6章:クラスの責務は1つにする
- 第7章:例外処理も1つの処理と考える
- 第8章:メタプログラミングを理解する
- 特集3
- [身につけたい良い設計の基礎知識]はじめての設計
- 第1章:設計とは何か
- 第2章:設計の原則依存性、命名、抽象化
- 第3章:実践的設計はじめの一歩
- 第4章:クラス設計の実践
- 第5章:Webアプリケーションの設計
- 第6章:アプリケーションロジックの設計
- 特集4
- データベース&SQL入門
- 第1章:データベースとは何か
- 第2章:リレーショナルデータベースとSQL
- 第3章:データ操作の基礎
- 第4章:ビューとサブクエリ
- 第5章:少し高度なSQL
- 第6章:トランザクションと更新
- 特集5
- クラウド時代のインフラ知識
- 第1章:なぜインフラの知識が必要なのか?
- 第2章:「インフラ」の登場人物とは?
- 第3章:ネットワークの基礎、押さえてますか?
- 第4章:サーバが「重い」とは何か?
- 第5章:モニタリングから何を読み取るか?


#4.テスト（とりあえず最低一冊は読むべき）


##[知識ゼロから学ぶソフトウェアテスト 【改訂版】](https://amzn.to/2yN7KNw)

- 第1章 はじめに
- 第2章 ソフトウェアテストの基本―ホワイトボックステスト
- 第3章 エンジニアがもっともよく使う手法―ブラックボックステスト
- 第4章 探索的テスト
- 第5章 機能あらざるもののテスト、最難関のテストに挑む―非機能要求のテスト
- 第6章 ソフトウェアテスト運用の基本―テスト成功の方程式
- 第7章 ソフトウェア品質管理の基本―ソフトウェア品質のメトリックス
- 第8章 テストの自動化という悪魔―なぜ自動化は失敗するのか
- 第9章 それでもテストがうまくいかない人へ

#5.プロトコル系の基礎知識

##[3分間HTTP&メールプロトコル基礎講座](https://amzn.to/2YRQd1v)

- 1章広域情報共有システム~WWW
- 2章HTTPの応用
- 3章メールを送る~SMTP
- 4章メールを取り出す~POPとIMAP
- 5章ネットワークを管理する~SNMP

##[3分間DNS基礎講座](https://amzn.to/2YXRdBn)

- 第1章 TCP/IPによるデータ転送の基本
- 第2章 ドメインネーム
- 第3章 DNSの構造
- 第4章 DNSの動作
- 第5章 アプリケーションの基礎 TELNET
- 第6章 ファイル転送 FTP


#6.日本語と国際化の問題は一度は読んでおくべきもの


##[プログラマのための文字コード技術入門](https://amzn.to/2yJCgYT)

- 第1章 文字とコンピュータ
- 第2章 文字コードの変遷
- 第3章 代表的な符号化文字集合
- 第4章 代表的な文字符号化方式
- 第5章 文字コードの変換と判別
- 第6章 インターネットと文字コード
- 第7章 プログラミング言語と文字コード
- 第8章 はまりやすい落とし穴とその対処


#7.データベース基礎の基礎

##[うちで学べるデータベースのきほん](https://amzn.to/2YWjeNv)

- 第1章 データベースって何だろう - その用途と役割 -
- 第2章 リレーショナルデータベースって何だろう - 最も代表的なデータベース -
- 第3章 データベースにまつわるお金の話 - イニシャルコストとランニングコスト -
- 第4章 データベースとアーキテクチャ構成 - 堅牢かつ高速なシステムを構築するために -
- 第5章 DBMSを操作する際の基本知識 - 操作する前に知っておくこと
- 第6章 SQL文の基本を学ぼう - SELECT文を理解する -
- 第7章 トランザクションと同時実行制御 - 複数のクエリをまとめる -
- 第8章 テーブル設計の基礎 - テーブルの概念と正規形 -
- 第9章 バックアップとリカバリ - 障害に備える仕組み -
- Appendix パフォーマンスを考えよう - 性能を向上させるために -

##[CD付 SQL ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)](https://amzn.to/2Z25hhj)

- 第1章 データベースとSQL
- 第2章 検索の基本
- 第3章 集約と並べ替え
- 第4章 データの更新
- 第5章 複雑な問い合わせ
- 第6章 関数、述語、CASE式
- 第7章 集合演算
- 第8章 SQLによる高度な処理
- 付録A PostgreSQLのインストール
- 付録B PostgreSQLでSQLを実行する方法
- 付録C 練習問題の解答

##[スッキリわかる SQL 入門 ドリル215問付き!](https://amzn.to/2MUmYc9)

- 第1章 はじめてのSQL
- 第2章 基本文法と4大命令
- 第3章 操作する行の絞り込み
- 第4章 検索結果の加工
- 第5章 式と関数
- 第6章 集計とグループ化
- 第7章 副問い合わせ
- 第8章 複数テーブルの結合
- 第9章 トランザクション
- 第10章 テーブルの作成
- 第11章 さまざまな支援機能
- 第12章 テーブルの設計

#8.アルゴリズムの基礎

##[アルゴリズムを、はじめよう](https://amzn.to/2YTrSwa)

- 第1章 アルゴリズムの基本
- 第2章 変数と配列
- 第3章 アルゴリズムに慣れよう
- 第4章 線形探索法(リニアサーチ)
- 第5章 二分探索法(バイナリサーチ)
- 第6章 ハッシュ探索法
- 第7章 単純選択法(選択ソート)
- 第8章 単純交換法(バブルソート)
- 第9章 単純挿入法(挿入ソート)
- 第10章 クイックソート
- 第11章 エラトステネスのふるい(素数を求めるアルゴリズム)
- 第12章 ユークリッドの互除法(最大公約数を求めるアルゴリズム)

#9.Linux基礎

##[新しいLinuxの教科書](https://amzn.to/33n0zK7)

- CHAPTER01　Linuxを使ってみよう
- CHAPTER02　シェルって何だろう？
- CHAPTER03　シェルの便利な機能
- CHAPTER04　ファイルとディレクトリ
- CHAPTER05　ファイル操作の基本
- CHAPTER06　探す、調べる
- CHAPTER07　テキストエディタ
- CHAPTER08　bashの設定
- CHAPTER09　ファイルパーミッションとスーパーユーザ
- CHAPTER10　プロセスとジョブ
- CHAPTER11　標準入出力とパイプライン
- CHAPTER12　テキスト処理
- CHAPTER13　正規表現
- CHAPTER14　高度なテキスト処理
- CHAPTER15　シェルスクリプトを書こう
- CHAPTER16　シェルスクリプトの基礎知識
- CHAPTER17　シェルスクリプトを活用しよう
- CHAPTER18　アーカイブと圧縮
- CHAPTER19　バージョン管理システム
- CHAPTER20　ソフトウェアパッケージ

##[シェルプログラミング実用テクニック](https://amzn.to/2YMOjDm)

- 第1章　準備運動
- 第2章　不定型な文章や設定ファイルの検索と加工 
- 第3章　ファイルの取り扱いとシステムの操作 
- 第4章　ファイルシステムをデータベースにする 
- 第5章　大きなデータを処理する 
- 第6章　画像、表計算ソフト、その他特殊なデータを扱う 
- 第7章　CLI的インターネットとの付き合い方 
- 第8章　計算 


#10.正規表現はとても大事


##[反復学習ソフト付き 正規表現書き方ドリル](https://amzn.to/2YV84J0)

- 第1章　学習の進め方と素振りソフトウェアについて
- 第2章　正規表現の基本 正規表現って何？
- 第3章　基本的なメタキャラクタ
- 第4章　部品を組み合わせて使う
- 第5章　正規表現の便利な機能
- 第6章　より実践的な正規表現

#11.セキュリティ大事、ちゃんと勉強しておかないとえらいことになる


##[体系的に学ぶ 安全なWebアプリケーションの作り方　第2版 脆弱性が生まれる原理と対策の実践](https://amzn.to/2YTxN0j)

- 第1章　Webアプリケーションの脆弱性とは
- 第2章　実習環境のセットアップ
- 第3章　Webセキュリティの基礎 ~HTTP、セッション管理、同一生成元ポリシー～
- 第4章　Webアプリケーションの機能別に見るセキュリティバグ
- 第5章　代表的なセキュリティ機能
- 第6章　文字コードとセキュリティ
- 第7章　携帯電話向けWebアプリケーションの脆弱性対策
- 第8章　Webサイトの安全性を高めるために
- 第9章　安全なWebアプリケーションのための開発マネジメント


#12.よく使うツール、プロダクトの基礎知識

##[nginx実践入門](https://amzn.to/2YW64jA)

- 第1章:nginxの概要とアーキテクチャ
- 第2章:インストールと起動
- 第3章:基本設定
- 第4章:静的なWebサイトの構築
- 第5章:安全かつ高速なHTTPSサーバの構築
- 第6章:Webアプリケーションサーバの構築
- 第7章:大規模コンテンツ配信サーバの構築
- 第8章:Webサーバの運用とメトリクスモニタリング
- 第9章:Luaによるnginxの拡張──Embed Lua into nginx
- 第10章:OpenResty──nginxベースのWebアプリケーションフレームワーク

#13.プログラミング（中級）「動くコード」から「良いコード」へ

##[コーディングを支える技術 ~成り立ちから学ぶプログラミング作法](https://amzn.to/2MQDw4y)

- 言語を深く効率的に学ぶには
- プログラミング言語を俯瞰する
- 文法の誕生
- 処理の流れのコントロール
- 関数
- エラー処理
- 名前とスコープ
- 型
- コンテナと文字列
- 並行処理
- オブジェクトとクラス
- 形象によるコードの再利用

##[リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック](https://amzn.to/2MQNSBI)

- 1章 理解しやすいコード
- 2章 名前に情報を詰め込む
- 3章 誤解されない名前
- 4章 美しさ
- 5章 コメントすべきことを知る
- 6章 コメントは正確で簡潔に
- 7章 制御フローを読みやすくする
- 8章 巨大な式を分割する
- 9章 変数と読みやすさ
- 10章 無関係の下位問題を抽出する
- 11章 一度に1つのことを
- 12章 コードに思いを込める
- 13章 短いコードを書く
- 14章 テストと読みやすさ
- 15章 「分/時間カウンタ」を設計・実装する

##[新装版 リファクタリング―既存のコードを安全に改善する―](https://amzn.to/2MOimnG)

- リファクタリング―最初の例
- リファクタリングの原則
- コードの不吉な臭い
- テストの構築
- リファクタリング・カタログに向けて
- メソッドの構成
- オブジェクト間での特性の移動
- データの再編成
- 条件記述の単純化
- メソッド呼び出しの単純化
- 継承の取り扱い
- 大きなリファクタリング
- リファクタリング、再利用、現実
- リファクタリングツール
- 部品から全体へ
- Javaのバージョンアップに伴うリファクタリングをめぐる環境の変化

##[増補改訂版Java言語で学ぶデザインパターン入門](https://amzn.to/2YSa6cU)

- 第1章　Iterator－－1つ1つ数え上げる
- 第2章　Adapter－－一皮かぶせて再利用
- 第3章　Template Method－－具体的な処理をサブクラスにまかせる
- 第4章　Factory Method－－インスタンス作成をサブクラスにまかせる
- 第5章　Singleton－－たった1つのインスタンス
- 第6章　Prototype－－コピーしてインスタンスを作る
- 第7章　Builder－－複雑なインスタンスを組み立てる
- 第8章　Abstract Factory－－関連する部品を組み合わせて製品を作る
- 第9章　Bridge－－機能の階層と実装の階層を分ける
- 第10章　Strategy－－アルゴリズムをごっそり切り 替える
- 第11章　Composite－－容器の中身の同一視
- 第12章　Decorator－－飾り枠と中身の同一視
- 第13章　Visitor－－構造を渡り歩きながら仕事をする
- 第14章　Chain of　Responsibility－－責任のたらい回し
- 第15章　Facade－－シンプルな窓口
- 第16章　Mediator　相手は相談役一人だけ
- 第17章　Observer－－状態の変化を通知する
- 第18章　Memento－－状態を保存する
- 第19章　State－－状態をクラスとして表現する
- 第20章　Flyweight－－同じものを共用して無駄をなくす
- 第21章　Proxy－－必要になってから作る
- 第22章　Command－－命令をクラスにする
- 第23章　Interpreter－－文法規制をクラスで表現する

##[CODE COMPLETE 第2版 上 完全なプログラミングを目指して](https://amzn.to/2YVr8Tk)

- 第1部 基礎を固める(ソフトウェアコンストラクションへようこそ
- ソフトウェア開発への理解を深めるメタファ ほか)
- 第2部 高品質なコードの作成(コンストラクションにおける設計
- クラスの作成 ほか)
- 第3部 変数(変数の使用
- 変数名の力 ほか)
- 第4部 ステートメント(ストレートなコードの構成
- 条件文の使用 ほか)

##[CODE COMPLETE 第2版 下 完全なプログラミングを目指して](https://amzn.to/2ZHCPOM)

- 第5部 コードの改善(ソフトウェアの品質
- コラボレーティブコンストラクション
- デベロッパーテスト ほか)
- 第6部 システムの考慮事項(プログラムサイズが及ぼす影響
- コンストラクションの管理
- 統合 ほか)
- 第7部 ソフトウェア職人気質とは(レイアウトとスタイル
- 読めばわかるコード
- 個人の性質 ほか)


#14.フロント系基礎知識(今３０代のjavaプログラマーには必要のなかったことだが。。。これからは必要です)

フロント系技術は進歩というか移り変わりが非常に早いので伝統的な良書というものがない
その時代でなるべく新しい技術的な俯瞰的なものを入手していくしかない


##[Webデザインの新しい教科書 改訂新版 基礎から覚える、深く理解できる。〈HTML5、CSS3、レスポンシブWebデザイン〉](https://amzn.to/2ZJz2Az)

- Lesson 1 Webデザインの世界を知る
- Lesson 2 Webサイトを設計する
- Lesson 3 HTMLの役割とできること
- Lesson 4 CSSの役割とできること
- Lesson 5 Webサイトを構成する素材
- Lesson 6 Webサイトを表現する色
- Lesson 7 Webサイトを公開する
- Lesson 8 Webサイトを運用する
- Lesson 9 Webサイトを制作する

##[HTML5&CSS3標準デザイン講座](https://amzn.to/2yPN2N4)

- Chapter01 HTMLで文書を作成する
- Chapter02 CSSで文書を装飾する
- Chapter03 CSSレイアウトの基本
- Chapter04 本格的なHTML5によるマークアップを行うための基礎知識
- Chapter05 本格的なWeb制作のための設計と準備
- Chapter06 実践的なWebサイトのコーディング
- Chapter07 CSS3入門
- Chapter08 マルチデバイス対応の基礎知識
- Chapter09 レスポンシブ・ウェブデザインのコーディング

##[フロントエンドエンジニア養成読本[HTML、CSS、JavaScriptの基本から現場で役立つ技術まで満載!]](https://amzn.to/2ZJZOZl)

- 特集1 フロントエンドエンジニアとしての基礎と準備
- 第1章 フロントエンドエンジニアとは?・・・斉藤祐也
- 第2章 Webブラウザの基礎知識・・・斉藤祐也
- 第3章 UI/UXデザイン入門・・・石本光司
- 第4章 HTML/CSS/JavaScript基礎・・・加藤賢一
- 特集2 フロントエンド開発フィールドガイド
- 第5章 マークアップクイックレシピ・・・水野隼登
- 第6章 CSS実践入門・・・谷 拓樹
- 第7章 JavaScriptの設計と指針・・・泉水翔吾
- 第8章 モバイル・マルチデバイスへの対応・・・原 一成
- 第9章 フロントエンドの開発環境・・・石本光司
- 第10章 JavaScript開発におけるテスト・・・平木 聡
- 第11章 パフォーマンス入門・・・佐藤 歩
- 第12章 Gitでバージョン管理・・・原 一成
- 第13章 現場で使える品質管理・・・平木 聡
- 第14章 セキュリティ対策の基本・・・杉本吉章
- 特集3 フロントエンド開発最前線
- 第15章 Web Components入門・・・谷 拓樹
- 第16章 ECMAScript 6・・・泉水翔吾
- 第17章 WebRTCの実装・・・杉本吉章

##[Web制作者のためのCSS設計の教科書 モダンWeb開発に欠かせない「修正しやすいCSS」の設計手法](https://amzn.to/2MOSE2p)

- 第1章 CSSにおける設計とは
- 第2章 CSSの基本を振り返る
- 第3章 コンポーネント設計のアイデア
- 第4章 コンポーネント設計の実践
- 第5章 CSSプリプロセッサを用いた設計と管理
- 第6章 コンポーネントの運用に必要なツール
- 第7章 Web Componentsの可能性


##[JavaScriptエンジニア養成読本 Webアプリ開発の定番構成Backbone.js＋CoffeeScript＋Gruntを1冊で習得](https://amzn.to/2YRgIs2)

- 特集1 Backbone.jsで学ぶ MVCフレームワーク[実践]入門 〜複雑化するコードを構造化!
- 特集2 [シングルページ時代の大規模開発を支えるAltJS] CoffeeScript入門 〜高品質なアプリケーション開発を実現
- 特集3 [開発現場を支えるタスクランナー] Grunt活用入門 〜開発効率化の必須アイテム


##[SEOを強化する技術 エンジニアが内側から支えるサイト設計・構築術](https://amzn.to/2MOBEte)

- 第1章 SEOと検索エンジン
- 第2章 検索エンジンの技術的な仕組み
- 第3章 SEOサイクルとクローラビリティー
- 第4章 キーワード
- 第5章 アンサー度
- 第6章 HTMLの最適化
- 第7章 アクセスログとインデックス状況の分析
- 第8章 アクセス解析の導入
- 第9章 検索エンジンスパム
- 第10章 検索エンジンの制御
- 第11章 データベースモデリング
- 第12章 サイト移行
- 第13章 モバイルSEO

#15.データベース中級　（とりあえずMySQL関連に限定）

##[現場で使える MySQL](https://amzn.to/2yL9fvM)

- 1 導入編(MySQLの概要と環境構築)
- 2 開発編(データ型とSQL
- テーブル定義
- トランザクション
- Javaからの接続/操作 ほか)
- 3 DBA編(アーキテクチャ/ファイル構成
- ユーザー管理/セキュリティ
- バックアップ/リカバリ
- レプリケーション ほか)

##[達人に学ぶ SQL徹底指南書](https://amzn.to/2MQESwa)

- 第1部 魔法のSQL(CASE式のススメ―SQLで条件分岐を表現する
- 自己結合の使い方―集合指向言語としてのSQL
- 3値論理とNULL―SQLの甘い罠
- HAVING句の力―意外な名脇役 ほか)
- 第2部 リレーショナル・データベースの世界(リレーショナル・データベースの歴史―1969年‐全てはここから始まった
- なぜ“関係”モデルという名前なの?―なぜ“表”モデルという名前ではないのか
- 関係に始まり関係に終わる―閉じた世界の幸せについて
- アドレス、この巨大な怪物―なぜリレーショナル・データベースにはポインタがないのか? ほか)

##[SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)](https://amzn.to/2yObpLc)

- 第1章：DBMSのアーキテクチャ──この世にただ飯はあるか
- 第2章：SQLの基礎──母国語を話すがごとく
- 第3章：SQLにおける条件分岐──文から式へ
- 第4章：集約とカット──集合の世界
- 第5章：ループ──手続き型の呪縛
- 第6章：結合──結合を制する者はSQLを制す
- 第7章：サブクエリ──困難は分割するべきか
- 第8章：SQLにおける順序──甦る手続き型
- 第9章：更新とデータモデル──盲目のスーパーソルジャー
- 第10章：インデックスを使いこなす──秀才の弱点

##[理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus)](https://amzn.to/2GTqK1h)

- 第1章:SQLとリレーショナルモデル
- 第2章:述語論理とリレーショナルモデル
- 第3章:正規化理論(その1)―― 関数従属性 ――
- 第4章:正規化理論(その2)―― 結合従属性 ――
- 第5章:リレーションの直交性
- 第6章:ドメインの設計戦略
- 第7章:NULLとの戦い
- 第8章:SELECTを攻略する
- 第9章:履歴データとうまく付き合う
- 第10章:グラフに立ち向かう
- 第11章:インデックスの設計戦略
- 第12章:Webアプリケーションのためのデータ構造
- 第13章:リファクタリングの最適解
- 第14章:トランザクションの本質


#16.正規表現がちゃんとデキる人は頼りになる

##[正規表現技術入門 ――最新エンジン実装と理論的背景](https://amzn.to/2MTq6or)

- 第1章:［入門］正規表現 --メタ文字、構文、エンジン
- 第2章:正規表現の歴史 --理論と実装の両面から
- 第3章:プログラマのための一歩進んだ正規表現 --純粋な正規表現と、最新エンジン実装の比較
- 第4章:DFA型エンジン --有限オートマトンと決定性
- 第5章:VM型エンジン --鍵を握るのは「バックトラック」
- 第6章:正規表現エンジンの三大技術動向 --JITコンパイル、固定文字列探索、ビットパラレル
- 第7章:正規表現の落とし穴 --バックトラック増加、マッチ、振る舞いの違い
- 第8章:正規表現を超えて --「書かない」「読み解く」「不向きな問題を知る」


#17.シェル系は大事

##[［改訂新版］ シェルスクリプト基本リファレンス　　－－#!/bin/shで、ここまでできる](https://amzn.to/2MOFbrq)

- 第0章　シェル＆シェルスクリプトの基礎知識
- 第1章　シェルスクリプト入門
- 第2章　シェルスクリプトの基本事項
- 第3章　シェル文法の循環構造
- 第4章　複合コマンド
- 第5章　組み込みコマンド[1]
- 第6章　組み込みコマンド[2]
- 第7章　パラメータ
- 第8章　パラメータ展開
- 第9章　クォートとコマンド置換
- 第10章　各種展開
- 第11章　リダイレクト
- 第12章　よく使う外部コマンド
- 第13章　配列
- 第14章　シェルスクリプトのノウハウ＆定石

##[grep,sed,awk](https://amzn.to/2yZEp2R)

- 1 起筆
- 2 grepと正規表現
- 3 sed
- 4 awk


#18.パフォーマンスも大事

##[Javaパフォーマンス](https://amzn.to/33k0Ayu)

- 1章　イントロダクション
- 2章　パフォーマンステストのアプローチ
- 3章　Javaパフォーマンスのツールボックス
- 4章　JITコンパイラのしくみ
- 5章　ガベージコレクションの基礎
- 6章　ガベージコレクションのアルゴリズム
- 7章　ヒープのベストプラクティス
- 8章　ネイティブメモリのベストプラクティス
- 9章　スレッドと同期のパフォーマンス
- 10章　Java EEのパフォーマンス
- 11章　データベースのベストプラクティス
- 12章　Java SEのAPIのパフォーマンス

#19.アーキテクトに成長するためのステップとしての教養

##[Webを支える技術 -HTTP、URI、HTML、そしてREST](https://amzn.to/2YTyZRs)

- 第1章 Webとは何か
- 第2章 Webの歴史
- 第3章 REST ── Webのアーキテクチャスタイル
- 第2部 URI
- 第4章 URIの仕様
- 第5章 URIの設計
- 第3部 HTTP
- 第6章 HTTPの基本
- 第7章 HTTPメソッド
- 第8章 ステータスコード
- 第9章 HTTPヘッダ
- 第4部 ハイパーメディアフォーマット
- 第10章 HTML
- 第11章 microformats
- 第12章 Atom
- 第13章 Atom Publishing Protocol
- 第14章 JSON
- 第5部 Webサービスの設計
- 第15章 読み取り専用のWebサービスの設計
- 第16章 書き込み可能なWebサービスの設計
- 第17章 リソースの設計

##[[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ](https://amzn.to/2YTz2N8)

- 第1回　大規模Webサービスの開発オリエンテーション
- 第2回　大規模データ処理入門いと処理に時間がかかる
- 第3回　OSのキャッシュと分散
- 第4回　DBのスケールアウト戦略
- 第5回　大規模データ処理［実践
- 第6回　［課題］圧縮プログラミング
- 第7回　アルゴリズムの実用化
- 第8回　［課題］はてなキーワードリンクの実装
- 第9回　全文検索技術に挑戦
- 第10回　［課題］全文検索エンジンの作成
- 第11回　大規模データ処理を支えるサーバ/インフラ入門
- 第12回　スケーラビリティの確保に必要な考え方



#20.業界事情、失敗に学ぶ


##[動かないコンピューター ― 情報システムに見る失敗の研究](https://amzn.to/2YURgSg)

- 第1章 巨額を投じても失敗する。大規模システム開発の悲惨な末路(賠償総額42億円―開発が頓挫すれば巨額訴訟は泥沼化
- 「丸ごとお任せ」では済まされない、委託側にも問われる開発責任 ほか)
- 第2章 システム開発プロジェクトに潜む落とし穴の数々(安そうだが、効率が良さそうだが…。安易なパッケージシステムという選択が大誤算になる
- 開発するのはベンダーだし…。パートナーの下請け扱いは、結局最後に仇となる ほか)
- 第3章 システム開発はアプローチを見直せばうまくいく(完成度の高いモックアップを作り、要件定義を行う
- 超高速にオリジナルデータを処理し、コストダウンと拡張性アップを実現 ほか)
- 第4章 ユーザーがコントロールするプロジェクトの進め方(プロジェクトスタート―構想を練る
- パートナー選び―提案依頼をする ほか)