はじめに
自己紹介
皆さん、こんにちは、Udemy講師の斉藤賢哉です。私はこれまで、約30年にわたって企業システムの開発に携わってきました。現在も現役のアーキテクトとして、重要システムの技術設計やソリューションの選定を担当しています。直近では、システム開発へのAI適用(AI駆動開発)という全社的な施策でリーダーを務めています。
セミナーでの登壇や雑誌への技術記事の寄稿を行ってきたほか、以下の書籍も執筆しています。
- 「マスタリング Java EE 5」(翔泳社、2007年)
- 「アプリケーションアーキテクチャ設計パターン」(技術評論社、2017年)
- 「Javaエンジニアのためのソフトウェアテスト実践入門」(技術評論社、2024年)
Udemy講座のご紹介
この記事の内容は、私が講師を務めるUdemy講座『新 Java Basic編 / AI対応版』の一部の範囲をカバーしたものです。『新 Java Basic編 / AI対応版』はこちらのリンクから購入できます。
この講座は、以下のような皆様にお薦めします。
- AIが書いたJavaのコードを読んで、正しさと設計の良し悪しを判断できるようになりたい方
- 新人のシステムエンジニアとして、Javaの基礎を仕組みから身に付けたい方
- AIを前提とした開発へ学び直し(リスキリング)をしたい方
- 「Oracle認定Javaプログラマ」の取得を目指し、Javaの基礎を固めたい方
AIとチャットできるオールインワンの学習環境をリリースしました
Udemy講座の演習を動かすための学習環境として、Windows向けのデスクトップアプリ「Codinable(コーディナブル)」をリリースしました。
エディタ、実行結果、テスト結果、SQL、Webブラウザ、そしてAIチャットを1つの画面にまとめた、オールインワンの学習環境です。
学習に必要なものは、すべてCodinableの中で完結します。
- 演習の実行環境(Java 25、Gradle、Bashなど)が一式同梱されており、JDKのインストールや環境変数の設定は不要です
- インストールして「新規コース開始・再開」からコースを選ぶだけで、講座のすべての演習がそのまま動きます
- 書き換えて動かなくなっても、「初期化」で配布時の状態に戻せます
- 開いている演習のファイルと実行結果を踏まえて、AIに質問したり(Askモード)、ファイルの書き換えを指示したり(Agentモード)できます
AIに書き換えを指示し、差分を確かめてから実行する、というAI駆動開発の基本の流れを、Codinableの中だけで安全に体験できます。
AIチャットは、受講者ご自身が生成AIサービス(Anthropic、OpenAI、Googleのいずれか)のAPIキーを登録して使うBYOK(Bring Your Own Key)方式です。利用料金は各社から直接請求されます。APIキーを登録しなくても、AIチャット以外の機能はすべて使えます。
Codinableのインストーラは、以下のGitHubのReleasesページからダウンロードできます(64ビット版のWindows 10/11、管理者権限は不要)。
この記事を含むシリーズ全体像
この記事はJava SEの一部の機能・仕様を取り上げたものですが、一連のシリーズになっており、シリーズ全体でJava SEを網羅しています。また認定資格である「Oracle認定Javaプログラマ」(Silver、Gold)の範囲もカバーしています。シリーズの全体像および「Oracle認定Javaプログラマ」の範囲との対応関係については、以下を参照ください。
1.4 JDKとJavaの開発環境
チャプターの概要
チャプター1.3では、Javaのソースコードがバイトコードにコンパイルされ、JVMの上で実行される仕組みを整理しました。本チャプターでは、そのコンパイルと実行を担うツールキットであるJDKの構成と、Codinableが備える開発支援の仕組み、AIが示したAPIを裏付けるためのAPIリファレンスを取り上げます。
1.4.1 JDKの構成
本レッスンでは、JDKを構成する要素と、JDKの場所をツールが見つける仕組みを整理します。
JDKとJavaランタイム
JDK(Java Development Kit)とは、Javaのプログラムを開発するための基本的なツールキットです。クラスライブラリとJVMを合わせたものをJavaランタイム(JRE:Java Runtime Environment)と呼び、JDKは、Javaランタイムにコンパイラ(javacコマンド)などの開発ツールを加えたものです。
- 最も外側のJDK(Java Development Kit)が、全体を包む
- JDKの中のJavaランタイム(JRE)は、JVM(実行環境)とクラスライブラリ(API)から成る
- コンパイラなどの各種ツール(javac、jar、javadocなど)は、JDKの中でJavaランタイムの外にある
- Javaランタイムは「JVM+クラスライブラリ」、JDKは「Javaランタイム+開発ツール」である
Java 11以降、Oracle社はJREを単独では提供しておらず、開発でも実行でもJDKを使うのが基本です。JDKにはOracle JDKのほか、OpenJDKを基にしたEclipse Temurinなどのディストリビューションがあり(チャプター1.3参照)、本コースで扱う範囲では、どれを使ってもプログラムの動作は変わりません。
JDKのディレクトリ構成
JDKを単独で入手した場合は、ZIPファイルなどを任意のディレクトリに展開して使います。展開したJDKの主なディレクトリの構成を図で整理します。
- 最上位に「jdk-25(JDKのホームディレクトリ)」がある
- その下に「bin」「lib」「conf」の3つのディレクトリが並ぶ
- 「bin」には「javac(コンパイラ)」「java(実行コマンド)」「jar」「javadoc」などのコマンドが入る
- 「lib」には「クラスライブラリ」と「JVM本体」が入る
- 「conf」には「設定ファイル」が入る
- Java 8までのJDKにあった「jre」ディレクトリは、現在のJDKには無い
PATHとJAVA_HOME
JDKを単独でインストールした場合は、binディレクトリを環境変数PATHに追加し、JDKのホームディレクトリを環境変数JAVA_HOMEに設定するのが一般的です。2つの環境変数の役割を図で整理します。
- 左上の「ターミナルで
javacと入力」から、「PATH」を経由して「jdk-25/bin/javac」へ矢印が伸びる - 左下の「ビルドツール・アプリケーションサーバー」から、「JAVA_HOME」を経由して「jdk-25(ホームディレクトリ)」へ矢印が伸びる
- PATHは「コマンド名だけで実行するため」、JAVA_HOMEは「ソフトウェアがJDKの場所を知るため」と書かれている
- 右端に「Codinableは同梱のJDKの場所を内部で管理する(設定は不要)」という注記がある
本コースではCodinableがJDKの場所を管理するため、PATHやJAVA_HOMEを設定する必要はありません。開発の現場で「コマンドが見つからない」「別のバージョンのJDKが使われている」といったトラブルに出会ったときは、この2つの設定を確かめます。
1.4.2 開発環境とAPIリファレンス
本レッスンでは、Codinableのエディターが誤りを示す仕組みと、AIが示したAPIを裏付ける方法を整理します。
Codinableの開発支援の仕組み
統合開発環境(IDE:Integrated Development Environment)とは、コーディング、コンパイル、実行、デバッグといった作業を1つのツールで行える開発ツールです。Javaの代表的なIDEには、IntelliJ IDEA、Eclipse、Apache NetBeansがあり、Javaの拡張機能を組み込んだVisual Studio Code(VS Code)も広く使われています。本コースで使うCodinableの構成を図で整理します。
- 中央に「エディター」があり、その下に「Eclipse JDT LS(Javaの言語サーバー)」がつながる
- Eclipse JDT LSからエディターへ「補完」「診断(エラーの表示)」「定義へのジャンプ」の3つの機能が返る
- エディターの右上に「▶ 実行」があり、「同梱のJDK 25」へつながる
- 右側に「AIチャット(Ask/Agent)」がある
- 枠の外に「ステップ実行のデバッガー(Codinableには無い。IntelliJ IDEAやVS Code、EclipseなどのIDEが備える)」がある
Codinableには、処理を1行ずつ止めながら実行するステップ実行のデバッガーはありません。本コースでは、実行結果とエラーメッセージを読み、原因を絞り込む考え方を取り上げます(チャプター14.1参照)。
APIリファレンスによる裏付け
Java SEが提供するAPIの使い方は、APIリファレンスと呼ばれるHTML形式のドキュメントで確認できます。Java 25のAPIリファレンスは、Oracle社の次のサイトで公開されています。
https://docs.oracle.com/en/java/javase/25/docs/api/
APIリファレンスでは、クラスがモジュールとパッケージという2段階のグループで分類されています。Stringクラスのページにたどり着くまでの階層を図で整理します。
- 上から下へ4段の階層が並ぶ
- 1段目は「モジュール: java.base」
- 2段目は「パッケージ: java.lang」
- 3段目は「クラス: String」
- 4段目は「メソッド: length()、toUpperCase()など」で、引数、戻り値の型、投げる例外、非推奨かどうかが書かれている
- 右側に「ページ上部の検索欄から直接開くこともできる」という注記がある
APIリファレンスは、ソースコードの/** */形式のコメントからjavadocコマンドで生成されています(チャプター21.4参照)。AIは、実在しないメソッドや、引数の型が異なるメソッドを示すことがあります。AIが書いたコードで見慣れないAPIに出会ったら、APIリファレンスで裏付けを取ります。
レビューの観点
- AIが使ったメソッドが、そのクラスに実在するかをAPIリファレンスで確かめる
- 戻り値の型と、投げる例外の扱いがAPIリファレンスの記載と合っているか
- APIリファレンスで非推奨(Deprecated)とされているAPIを使っていないか
- エディターの診断でエラーが出ていないことは、文法と型が正しいことしか示さない点を踏まえているか
このチャプターで学んだこと
本チャプターでは、以下を取り上げました。
- JDKがJavaランタイム(JVMとクラスライブラリ)と開発ツールから構成されること
- JDKのディレクトリ構成と、PATHとJAVA_HOMEがそれぞれコマンドとJDKの場所を見つけるための設定であること
- Codinableのエディターが言語サーバーによる補完・診断・定義へのジャンプを備え、ステップ実行のデバッガーは備えないこと
- APIリファレンスをモジュール、パッケージ、クラスの順にたどり、AIが示したAPIを裏付ける方法






