6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM BobでLibertyアプリ作ってみた

Last updated at Posted at 2025-12-23

IBM Bobを使用してWebSphere Libertyの簡単なアプリケーションを作成してみたので、その体験についてまとめました。

Bobは2025/12/23現在、こちらからアクセス申請可能です。
https://www.ibm.com/products/bob#Form

環境の準備

今回は無償版のOpenLibertyでアプリケーションを作成しました。
こちらから雛形をダウンロード可能です。
https://openliberty.io/start/

今回はJava 21を使用します。
image.png

こちらがBobの画面です。
image.png

Bobでは、いくつかのモードを選択することができます。

  • Askモード: Bobに質問する
  • Planモード: 計画を作成する
  • Codeモード: コードを実装する
  • Advancedモード: 複雑な実装・高度な技術タスク

今回はまずPlanモードを使用し、どういったアプリケーションを作成するかをBobと対話しながら決定していきます。
image.png

Planモードによる計画の作成

今回はチャットに以下のようなプロンプトを入力しました。

Libertyのサンプルアプリを作りたい。
重要/重要でない、緊急/緊急でないの4象限でタスクを管理できるTODOリストが作りたいです。

その結果、Bobはまず現在のプロジェクト構造を確認するための許可を求めてきました。

image.png

Bobでは勝手にコマンドを実行しないよう、コマンド単位で承認の有無を設定することが可能です。
また、.bobignoreファイルを使用することで、Bobがアクセスまたは変更しないファイルやディレクトリを指定できます。

次に、実装方針について選択肢を提示してきました。

(元々想定していなかった選択肢についても考慮することができるので、これはありがたいですね。)

image.png

image.png

今回はサンプルアプリなので、以下の内容を選択しました。

  • REST API + シンプルなHTML/JavaScript フロントエンドで実装
  • メモリ内保存(DB接続なし)

その結果として、以下のように今回実装するアプリケーションに関するドキュメントが生成されました。

Bobとの対話を進めることで、最初は何となくでイメージしていた私の雑なプロンプトをベースに、細かくアプリの要件が決まりました。

## プロジェクト概要
- フレームワーク: Open Liberty (Jakarta EE 10 + MicroProfile 7.0)
- Java バージョン: 21
- アーキテクチャ: REST API + シンプルなHTML/JavaScript SPA
- データ永続化: メモリ内保存(ConcurrentHashMap)

## アプリケーション機能
アイゼンハワーマトリックスに基づく4象限でタスクを管理:

1. 重要 & 緊急 - すぐに対応すべきタスク
2. 重要 & 緊急でない - 計画的に取り組むタスク
3. 重要でない & 緊急 - 委譲を検討すべきタスク
4. 重要でない & 緊急でない - 削除を検討すべきタスク

## 実装構成
src/main/java/com/demo/
├── model/
│   └── Todo.java              # TODOエンティティ
├── service/
│   └── TodoService.java       # ビジネスロジック・データストア
└── rest/
    ├── RestApplication.java   # 既存のJAX-RS設定
    └── TodoResource.java      # REST APIエンドポイント

src/main/webapp/
├── index.html                 # メインページ
├── css/
│   └── style.css             # スタイリング
└── js/
    └── app.js                # フロントエンドロジック


## REST API エンドポイント設計
| メソッド | パス                                 | 説明                         |
|----------|----------------------------------------|------------------------------|
| GET      | /api/todos                             | 全 TODO リストを取得         |
| GET      | /api/todos/{id}                        | 特定の TODO を取得          |
| POST     | /api/todos                             | 新規 TODO 作成              |
| PUT      | /api/todos/{id}                        | TODO 更新                    |
| DELETE   | /api/todos/{id}                        | TODO 削除                    |
| GET      | /api/todos/quadrant/{quadrant}         | 象限別に TODO を取得        |

## データモデル
{
  "id": "UUID",
  "title": "タスク名",
  "description": "詳細説明",
  "important": true/false,
  "urgent": true/false,
  "completed": true/false,
  "createdAt": "ISO8601日時",
  "updatedAt": "ISO8601日時"
}

## フロントエンド機能
- 4象限グリッドレイアウト
- タスクの作成・編集・削除
- 象限間のドラッグ&ドロップ移動
- 完了状態の切り替え
- レスポンシブデザイン

image.png

上記の実装を行うためにBobが作業するToDoリストが作成されるので、問題なければ承認します。
image.png

Codeモードによるコーディング

ここからは、Codeモードに自動で切り替わり、コーディングが始まります。

Planモードで事前に定義した実装構成に従って、適切なディレクトリに対してファイルが作成されます。

image.png

コードが書き終わると、mavenによるビルド・デプロイを行うためのコマンド実行の許可が求められました。

image.png

image.png

実行すると以下のように、Planモードで事前に確認していた内容のアプリケーションが実際に作成されていることが確認できました。
image.png

image.png

感想

Libertyでは環境や構成も含めてコードで全て記述できるため、AIによるコーディングとの相性がとても良いと感じました。

また、Bobのモード一覧にはJava Modernizationモードがあるのも発見したので、次の機会にはこちらを触ってみたいと思います。

ちなみに、今回作成したアプリケーションはこちらのリポジトリに保存しています。
https://github.com/ktgrryt/sample-todo-bob

(READMEも全てBobが記述してくれました)

さらに詳しい情報をお探しの方へ

IBMの最新情報、イベント情報、さらに役立つ資料は、以下のIBM Communityでも発信・格納されています。

最新のトレンドや有益な情報をチェックするために、ぜひご覧ください!

  • WebSphere: IBM Community - WebSphere

    WebSphere関連の最新情報やディスカッション、イベント情報、技術資料を公開中!

  • ELM (Engineering Lifecycle Management): IBM Community - ELM

    ELMに関する最新のイベント情報、ナレッジ共有、便利なドキュメントをチェック!

  • Integration: IBM Community - Integration

    Integrationに関する最新のイベント情報、ナレッジ共有、便利なドキュメントをチェック!

6
1
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
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?