概要
本書では,プログラミングを仕事にしたい,エンジニアとして働きたい方,およびほかの言語で開発しているが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による開発を業務で行っている方
サポート
補足情報
練習問題の解答について
(2022年7月15日更新)
本書に掲載している「練習問題」の解答を下記にて掲載します。
正誤表
本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。
P.32:「プロジェクト形式の選択」
最新版のIntelliJ IDEAでは新規プロジェクトのダイアログのデザインが少し異なっています。
紙面のスクリーンショットを参考にすると,「Maven Archtype」を選んでしまいがちですが,下記のように一番上の「新規プロジェクト」を選択してください。

P.458:■application. propertiesファイルに設定を追加
誤 |
spring.datasource.initialization-mode=always
|
正 |
spring.sql.init.mode=always
|
※spring.datasource.initialization-modeは最新版では廃止されました。
訂正情報
※電子版では修正済み
P.v:本文6行目
誤 |
設定によっては「\」が「¥」が |
正 |
設定によっては「\」が「¥」 |
「が」が不要です。
P.4:本文下から4行目
誤 |
Java Development Environment |
正 |
Java Development Kit |
P.21:本文3行目
「0」が不要です。
P.21:本文4行目
「0」が不要です。
P.28:最下部「MEMO」欄
誤 |
この本では、以降の解説は日本語化を行った状態のIntelliJIDEAの画面で行っていますが、英語表記で困らない方、またはスキルアップのため英語に慣れたい方は是非英語のままで利用してみてください。 |
正 |
この本では、以降は日本語化を行った状態のIntelliJ IDEAの画面を掲載しています。英語表記で困らない方や、スキルアップのため英語に慣れたい方は是非英語のままで利用してみてください。
一周目を日本語で演習し、二周目は英語で演習することで英語に慣れていく方法もお勧めです。 |
P.32:本文下から6行目
誤 |
Software Development Tool |
正 |
Software Development Kit |
P.88:「練習3.」
誤 |
String.formatted("%tY年", today)を |
正 |
String.format("%tY年", today)を |
P.153:本文4行目
誤 |
student ==> [kis, math, 80]
|
正 |
|
P.177:本文10行目
誤 |
System.out.print("o".repeat(i));
|
正 |
System.out.print("O".repeat(i));
|
P.188:src/main/java/projava/ForEachListSample.java 2行目
誤 |
package projava;
public class ForEachListSample {
|
正 |
package projava;
import java.util.List;
public class ForEachListSample {
|
P.236:実行結果
P.272:図13.1キャプション
P.309:「14.3.3 コメント」前のパラグラフ
誤 |
このときIntelliJ IDEAのリファクタリング機能が使えます。リファクタリング機能については、第19章「IntelliJ IDEAを使いこなす」で説明します。クラスが多くなってきたらパッケージに分類します。何度か経験すると、最初からある程度の目安がつくでしょう。 |
正 |
クラスが多くなってきたらパッケージに分類します。何度か経験すると、最初からある程度の目安がつくでしょう。IntelliJ IDEAでは[Ctrl] + [Alt] + [Shift] + [T]([Ctrl] + [T])を押すと、このような構成の変更を行う「リファクタリング」機能を呼びだすことができます。 |
P.320:図15.7キャプション
誤 |
インスタンス化できない |
正 |
インスタンス化できないことを示すエラー |
P.325:src/main/java/projava/DiffSampleInherit.java P.325の17行目,19行目
誤 |
var image = new BufferedImage(600, 400, BufferedImage.TYPE_INT_RGB);
var graphics = image.createGraphics();
graphics.drawLine(10, 10, 400, 300);
|
正 |
var image = new BufferedImage(250, 200, BufferedImage.TYPE_INT_RGB);
var graphics = image.createGraphics();
graphics.drawLine(10, 10, 220, 180);
|
P.325:src/main/java/projava/DiffSampleInherit.java P325の23行目、25行目
誤 |
var image = new BufferedImage(600, 400, BufferedImage.TYPE_INT_RGB);
var graphics = image.createGraphics();
graphics.drawRect(10, 10, 400, 300);
|
正 |
var image = new BufferedImage(250, 200, BufferedImage.TYPE_INT_RGB);
var graphics = image.createGraphics();
graphics.drawRect(10, 10, 220, 180);
|
P.326:グレー背景箇所の1行目,3行目
誤 |
var image = new BufferedImage(600, 400, BufferedImage.TYPE_INT_RGB);
var graphics = image.createGraphics();
graphics.drawLine(10, 10, 400, 300); // ここだけ違う
|
正 |
var image = new BufferedImage(250, 200, BufferedImage.TYPE_INT_RGB);
var graphics = image.createGraphics();
graphics.drawLine(10, 10, 220, 180); // ここだけ違う
|
P.326:■src/main/java/projava/DiffSampleInherit.java(1つめ)
誤 |
var image = new BufferedImage(600, 400, BufferedImage.TYPE_INT_RGB);
|
正 |
var image = new BufferedImage(250, 200, BufferedImage.TYPE_INT_RGB);
|
P.326:■src/main/java/projava/DiffSampleInherit.java(2つめ)
誤 |
g.drawLine(10, 10, 400, 300);
|
正 |
g.drawLine(10, 10, 220, 180);
|
P.327:■src/main/java/projava/DiffSampleInherit.ja(1つめ)
誤 |
BufferedImage lineImage() {
|
正 |
static BufferedImage lineImage() {
|
P.327:■src/main/java/projava/DiffSampleInherit.ja(2つめ)
誤 |
g.drawRect(10, 10, 400, 300);
|
正 |
g.drawRect(10, 10, 220, 180);
|
P.327:■src/main/java/projava/DiffSampleInherit.ja(2つめ)
誤 |
BufferedImage rectImage() {
|
正 |
static BufferedImage rectImage() {
|
P.327:■src/main/java/projava/DiffSampleInherit.ja(3つめ)
誤 |
BufferedImage lineImage() {
|
正 |
static BufferedImage lineImage() {
|
P.327:■src/main/java/projava/DiffSampleInherit.ja(3つめ)
誤 |
g.drawLine(10, 10, 400, 300);
|
正 |
g.drawLine(10, 10, 220, 180);
|
P.328:■src/main/java/projava/DiffSampleInherit.java(1つめ)
誤 |
var image = new BufferedImage(600, 400, BufferedImage.TYPE_INT_RGB);
|
正 |
var image = new BufferedImage(250, 200, BufferedImage.TYPE_INT_RGB);
|
P.328:■src/main/java/projava/DiffSampleInherit.java(2つめ)
誤 |
BufferedImage lineImage() {
|
正 |
static BufferedImage lineImage() {
|
P.328:■src/main/java/projava/DiffSampleInherit.java(2つめ)
誤 |
g.drawLine(10, 10, 400, 300);
|
正 |
g.drawLine(10, 10, 220, 180);
|
P.329:■src/main/java/projava/DiffSampleInherit.java(1つめ)
誤 |
BufferedImage lineImage() {
|
正 |
static BufferedImage lineImage() {
|
P.331:■src/main/java/projava/DiffSampleInherit.java(2つめ)
誤 |
BufferedImage createImage(Consumer drawer) {
|
正 |
static BufferedImage createImage(Consumer drawer) {
|
P.332:■src/main/java/projava/DiffSampleInherit.java
誤 |
BufferedImage lineImage() {
return createImage(g -> g.drawLine(10, 10, 400, 300));
}
BufferedImage rectImage() {
return createImage(g -> g.drawRect(10, 10, 400, 300));
}
|
正 |
static BufferedImage lineImage() {
return createImage(g -> g.drawLine(10, 10, 220, 180));
}
static BufferedImage rectImage() {
return createImage(g -> g.drawRect(10, 10, 220, 180));
}
|
P.356:本文4行目
誤 |
図17.5がjava.util.ListのJavadocです。 |
正 |
するとjava.util.ListクラスのJavadocのページにジャンプします(図17.5)。 |
P.371:本文2行目
誤 |
バグを健在化させることができる |
正 |
バグを顕在化させることができる |
P.388:本文最終行
誤 |
て使いこなせるようにしておきましょう。 |
正 |
て使いこなせるようにしておきましょう。最後に補完関連操作で紹介したIntelliJ IDEAのショートカットを表19.1に挙げておきます。 |
P.421:表21.1 設定項目「Spring Boot」の「設定値」
誤 |
2.6.3、または「SNAPSHOT」や |
正 |
デフォルト、または「SNAPSHOT」や |
P.428:「プロジェクトを実行する」の下2行目
誤 |
〜右側にある再生アイコンを |
正 |
〜右側にある実行アイコンを |
P.428:図21.17 キャプション
誤 |
プロジェクトの再生アイコン |
正 |
プロジェクトの実行アイコン |
P.444:図21.31
P.444:図21.31
誤 |
Javaプログラム |
正 |
Javaプログラムで用意したデータ |