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

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

紙版発売
電子版発売

B5変形判/512ページ

定価3,278円(本体2,980円+税10%)

ISBN 978-4-297-12685-8

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

本書では,プログラミングを仕事にしたい,エンジニアとして働きたい方,およびほかの言語で開発しているがJavaも使えるようになりたいという方を対象に,Javaでプログラミングができるようになるための解説をわかりやすく丁寧に行います。

Javaは,企業システムの構築を得意とするプログラミング言語で,銀行でお金を振り込む,宅配便で荷物を送るといった業務システムで多く使われているほか,検索サイトやSNS,買い物サイトなどサービスの構築でも広く使われています。多くの業務システムで利用されており,Javaプログラマーの人材募集も多いことから,Javaエンジニアになりたい人も比較的多いという状況があります。本書では,そうした中でプロとしてJava開発に携われるようになるために必要なプログラミングの知識をゼロから解説しています。Javaをすでに使っているがもっとプログラムをきちんと書けるようになりたいという人にもおすすめです。

多くの「プログラミングの入門書」では,プログラミング言語の構文は丁寧に解説されていますが,プログラムの書き方の説明はあまりありません。本書ではJavaを対象として,プログラミングに入門できるように解説しています。プログラムを作るという体験を通して,プログラムが動くことの楽しさやまた難しさを感じてもらえることを目標としています。自転車に乗れるようになるために何が必要かというと,自転車のパーツの名前や働き,原理を知ることではありません。自転車に実際に乗って,何度かこけそうになったりこけたりして,徐々にうまく乗ることができるようになるものです。プログラミングも技能なので,文法を覚えてライブラリの使い方を知るだけではプログラムが組めるようにはなりません。実際にプログラムを組んで,動かなかったり動いたりしながら徐々にうまくプログラムが組めるようになります。本書ではこうしたプログラムの組み方をわかりやすく解説します。

本書では,第1部「Javaを始める準備」では,Javaの基本および開発環境のインストール方法について解説します。第2部「Javaの基本」では,JShellを使って基本的な計算や変数,標準API,GUI開発について解説します。第3部「Javaの文法」では,条件分岐と繰り返し,データ構造,メソッドについて解説します。第4部「高度なプログラミング」では,ファイルやネットワークでの入出力と例外,処理の難しさ,クラスとインタフェースを使ったプログラムの構成について解説します。第5部「ツールと開発技法」では,Maven,Javadoc,JUnit,IDE,バージョン管理,Gitについて解説します。第6部「Webアプリケーション開発」では,Spring Bootやデータベースを用いたWebアプリケーション開発について解説します。

本書で,プロとして仕事ができるためのJavaの基礎をしっかりと習得していきましょう。

こんな方におすすめ

  • 開発現場で使えるJava開発のノウハウを身に付けたい方
  • Javaによる開発を業務で行っている方

この書籍に関連する記事があります!

いまJavaを学ぶ理由
本書では、プログラミングを仕事にしたい、エンジニアとして働きたい方、およびほかの言語で開発しているがJavaも使えるようになりたいという方を対象に、Javaでプログラミングができるようになるための解説をわかりやすく丁寧に行います。

本書のサンプル

本書の一部ページを,PDFで確認することができます。

目次

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

第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.2 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の総代理店である株式会社サムライズムの代表取締役社長。


杉山貴章(すぎやまたかあき)

有限会社オングスにて,Javaを中心としたソフトウェア開発や,プログラミング関連書籍の執筆,IT 系の解説記事やニュース記事の執筆などを手がける。また,専門学校の講師としてプログラミングやソフトウェア開発の基礎などを教えている。著書・共著書に,『Javaアルゴリズム+データ構造完全制覇』(共著,技術評論社),『正規表現書き方ドリル』(技術評論社)など多数。