プロになるJava-仕事で必要なプログラミングの知識がゼロから身につく最高の指南書

書籍情報

発売日 : 2022年03月19日

著者/編集 : きしだ なおき/山本 裕介/杉山 貴章

出版社 : 技術評論社

発行形態 : 単行本

書籍説明

内容紹介

この本では、プログラムを組むことを目的に、手続きの組み方や構成を解説して、そのために必要なJavaの文法を紹介するという形をとっています。また、プロになる上で知っておく必要のある開発ツールの使い方や、現在世の中で主体となっているWebの仕組みを解説した上でフレームワークを使ったWebアプリケーションの開発法を解説します。

目次

目次
本書の読み方・動作環境

●第1部 Javaを始める準備

第1章 Java ってなんだろう
1.1 Javaとは
1.1.1 プログラミング言語とは
1.1.2 Javaはどんなプログラミング言語なの?
1.1.3 Javaで何ができるの?
1.1.4 Javaの仕様とJDKディストリビューション
1.2 Javaの情報源
COLUMN Java 公式キャラクター Duke

第2章 開発環境の準備と最初の一歩
2.1 Oracle JDKのインストール
2.1.1 Oracle JDKのダウンロード
2.1.2 Oracle JDKのインストール
COLUMN Oracle 社はJavaを有償化した?
2.2 IntelliJ IDEAのインストールと設定
2.2.1 初心者の段階からIDEを!
2.2.2 IntelliJ IDEAとは
2.2.3 IntelliJ IDEAのダウンロードとインストール
2.2.4 Toolbox Appの設定とIDEの起動
COLUMN IntelliJ IDEAのエディション
2.2.5 IntelliJ IDEAの初期設定
2.3 最初のプログラムを書いてみよう
2.3.1 プロジェクトの作成
2.3.2 IntelliJ IDEAの初期画面
2.3.3 クラスの作成
2.3.4 mainメソッドの実装
COLUMN 近年のJava IDE 事情

●第2部 Javaの基本

第3章 値と計算
3.1 JShellの起動
3.1.1 ターミナルの起動
3.1.2 JShellの起動
3.1.3 JShellの終了
3.2 値と演算
3.2.1 整数
3.2.2 構文エラー
3.2.3 実数
3.2.4 文字列
3.2.5 例外
3.2.6 プログラムがうまく動かない3 段階
3.3 メソッドの呼び出し
3.3.1 メソッドの呼び出し
3.3.2 文字列の掛け算や引き算?
3.3.3 メソッドのシグネチャ
3.3.4 メソッドの使い方がわからないとき
3.3.5 文字列のフォーマット
3.3.6 formattedメソッドでの例外

第4章 変数と型
4.1 変数
4.1.1 複合代入演算子
4.1.2 値に名前を付けるメリット
4.2 型
4.2.1 変数の型
4.2.2 基本型と参照型
4.2.3 変数の型を指定する
4.2.4 文字を扱う型
4.2.5 数値の型変換
4.2.6 型の役割

第5章 標準API
5.1 日付時刻
5.1.1 APIとライブラリ
5.1.2 現在日時を取得する
5.1.3 パッケージとimport
5.1.4 日付時刻の操作
5.1.5 指定した日付時刻を扱う
5.1.6 日付時刻の整形
5.1.7 staticメソッドとインスタンスメソッド
5.2 BigDecimal
5.2.1 実数計算の誤差
5.2.2 BigDecimalでの計算
5.2.3 newによるBigDecimalオブジェクトの生成
5.2.4 BigDecimalオブジェクト生成時の注意
5.2.5 オブジェクトの生成の仕方の違い

第6章 SwingによるGUI
6.1 Swingでのウィンドウ表示
6.1.1 Swing
6.1.2 ウィンドウを表示してみる
6.1.3 入力領域の配置
6.1.4 2つ目の入力領域
6.1.5 ボタンを配置
6.1.6 クラスとオブジェクト、インスタンス
6.1.7 参照を扱う
6.2 画面に絵を描いてみる
6.2.1 ウィンドウの準備
6.2.2 画像の準備
6.2.3 図形の描画
6.3 Javaの基本文法
6.3.1 Javaの文法
6.3.2 入力エラーの対処
6.3.3 IntelliJ IDEAを使わずに実行する

●第3部 Javaの文法

第7章 条件分岐
7.1 論理型
7.1.1 値の比較
7.1.2 オブジェクトの大小比較
7.1.3 オブジェクトが等しいかどうかの比較
7.1.4 論理演算子
7.1.5 条件演算子
7.2 if 文による条件分岐
7.2.1 if 文
7.2.2 else 句
7.2.3 else if
7.3 switchによる条件分岐
7.3.1 switch 文
7.3.2 default 句
7.3.3 switch 式
7.3.4 古い形式のswitch

第8章 データ構造
8.1 Listで値をまとめる
8.1.1 List
8.1.2 変更のできるList
8.1.3 ジェネリクスによる型検査
8.1.4 ジェネリクスの型推論
8.1.5 ラッパークラス
8.2 配列
8.2.1 配列の初期化
8.2.2 要素を設定した配列の初期化
8.2.3 配列の要素の利用
8.2.4 多次元配列
8.3 レコードで違う種類の値を組み合わせる
8.3.1 違う種類の値をListでまとめて扱う
8.3.2 違う種類の値をまとめて扱うレコードを定義する
8.3.3 レコードのオブジェクトを生成する
8.4 Mapで辞書を作る
8.4.1 Map
8.4.2 変更可能なMap
8.4.3 イミュータブル(不変)なオブジェクト

第9章 繰り返し
9.1 ループ構文
9.1.1 for 文の基本
9.1.2 for 文の応用
9.1.3 while 文
9.1.4 do while 文
9.1.5 ループのcontinueとbreak
9.2 ループに慣れる
9.2.1 デバッガーでループを覗く
9.2.2 二重ループ
COLUMN i、jの次は?
9.2.3 もう少しループの練習
9.2.4 迷路ゲームを作る

第10章 データ構造の処理
10.1 データ構造を拡張for 文で扱う
10.1.1 基本for 文でのListの要素の処理
10.1.2 拡張for 文によるListの要素の処理
10.1.3 拡張for 文による配列の要素の処理
10.1.4 値の集合の処理のパターン
10.2 Stream
10.2.1 IntelliJ IDEAによるStreamへの変換
10.2.2 Streamの構成
10.2.3 ラムダ式
10.2.4 Streamソース
10.2.5 終端処理
10.2.6 中間処理
10.2.7 Optional
10.3 基本型のStream 処理
10.3.1 IntStreamで整数の処理
10.3.2 StreamとIntStreamの行き来

第11章 メソッド
11.1 メソッドの宣言
11.1.1 JShellでのメソッド宣言
11.1.2 staticメソッドの宣言
11.1.3 インスタンスメソッドの宣言
11.1.4 IntelliJ IDEAにメソッドを宣言してもらう
11.2 ラムダ式とメソッド参照
11.2.1 ラムダ式
11.2.2 メソッド参照
11.2.3 IntelliJ IDEAでラムダ式とメソッド参照の変換
11.3 メソッドの使いこなし
11.3.1 メソッドのオーバーロード
11.3.2 メソッド呼び出しの組み合わせ
COLUMN うまく名前を付けるのも実力のうち
11.3.3 再帰とスタック

●第4部 高度なプログラミング

第12章 入出力と例外
12.1 ファイルアクセスと例外
12.1.1 ファイル書き込み
12.1.2 ファイル読み込み
12.1.3 例外
12.1.4 throwsで例外を押しつける
12.1.5 try 句で例外に対処する
12.1.6 検査例外と非検査例外
12.1.7 例外を投げる
12.2 ネットワークでコンピュータの外の世界と関わる
12.2.1 サーバーとクライアント
12.2.2 ソケット通信とTCP/IP
12.2.3 OutputStreamでのデータ送信
12.2.4 InputStreamでのデータ受信
12.2.5 try-with-resources
12.3 Webの裏側を見てみる
12.3.1 HTTP
12.3.2 HTTPクライアント
12.3.3 HTTPSで安全なWebアクセス
12.3.4 Webクライアントライブラリ
12.3.5 Webサーバーを作る

第13章 処理の難しさの段階
13.1 ループの難しさの段階
13.1.1 他のデータを参照するループ
13.1.2 隠れた状態を扱うループ
13.2 状態遷移と正規表現
13.2.1 状態遷移の管理とenum
13.2.2 正規表現
13.3 スタックとキュー
13.3.1 スタックとキュー
13.3.2 ツリーの探索
13.3.3 メソッドの再帰呼び出しをスタックを使った処理に置き換える
13.3.4 幅優先探索とキュー
13.3.5 計算の複雑さの階層

第14章 クラスとインタフェース
14.1 クラス
14.1.1 クラスのメンバー
14.1.2 アクセス制御(可視性)
14.1.3 コンストラクタ
14.1.4 this
14.1.5 フィールド
14.1.6 ネステッドクラスとインナークラス
14.2 インタフェース
14.2.1 インタフェースが欲しい状況
14.2.2 インタフェースを使ってメソッドを統一的に扱う
14.2.3 必要なメソッドを実装していないときのエラー
14.2.4 実装を持ったメソッドをインタフェースに定義する
14.2.5 インタフェースにおけるアクセス制御
14.2.6 公称型と構造的部分型
14.3 ラムダ式と関数型インタフェース
14.3.1 関数型インタフェース
14.3.2 標準APIで用意されている関数型インタフェース
14.4 クラスとファイル
14.4.1 ソースファイル
14.4.2 classファイル
14.4.3 コメント
14.4.4 コマンドラインパラメータ

第15章 継承
15.1 継承
15.1.1 クラスの継承
15.1.2 継承でのコンストラクタ
15.1.3 Objectクラス
15.1.4 メソッドのオーバーライド
15.1.5 匿名クラス
15.2 継承の活用
15.2.1 差分プログラミング
15.2.2 継承でデータを分類する
15.2.3 継承とオブジェクト指向

●第5部 ツールと開発技法

第16章 ビルドツールとMaven
16.1 ビルドツールの必要性
16.2 Mavenの基本
COLUMN Maven 以外のJavaビルドツール
16.3 Mavenのモジュールとディレクトリ構成
16.3.1 groupIdとartifactId
16.3.2 Mavenプロジェクトのディレクトリ構成
16.4 ライブラリとMaven Repository
16.4.1 ライブラリへの依存
16.4.2 Maven Central Repository
16.4.3 Mavenプロジェクトへライブラリを追加する
16.4.4 依存のscope
16.4.5 pom.xmlへの依存の記述
16.4.6 pom.xml 記述内容のプロジェクトへの反映
16.4.7 Maven Central Repository のインデックス作成
16.4.8 ライブラリの確認
16.4.9 businessCalendar4Jの動作確認
16.4.10 目的に合ったライブラリを見つける
16.5 MavenのGoal

第17章 Javadocとドキュメンテーション
17.1 Javadocとは
17.2 ブラウザでJavadocを見る
17.2.1 標準APIのJavadoc
17.2.2 Javadocの読み方
17.2.3 英語版のJavadoc
17.3 IDEからJavadocを見る
17.4 Javadocを書く
17.5 JavadocのHTMLを生成する

第18章 JUnitとテストの自動化
18.1 テストの自動化とは
18.1.1 JUnitのセットアップと実行
18.1.2 テストケースの実装、実装コードの修正
18.1.3 その他のアサーションメソッド
18.2 テスト自動化のヒント
18.2.1 効果的にテストケースを書く
18.2.2 テスト駆動開発
18.2.3 GUIアプリケーションやWebアプリケーションのテスト
COLUMN 時間がないからテストは書かない?
18.3 オリンピック開催年を判別するコードをテスト

第19章 IntelliJ IDEAを使いこなす
19.1 補完機能を使いこなす
19.1.1 補完の候補表示と補完確定
19.1.2 import 文の補完
19.2 Live Templateと後置補完

第20章 バージョン管理とGit
20.1 アンドゥやファイルコピーによる履歴管理
20.1.1 Local History
20.2 バージョン管理システム
20.2.1 Gitのインストール
20.3 Git 連携を有効にする
20.4 コミット
20.4.1 コミット対象ファイルの選択
20.4.2 コミットの実行
20.4.3 ファイル追加時の確認ダイアログ
20.4.4 変更したファイルの差分とコミット
20.4.5 Gitログの確認
20.4.6 .gitignoreファイルの作成
20.5 ブランチ
20.5.1 ブランチの作成と切り換え
20.5.2 ブランチのマージ
20.6 Git 誤操作後の復旧方法
20.6.1 Amend
20.6.2 Revert
20.6.3 コミットのReset

●第6部 Webアプリケーション開発

第21章 Spring BootでWebアプリケーションを作ってみる
21.1 Webアプリケーションとフレームワーク
21.1.1 Webアプリケーションとは
21.1.2 Webアプリケーションの仕組み
21.1.3 アプリケーションフレームワークとは
21.1.4 フレームワークを利用するメリット
21.1.5 Webアプリケーション開発に使える代表的なフレームワーク
21.2 Spring Bootでタスク管理アプリケーションを作ってみる
21.2.1 タスク管理アプリケーションの概要
21.2.2 Webアプリケーション用のプロジェクトを作る
21.3 RestControllerでWebアプリケーションの仕組みを学ぶ
21.3.1 @RestControllerアノテーションでコントローラを作成する
21.3.2 クライアントからのリクエストに応えるためのエンドポイントを作る
21.3.3 helloエンドポイントにアクセスしてみる
21.3.4 タスク管理アプリケーションをコマンドラインから起動する
21.4 モデルを使ってアプリケーションの内部情報を保持する
21.4.1 タスクの情報を保持するためのモデルの作成
21.4.2 タスクを追加するエンドポイントの作成
21.4.3 タスクを一覧表示するエンドポイントの作成
21.5 ユーザーインタフェースの作成にテンプレートエンジンを活用する
21.5.1 @Controllerアノテーションでコントローラを作成する
21.5.2 テンプレートエンジン
21.5.3 Thymeleafが使えるようにpom.xmlを修正する
21.5.4 Thymeleaf 用のHTMLテンプレートを作る
21.5.5 HomeControllerのhelloメソッドを修正する
21.5.6 タスクの追加および一覧表示用のテンプレートを用意する
21.5.7 HomeControllerにタスクの一覧表示機能のエンドポイントを実装する
21.5.8 HomeControllerにタスクの追加機能のエンドポイントを実装する
21.5.9 CSSを使ってテンプレートを装飾する

第22章 Webアプリケーションにデータベースを組み込む
22.1 データベースとは
22.1.1 DBMSの種類
22.1.2 リレーショナルデータベースとは
22.1.3 リレーショナルデータベースにアクセスするための言語「SQL」
22.1.4 Javaによるデータベース接続とJDBC
22.2 SQLでH2データベースを操作する
22.2.1 H 2とは
22.2.2 pom.xmlへの依存関係の追加
22.2.3 application.propertiesへの設定の追加
22.2.4 H 2コンソールを使ったデータベース接続
22.2.5 テーブルを作成するCREATE 文
22.2.6 テーブルにレコードを追加するINSERT 文
22.2.7 テーブルに格納されたデータを取得するSELECT 文
22.2.8 すでに登録されているレコードを更新するUPDATE 文
22.2.9 テーブルに登録されているレコードを削除する
22.2.10 タスク管理アプリケーションで使用するSQL 文の例
22.3 Spring BootアプリケーションでSpring JDBCを使用する
22.3.1 Spring JDBCとは
22.3.2 pom.xmlへの依存関係の追加
22.3.3 テーブル初期化用のスクリプトを用意する
22.3.4 データベース操作用のクラスを作成する
COLUMN DI/DIコンテナとは
22.3.5 HomeControllerクラスを修正する
22.3.6 タスク情報の削除機能を追加する
22.3.7 タスク情報の更新機能を追加する

おわりに

著者情報

きしだ なおき
きしだなおき 九州芸術工科大学 芸術工学部 音響設計学科を満期退学後、フリーランスでの活動を経て、2015 年から LINE Fukuoka株式会社勤務。著書に『創るJava[改訂第3版]』(マイナビ)、『みんなのJava OpenJDKから始まる大変革期! 』(共著、技術評論社)など。
きしだ, なおき
山本 裕介
山本 裕介 Twitter4J、BusinessCalendar4JなどのオープンソースJavaライブラリの開発者。2019年にJavaチャンピオンに任命されている。BEA SystemsやFast Search & Transfer、Red Hatなど、外資系のソフトウェアベンダの経験を経て、Twitterでは日本で1人目のエンジニア職に就く。現在はJetBrainsの総代理店である株式会社サムライズムの代表取締役社長。
山本, 裕介, pub.2011
杉山 貴章
杉山 貴章 有限会社オングスにて、Javaを中心としたソフトウェア開発や、プログラミング関連書籍の執筆、IT 系の解説記事やニュース記事の執筆などを手がける。また、専門学校の講師としてプログラミングやソフトウェア開発の基礎などを教えている。著書・共著書に、『Javaアルゴリズム+データ構造完全制覇』(共著、技術評論社)、『正規表現書き方ドリル』(技術評論社)など多数。
杉山, 貴章