ABCDEFGHIJKLMNOP
1
注) 2016年辺りのまとめなので、新しめの本が入ってないのと、新しめの特定の技術の本は2020年現在だと通用しない本が多いです。
古典含め普遍的な物も多々あるので、現在も通用する物が多いはずです。リンク先が旧版の本も有るので注意。
Javaメインの会社の本棚です。あと、じつは洋書版もあります。
2
2018年ごろの会社の本棚の写真
3
Junior EngineerEngineerSenior Enginner
4
技術カテゴリLevel 1
コンピューターリテラシーの学部1年生と同等レベルの知識・プログラミング経験を持ち、それを活かして実際の開発の現場で開発経験を身につけている
Level 2
コンピューターサイエンスの学部2・3年生と同等レベルの知識・プログラミング経験を持ち、それを活かして実際の開発の現場で開発経験を身につけている
Level 3
コンピューターサイエンスの学士号もしくはそれと同等レベルの知識・プログラミング経験を持ち、それを活かして実際の開発の現場で開発経験を身につけている
Level 4
コンピューターサイエンスの修士号もしくはそれと同等レベルの知識・プログラミング経験を持ち、それを活かして実際の開発の現場で開発経験を身につけている
Level 5
コンピューターサイエンスの博士号もしくはそれと同等レベルの知識・プログラミング経験を持ち、それを活かして実際の開発の現場で開発経験を身につけている
Level 6
社内外での代替不可能な技術Edgeの能力=サービスのリードエンジニアクラスの能力を持ち、その技術力でサービスを自身の技術力で進化させていくことができる
Level 7
会社の優位性となれるレベルの技術Edge=CTOクラスの能力を持ち、その技術力でサービスのポテンシャルを引き上げる・新規サービスを立ち上げることができる
5
エンジニア共通開発Basicシステム開発に関係すること全般の基礎的な知識を身につけるBasicシステム開発に関係すること全般の応用的な知識を身につける
6
基本情報技術者 合格教本応用情報技術者 合格教本
7
DBBasicRDBの仕組みの知識・SQLの基本的な書き方を身につけるBasicRDB・テーブルの設計に合わせたSQLの書き方を身につけるBasicRDBの設計・チューニングの知識を身につける
8
現場で使える MySQL理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL実践ハイパフォーマンスMySQL 第3版
9
達人に学ぶ SQL徹底指南書SQL アンチパターン
10
Elasticsearch: The Definitive Guide
11
インフラBasicUNIXの基本操作を身につけるBasicUNIXの仕組みの知識を身につけるBasic開発・運用に必要なミドルウェアの知識を身につける
12
Linux標準教科書Linuxサーバー構築標準教科書プログラマのためのDocker教科書
13
LPICイージスはじめてのAnsible
14
詳解 シェルスクリプト改訂新版Jenkins実践入門
15
マスタリングTCP/IP 入門編
16
機械学習Basic基礎的な統計解析のアルゴリズムを身につけるBasic機械学習で何が実現できるのかの知識を身につけるBasic基礎的な機械学習のアルゴリズムを身につける
17
図解でわかる多変量解析―データの山から本質を見抜く科学的分析ツール集合知プログラミングITエンジニアのための機械学習理論入門
18
自然言語処理Basic自然言語処理で何が実現できるのかを身につけるBasic基礎的な自然言語処理のアルゴリズムを身につける
19
自然言語処理の基本と技術 (仕組みが見えるゼロからわかる)自然言語処理 (放送大学教材)
20
エンジニアとしての心得Basic良いエンジニアとなるための基本的な考え方を身につける
21
ハッカーと画家
22
達人プログラマー
23
UNIXという考え方―その設計思想と哲学
24
技術マネジメント理解Basicアジャイル開発の知識を身につけるBasicチームの実施される開発手法を理解し、メンバーとしての適切な実践ができるBasicチームの技術的なのリスクを把握し、マネジメントと協力して円滑なチーム運営に寄与できる
25
アジャイルサムライ−達人開発者への道−ピープルウエア熊とワルツを - リスクを愉しむプロジェクト管理
26
アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣Joel on Software人月の神話
27
アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~
28
先端技術理解Basic定期的に興味ある新しい技術の情報を取得し、理解するBasic新しい技術で興味のある技術に対して、実際に触れているBasic全体の技術動向を把握し、各特性を説明できるApplied新しい技術に対して網羅的にリーチし、サービスの技術検討時に選択肢に入れられるEdged選定された未導入の技術について、導入における開発~運用定着までをリードできる
29
外部発信Basic学習した技術について、社内に発信できる
(半年に一度)
Basic学習した技術について、社内に発信でき、技術Blogにも載せる(半年に一度)Basic学習した技術について、社内に発信でき、技術Blogにも載せる(4か月に一度)Applied学習した技術について、会社として社外に発信できる(半年に一度)Edged学習した技術について、会社の技術的Edgeとして社外に発信できる(4か月に一度)Edged会社の技術的Edgeについて、エンジニア代表として取材を受けることができ、また学会などオフィシャルな場でも発信することができる
30
技術評価・導入BasicAPIドキュメントが読めるBasic全ドキュメントを読めるApplied会社が未導入の技術に対して技術評価ができるEdged選定された未導入の技術について、導入における開発~運用定着までをリードできるEdged問題を解決するための技術が世の中にない場合に、自分で開発することができる
31
技術育成Basicメンバーの技術力に合わせて依頼されたコードレビューができるAppliedメンバーの技術力に合わせて、技術力向上のサポートしていけるEdged技術チームの開発・育成方針の意思決定プロセスに入り、メンバーの技術力の成長に寄与していけるEdged技術チームのあるべき像を描き、技術力で技術チームを牽引してメンバーの技術力の成長に寄与していける
32
言語理解Basic1つの言語を理解し、動作させることができるBasicオブジェクト指向言語について比較的高度な言語に対する理解をしているBasicプログラミング言語に関する複数のパラダイムを理解しその特徴を捉えているAppliedプログラミング言語に関する複数のパラダイムを深いレベルで理解し、実際のコードに対して反映、また他者のプログラムのコードのレビューをすることができるEdged既存サービスのプロジェクトのリードアーキテクトが担えるEdgedCTO候補として、新サービスの開発時に、アーキテクト面インフラ面を含めて、システムの全体設計を担うことができる
33
スッキリわかるJava入門 第2版Effective Java 第3版プログラミング言語 Java 第4版コンピュータプログラミングの概念・技法・モデル
34
プログラミング言語C 第2版
35
プログラミングHaskell
36
Scalaスケーラブルプログラミング第3版
37
コーディングの心得Basic行儀の良いシステムを作る上で必要な知識を身につけるBasicより堅牢なシステムを作るための手法について理解する
38
プログラミング作法CODE COMPLETE 第2版 上 完全なプログラミングを目指して
39
CODE COMPLETE 第2版 下 完全なプログラミングを目指して
40
リーダブルコードBasic最低限他人が読めるコードを書けるようになるAppliedリーダブルコードを理解して従い、変更を加える必要がある場合には、その理由を説明できる
41
リーダブルコード
42
システム設計Basicプログラムの設計に必要な最低限の知識を身につけ、レビューを受けながら適切なクラス設計・開発ができるBasicフレームワークや各種ライブラリの構造を理解し、適切に利用することができるApplied各言語のベストプラクティスを理解して、適切なクラス設計・開発ができる
43
Java言語で学ぶデザインパターン入門ソースコードリーディングから学ぶ Javaの設計と実装エリック・エヴァンスのドメイン駆動設計
44
Java言語で学ぶデザインパターン入門 マルチスレッド編EclipseではじめるJavaフレームワーク入門―クラウド開発対応ドメイン特化言語 パターンで学ぶDSLのベストプラクティス46項目
45
Java言語で学ぶリファクタリング入門Java並行処理プログラミング ―その「基盤」と「最新API」を究める―マイクロサービスアーキテクチャ
46
Javaフレームワーク開発入門コーディングを支える技術 ~成り立ちから学ぶプログラミング作法ソフトウェアアーキテクトが知るべき97のこと
47
7つの言語 7つの世界リファクタリング 既存のコードを安全に改善する
48
7つのデータベース 7つの世界
49
コンピュータ
アーキテクチャ
Basicコンピュータが動く仕組みを最低限理解するBasicAppliedコンピュータがどのような仕組みで動作しているか低レベルで理解するAppliedコンピュータの仕組みを理解した上で、効率の良いプログラムとは何なのかを低レベルで考えることができる
50
コンピュータはなぜ動くのか~知っておきたいハードウエア&ソフトウエアの基礎知識~コンピュータの構成と設計 第5版 上ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ 第5版
51
コンピュータの構成と設計 第5版 下詳解 Linuxカーネル 第3版
52
テストコードBasic自動テストについて基礎的な知識を身につけるBasic自動テストについて実践的な知識を身につけるApplied安定的なシステム運営に必要なテスト方針を理解し、テスト設計・実践ができる
53
テスト駆動開発入門実践テスト駆動開発 テストに導かれてオブジェクト指向ソフトウェアを育てる継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化
54
JUnit実践入門 ~体系的に学ぶユニットテストの技法レガシーコード改善ガイド基本から学ぶソフトウェアテスト
55
UI/UXBasicUI/UXに関する基本的なルールを理解するBasicUI/UXに関して正しい知識を持ち、改善の可能性を提案することができるAppliedユーザビリティ、デザイン思考などの方法論を理解し、継続してUI/UXを改善していくことができる。
56
ノンデザイナーズ・デザインブックインタフェースデザインの心理学 ―ウェブやアプリに新たな視点をもたらす100の指針デザイン思考研究所 の無料教材
57
超明快 Webユーザビリティ ―ユーザーに「考えさせない」デザインの法則
58
サービス開発Basicサービス作り方について基本的な考え方を身につけるBasicサービスを作った上でどう分析するかについて学ぶAppliedデータ分析、サービス改善の方法論を理解し、継続してサービスを改善していくことができる。
59
リーンスタートアップリーンアナリティクス
60
データ解析の実務プロセス入門
61
インフラ・ミドルウェアBasicインフラ・ミドルウェアに関する最低限の知識を身につけるBasicインフラ・ミドルウェアについて全体のアーキテクチャを考える上で必要な知識を身につける
62
実践! CentOS 7 サーバー徹底構築[24時間365日] サーバ/インフラを支える技術 ‾スケーラビリティ、ハイパフォーマンス、省力運用
63
Linuxシステム管理標準教科書[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ
64
Amazon Web Services 基礎からのネットワーク&サーバー構築
65
アルゴリズムBasic基本となるアルゴリズムとデータ構造を理解するBasic効率の良いアルゴリズムとは何なのかを理解し、それを実際のコードに対して反映することができるBasicより高いアルゴリズムに対する知識・知見を身につけ、正しくアルゴリズムを選択し、組むことができるAppliedどんなアルゴリズムが存在するのかを知識として有し、中身を理解して変更を加えて応用できる
66
定本Javaプログラマのためのアルゴリズムとデータ構造珠玉のプログラミングアンダースタンディング コンピュテーション―単純な機械から不可能なプログラムまで
67
暗号技術入門 第三版 秘密の国のアリス
68
アーキテクトBasicアーキテクトとして必要な基本的な知識を身につけるBasic既存サービスのアーキテクチャを理解できるApplied既存サービスのアーキテクチャに対して、改善提案ができる
69
Release It! 本番用ソフトウェア製品の設計とデプロイのために[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ
70
インフラエンジニアシステム設計
(必須スキル)
Basicサーバ構成を理解し、構築・運用することができるBasicプロダクトの要件をヒアリングし、RASISの観点から適切な構成を検討し、構築・テストすることができるBasicプロダクトの要件をヒアリングし、RASISの観点から、グランドデザインを設計し、構築することができるEdgedシステムに深く精通し、自分の得意領域において新しい技術の検証・導入ができる
71
インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門
72
絵で見てわかるITインフラの仕組み[24時間365日] サーバ/インフラを支える技術 ‾スケーラビリティ、ハイパフォーマンス、省力運用
73
高信頼システム構築標準教科書
74
75
システム運用管理
(必須スキル)
Basic基礎的なシステムの運用知識を身につけているBasicシステム運用の体系的な知識を身につけているBasicプロダクトの構成をヒアリングし、運用上発生するであろうリスクを想定し、適切にリスクヘッジすることができるApplied全社的なシステム運用のPDCAを回し、運用改善を主動していくことができる
76
最適コストで安定運用!モデルケースで紐解く「システム運用管理」の勘どころITIL入門 ITサービスマネージメントの仕組みと活用
77
IT Service Management教科書 ITIL ファンデーション
78
サーバ(物理・OS)
(必須スキル)
Basic基礎的なサーバの管理知識を身につけているBasicサーバ管理の体系的な知識を身につけていて、サーバの基本的なトラブルシュートを一人で実施ができるBasic一人でシステムのトラブルシュートができるApplied一人でシステムのチューニング・改善のPCDAを回し、パフォーマンスを向上させていくことができる
79
Linuxシステム管理標準教科書Windowsインフラ管理者入門プロのための Linuxシステム・10年効く技術Linuxカーネル Hacks ―パフォーマンス改善、開発効率向上、省電力化のためのテクニック
80
標準テキスト Windows Server 2012 R2 構築・運用・管理パーフェクトガイドTechnet Windows Server 2012 R2 サーバーの役割とテクノロジ
81
OS X Server 実践ワークグループ&インターネットサーバ構築
82
プロのための Linuxシステム構築・運用技術
83
ミドルウェア(DB・ES等)
(オプションスキル)
BasicLinuxサーバを構築することができるBasicWEBサービスに必要なシステム環境を構築することができるBasic公式ドキュメントを読み、検証することで、ミドルウェアの深い部分の挙動を理解しチューニングすることができるAppliedOSSのソースコードを読み、詳細な挙動を理解し、必要に応じてプラグインやパッチを開発することができる
84
実践! CentOS 7 サーバー徹底構築7つのデータベース 7つの世界
85
エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
86
高速スケーラブル検索エンジン ElasticSearch Server
87
ネットワーク
(オプションスキル)
Basic基礎的なTCP/IPの知識を身につけているBasic既存のネットワークを理解・運用することができるBasic様々な要件に応じて柔軟なネットワークを構築することができるApplied大規模なネットワークを構築することができる
88
3分間NetWorking30分間NetWorkingネットワークスペシャリスト イージスCCIE Routing and Switching v5.0 Official Cert Guide, Volume 1
89
マスタリングTCP/IP 入門編ネットワークエンジニアとしてネットワークトラブル対応 徹底解説2CCIE Routing and Switching v5.0 Official Cert Guide, Volume 2
90
ネットワークスペシャリスト教科書
91
プログラミング 
(オプションスキル)
Basicサーバ作業に必要な最低限な知識を身につけているBasicサーバ作業の自動化に必要な知識を身につけているBasicシステム運用をする上で必要なツールを自作することができるBasic公式ドキュメントを読み、適切な言語を使って必要な機能・サービスを実装できるAppliedバッチ等のコードを読み、チューニングすることができる
92
Linuxコマンドポケットリファレンス詳解 シェルスクリプトPythonチュートリアル 第3版
93
Windows PowerShell 実践システム管理ガイド2版
94
Progate(Ruby)
95
Progate(PHP)
96
苦しんで覚えるC言語
97
仮想化
(オプションスキル)
Basic各レイヤーの仮想技術を理解し、基礎を身につけるBasic既存の仮想基盤を理解・運用することができるBasic公式ドキュメントを読み、仕組みを理解し、自分で仮想基盤を構築することができるApplied複数の仮想化技術に精通し、上長と適切な技術を仮説・検証を行い、仮想基盤を設計・構築することができる
98
仮想化の基本と技術 (仕組みが見えるゼロからわかる)Docker 実践ガイド
99
Citrix XenServer® 7.0 管理者ガイド
100
クラウド
(オプションスキル)
Basic既存サービスのクラウドインフラを運用していくことができるBasic公式ドキュメントを読み、システムを設計・構築し、APIを使ったシステム連携環境を開発できるApplied複数のクラウドに精通し、要件に応じたシステムをクラウド上に構築することができる