5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

2.2 Codinableによる基本的な開発~新Java Basic編 / AI対応版

5
Last updated at Posted at 2023-02-04

はじめに

自己紹介

皆さん、こんにちは、Udemy講師の斉藤賢哉です。私はこれまで、約30年にわたって企業システムの開発に携わってきました。現在も現役のアーキテクトとして、重要システムの技術設計やソリューションの選定を担当しています。直近では、システム開発へのAI適用(AI駆動開発)という全社的な施策でリーダーを務めています。
セミナーでの登壇や雑誌への技術記事の寄稿を行ってきたほか、以下の書籍も執筆しています。

Udemy講座のご紹介

この記事の内容は、私が講師を務めるUdemy講座『新 Java Basic編 / AI対応版』の一部の範囲をカバーしたものです。『新 Java Basic編 / AI対応版』はこちらのリンクから購入できます。

この講座は、以下のような皆様にお薦めします。

  • AIが書いたJavaのコードを読んで、正しさと設計の良し悪しを判断できるようになりたい方
  • 新人のシステムエンジニアとして、Javaの基礎を仕組みから身に付けたい方
  • AIを前提とした開発へ学び直し(リスキリング)をしたい方
  • 「Oracle認定Javaプログラマ」の取得を目指し、Javaの基礎を固めたい方

AIとチャットできるオールインワンの学習環境をリリースしました

Udemy講座の演習を動かすための学習環境として、Windows向けのデスクトップアプリ「Codinable(コーディナブル)」をリリースしました。
エディタ、実行結果、テスト結果、SQL、Webブラウザ、そしてAIチャットを1つの画面にまとめた、オールインワンの学習環境です。

Codinableの画面構成

学習に必要なものは、すべてCodinableの中で完結します。

  • 演習の実行環境(Java 25、Gradle、Bashなど)が一式同梱されており、JDKのインストールや環境変数の設定は不要です
  • インストールして「新規コース開始・再開」からコースを選ぶだけで、講座のすべての演習がそのまま動きます
  • 書き換えて動かなくなっても、「初期化」で配布時の状態に戻せます
  • 開いている演習のファイルと実行結果を踏まえて、AIに質問したり(Askモード)、ファイルの書き換えを指示したり(Agentモード)できます

AIに書き換えを指示し、差分を確かめてから実行する、というAI駆動開発の基本の流れを、Codinableの中だけで安全に体験できます。

AIチャットに書き換えを指示し、差分を確かめて実行する

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プログラマ」の範囲との対応関係については、以下を参照ください。

2.2 Codinableによる基本的な開発

チャプターの概要

チャプター2.1では、JDKのコマンドを使い、ソースファイルのコンパイルからクラスファイルの実行までの仕組みを確かめました。本チャプターでは、Codinableで同じ流れを進める方法として、エディターが誤りを示す仕組みと、本コースの基本の流れである「AIに書かせる → 受講者がレビューする → ▶ 実行で確かめる」を取り上げます。以降のチャプターの「このチャプターにおけるAI活用」は、すべてこの流れで進めます。

2.2.1 エディターと「▶ 実行」の仕組み

本レッスンでは、Codinableのエディターと「▶ 実行」が、それぞれどの種類の誤りをいつ示すのかを整理します。

画面構成

02_helloの演習を選び、srcフォルダーのHello.javaを開くと、チャプター2.1のHelloクラスがエディターに表示されます(画面構成はチャプター1.2参照)。出力欄の「実行結果」が、コンソールの役割を果たします。

エディターの支援機能

エディターでは、Javaの言語サーバー(Eclipse JDT LS)がソースコードを解析し、補完、診断(エラーの表示)、定義へのジャンプを行います。この関係を図で整理します。

エディターと言語サーバーの関係

  • 左に「エディター(Hello.java)」、右に「Eclipse JDT LS(言語サーバー)」がある
  • エディターから言語サーバーへ「入力中のソースコード」が渡る
  • 言語サーバーからエディターへ「補完の候補」「診断(エラーの位置と内容)」「定義の場所」の3つが返る
  • 言語サーバーの下に「JDK 25のクラスライブラリ」があり、StringやSystemの情報を参照する

AIが書いたコードで見慣れないメソッドがあれば、定義へジャンプして実装を確かめます。

誤りが示される段階

エディターの診断と「▶ 実行」では、示される誤りの種類が異なります。誤りが示される段階を図で整理します。

診断・コンパイル・実行で示される誤り

  • 左から右へ「入力中(診断)」「▶ 実行: コンパイル」「▶ 実行: 実行」「実行結果の確認」の4つの段階が並ぶ
  • 「入力中(診断)」の下に「文法と型の誤り(例: ;の付け忘れ、存在しないメソッド)」があり、エディターに示される
  • 「▶ 実行: コンパイル」の下に「診断と同じ種類の誤り。あるとプログラムは実行されない」がある
  • 「▶ 実行: 実行」の下に「実行時の誤り(例: mainメソッドが見つからない、例外)」がある
  • 「実行結果の確認」の下に「出力が期待と違う」があり、「受講者が期待と比べて初めて分かる」と書かれている

「▶ 実行」は、チャプター2.1でjavacとjavaの2段階で行った作業を、同梱のJDKで1回の操作で行います。

Codinableの「▶ 実行」で行われるコンパイルと実行

  • エディターで開いたソースファイル(Hello.java)に対して「▶ 実行」を選択する
  • ①コンパイル(javacに相当)によって、クラスファイル(Hello.class)が作られる
  • ②実行(javaに相当)によって、クラスファイルが同梱のJDK 25のJVMで動作する
  • JVMの標準出力は、出力欄に実行結果「Hello, World!」として表示される

2.2.2 AIに書かせ、レビューし、実行して確かめる

本レッスンでは、本コースの演習の基本の流れを、新しいクラスを作らせる例で確かめます。

基本の流れ

Agentモードはプログラムを実行できないため、AIが書いたコードを判断し、実行して確かめるのは受講者です。基本の流れを図で整理します。

AIに書かせ、レビューし、実行して確かめる流れ

  • 左から右へ4つの段階が並ぶ
  • ①「指示する」: Agentモードに、作るクラス名、出力する内容、置く場所を具体的に書く
  • ②「差分をレビューする」: 変更されたファイルと行を読み、指示どおりか、余計な変更が無いかを確かめる
  • ③「▶ 実行する」: 受講者が選択する
  • ④「期待と比べる」: 実行結果を、指示した時点で決めておいた期待の結果と比べる
  • ④で食い違った場合は、実行結果をAIに渡して指示し直すか、「元に戻す」を選択して①へ戻る

期待を決めずに実行すると、出力が間違っていても気付けません。

新しいクラスを作らせる例

Agentモードに、次のように指示します。

02_helloのsrcフォルダーに、「Hello, Java!」と表示するHello2クラスを作成して

期待する結果は、Hello2.javaというファイルができ、▶ 実行でHello, Java!と表示されることです。AIが作成するコードは、たとえば次のようになります。

class Hello2 {
    public static void main(String[] args) {
        System.out.println("Hello, Java!");
    }
}
  • ファイル名Hello2.javaとクラス名Hello2が一致している
  • mainメソッドの宣言がpublic static void main(String[] args)になっている
  • インデントが空白4文字単位で、ブロックの入れ子と一致している

差分を読むときに確かめる点を図で整理します。

差分のレビューで確かめる3つの点

  • 上から下へ3つの確認項目が並び、それぞれにチェックボックスが付く
  • ①「変更されたファイルは指示どおりか」: 例「Hello2.javaが新規に作られ、Hello.javaは変わっていない」
  • ②「変更された行は意図どおりか」: 例「クラス名、mainメソッド、出力する文字列」
  • ③「指示していない変更が無いか」: 例「他のファイルの書き換え、不要なimport、余計なコメント」
  • 3つとも確かめてから「▶ 実行」へ進む矢印が下端にある

差分を確かめたら、Hello2.javaを開いて「▶ 実行」を選択し、実行結果にHello, Java!と表示されることを確かめます。

変更の取り消し

Agentモードの変更は差分の表示の「元に戻す」で、演習全体は「↺ 初期化」で取り消せます。開発の現場では、Gitなどのバージョン管理システムで変更の履歴を管理し、AIの変更もその履歴の1つとしてレビューします。

レビューの観点

  • 実行する前に、期待する結果を決めているか
  • 差分で、変更されたファイル・行と、指示していない変更の有無を確かめているか
  • ファイル名とクラス名、mainメソッドの宣言、インデントがチャプター2.1の規則に沿っているか
  • エディターの診断にエラーが無いことだけで、正しいと判断していないか

このチャプターで学んだこと

本チャプターでは、以下を取り上げました。

  1. Codinableのエディターが言語サーバーによって補完・診断・定義へのジャンプを行う仕組み
  2. 診断とコンパイルで見つかる誤り、実行して見つかる誤り、期待と比べて初めて分かる誤りの違い
  3. 「▶ 実行」が、同梱のJDKによるコンパイルと実行をまとめて行うこと
  4. AIに書かせ、差分をレビューし、自分で実行して期待と比べるという本コースの基本の流れ
  5. 「元に戻す」と「↺ 初期化」による変更の取り消しと、バージョン管理システムの役割
5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?