AI コーディングというやつをやってみたかったのです。
前提
- OS: Windows 11 Pro 23H2 ビルド 22631.5039
- Docker Desktop: Version 4.37.1 (178610)
- WSL2 の Ubuntu 24.04 から WSL Integration で Docker Desktop
を利用
- Java プロジェクトを作って、 Hello,World! するのが目標
- Claude Code のアカウントを作って $5 入金済み
devcontainer
用のファイル作成
.devcontainer/devcontainer.json
- Maven の Java プロジェクトを作りたいので、 devcontainer の features
を利用してインストール
- Claude Code に Node が必要なので、 devcontainer の features
を利用してインストール
{
"name": "app",
"image": "mcr.microsoft.com/devcontainers/base",
"features": {
"ghcr.io/devcontainers/features/node:1": {},
"ghcr.io/devcontainers/features/java:1": {
"version": "21",
"installGradle": "false",
"installMaven": "true"
}
}
}
.devcontainer/devcontainer.vim.json
devcontainer.vim config -g > .devcontainer/devcontainer.vim.json
で生成したものそのまま使う
{
"remoteEnv": {
"EDITOR": "~/squashfs-root/AppRun",
"PAGER": "sed -r 's/\\x1B\\[[0-9;]*[mGKH]//g' | ~/squashfs-root/AppRun -R -",
"LESSCHARSET": "utf-8",
"SHELL": "bash",
"TERM": "xterm-256color",
"HISTCONTROL": "erasedups",
// If use WSLG
// "DISPLAY": "${localEnv:DISPLAY}",
// "WAYLAND_DISPLAY": "${localEnv:WAYLAND_DISPLAY}",
// "XDG_RUNTIME_DIR": "${localEnv:XDG_RUNTIME_DIR}",
// "PULSE_SERVER": "${localEnv:PULSE_SERVER}",
},
// devcontainer/cli はまだ forwardPorts に対応していないため、
// 必要に応じて forwardPorts の定義を appPort に転記する。
// ※ コンテナ側で Listen する際は、 `127.0.0.1` **ではなく** `0.0.0.0` で Listen すること。
// "appPort": [
// ],
// Linux で実行する場合には、 runArgs をコメントアウトし、コンテナからホストへの接続ができるようにしてください
//"runArgs": [
// "--add-host=host.docker.internal:host-gateway"
//],
"mounts": [
{
"type": "bind",
"source": "${localEnv:HOME}/.vim",
"target": "/home/vscode/.vim"
},
{
"type": "bind",
"source": "${localEnv:HOME}/.gitconfig",
"target": "/home/vscode/.gitconfig"
},
{
"type": "bind",
"source": "${localEnv:HOME}/.ssh",
"target": "/home/vscode/.ssh"
},
// If use host's bashrc
//{
// "type": "bind",
// "source": "${localEnv:HOME}/.bashrc",
// "target": "/home/vscode/.bashrc"
//},
// If use WSLG
//{
// "type": "bind",
// "source": "/tmp/.X11-unix",
// "target": "/tmp/.X11-unix"
//},
//{
// "type": "bind",
// "source": "/mnt/wslg",
// "target": "/mnt/wslg"
//},
],
// denops など、別の実行環境が必要な場合や、
// 後乗せで追加したいツールがある場合には以下の対象行をコメントアウトするか
// https://containers.dev/features から必要な feature を探して追加してください。
//"features": {
// "ghcr.io/devcontainers-community/features/deno:1": {}
// "ghcr.io/devcontainers/features/node:1": {}
// "ghcr.io/devcontainers/features/python:1": {}
// "ghcr.io/devcontainers/features/ruby:1": {}
// "ghcr.io/devcontainers-extra/features/fzf:1": {}
// "ghcr.io/jungaretti/features/ripgrep:1": {}
// "ghcr.io/devcontainers/features/docker-outside-of-docker:1": {},
// "ghcr.io/devcontainers/features/docker-in-docker:2": {}
//}
}
開発環境の起動
Claude Code
のインストール・初期設定
インストール
Vim でターミナルを開き、以下コマンドを実行。
npm install -g @anthropic-ai/claude-code
初期設定
Vim でターミナルを開き、以下コマンドを実行。
- 表示のカラースタイルを聞かれるので答える(僕は
Light text
にした)
- ログイン処理 2.1 Enter 押下で表示される URL
にアクセスし、ログインを行う 2.2
ログイン完了後に表示されるコードをターミナルにペーストし、 Enter
Yes, proceed
まで Enter を押し続ける
- プロンプト入力画面が表示される
あとはここにやって欲しいことを入力していくだけ。
実装
プロジェクトの作成
claude へ次の命令を入力する。
Maven の Java プロジェクトを作り、 Hello, World! を表示したい。 Java のバージョンは 21 とすること。
今回は、以下のような処理を行ってくれた。
mkdir -p src/main/java/com/example
pom.xml
の作成
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.example.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
App.java
の作成
package com.example;
public class App {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
コンパイル(mvn compile
)
実行(mvn exec:java -Dexec.mainClass="com.example.App"
)
完了報告(Maven プロジェクトが正常に作成され、「Hello, World!」が表示されました。Java 21 を使用する Maven プロジェクトの基本構造を作成しました。
)
良い感じ。
…devcontainer.vim
特有のことが無かった気がするけれど、
Claude Code が使えたのでヨシ!
以上。
参考資料