Node.jsアプリケーションの最新化
Node.js Express APIをバージョン16から22にアップグレードして、IBM Bobをアプリケーションの最新化に使用する方法を学びます。この実践的なチュートリアルで、モード、承認、リテラルコーディングを使用したAI支援開発を試してください。
はじめに
Bobは、既存のワークフローを強化するAI SDLC(ソフトウェア開発ライフサイクル)パートナーです。 このチュートリアルでは、TypeScript Express APIをNode.js 16からNode.js 22に最新化することで、Bobのコア機能のいくつかを学びます。チュートリアルを完了するために、Node.jsやTypeScriptの経験は必要ありません。Bobが依存関係を分析し、コードパターンを最新化する方法を学びます。
学習する主な機能
Bobは、APIをアップグレードする際に使用する4つの重要な機能を提供します:
- モード:特定のタスクに合わせてBobの動作を調整する専門的なペルソナ。
- コンテキストメンション:ファイル、フォルダー、Gitコミットなど、Bobとの会話で特定のプロジェクト要素を参照します。
- 承認ワークフロー:Bobが使用する予定のすべてのツールを実行前に確認します。
- リテラルコーディング:エディタで直接Bobとコードを書きます。コードが入るべき場所に自然言語で指示を入力します。
前提条件
このチュートリアルでは、TypeScript Express REST APIをサンプルプロジェクトとして使用します。ただし、Node.jsやTypeScriptの経験は必要ありません。
このチュートリアルを完了するには、以下が必要です:
- Docker(インストール済みで起動中)
- Bob IDE(インストール済み)
- クイックスタートチュートリアル完了
- コンテキストウィンドウチュートリアル(任意)
ワークスペースのセットアップ
IBM Bobを起動し、サンプルリポジトリをクローンして、最新化するNode.jsアプリケーションの作業を開始します。
IBM Bobを起動
コンピューターでIBM Bobアプリケーションを起動します。
Bobサイドバーを開く
サイドバーがまだ開いていない場合は、ナビゲーションバーの横にあるBobアイコンをクリックするか、ショートカットOption + Command + B(Mac)またはCtrl + Alt + B (Windows)を使用して開きます。

チュートリアルリポジトリをクローン
Bob IDEパネルの左上にあるファイルアイコンをクリックして、サンプルアプリケーションを含むリポジトリをクローンします。次に、リポジトリをクローンをクリックし、次のGitHubリポジトリを検索バーに貼り付けます。Bobはリポジトリを保存する場所を尋ねます。好きな場所に保存できます。
https://github.com/IBM/bob-demo.git
リポジトリを開く
Bobがクローンしたリポジトリを開くかどうか尋ねたら、開くをクリックします。Bobが「このフォルダー内のファイルの作成者を信頼しますか?」と尋ねた場合は、はい、作成者を信頼しますをクリックします。
エクスプローラーのプロジェクトファイルと側面のBobチャットパネルに注目してください。

自動承認を無効にする
自動承認がオフになっていることを確認してください。この設定は権限で確認できます。自動承認がオフの場合、Bobは提案された変更を実行する前に許可を求めます。
コンテナ化された環境を構築
Dockerfileを作成してコンテナ化された環境でアプリケーションを実行し、Node.jsや依存関係をローカルにインストールする必要をなくします。
Agentモードに切り替え
チャット入力フィールドの左側にあるモード選択ドロップダウンをクリックしてAgentを選択し、BobをAgentモードに切り替えます。
モードは、Bobが最小権限の原則を尊重する方法の1つです。各モードは、Bobにあなたに代わって特定のタスクセットを提案する権限を与えます。Agentモードにより、Bobはコードの作成、変更、リファクタリングができます。Bobは各操作の前に許可を求めます。
Dockerfileを作成
BobチャットパネルでDockerfileを作成するよう求める次のプロンプトを入力します。BobはDockerfileの要件を理解するために、いくつかのファイルへの読み取りアクセスを要求します。承認をクリックして、Bobにそれらのファイルを読み取る権限を付与します:
このNode.js TypeScriptアプリケーション用のDockerfileを作成してください。現在のアプリケーションバージョンに合わせてNode 16を使用し、TypeScriptコードをビルドし、ポート`3000`でアプリを実行する必要があります。Bobは適切なDockerfile構造を決定し、提案されたファイルを表示します。チャット入力フィールドの上にアクションボタンが表示されます。保存をクリックしてファイルを作成します。保存はプロジェクト内のファイルを書き込みまたは変更します。このチュートリアルの後半で、BobはDockerfileを更新してNode 22を使用します。
レガシーアプリケーションがビルドされることを確認
最新化する前に、レガシーコードが正しくビルドされ実行されることを確認します。このベースラインにより、最新化によって導入される問題を特定できます。
ビルドフェーズ中、Bobは、Dockerfileがnpm ciを使用しているため、存在しないpackage-lock.jsonファイルが必要でビルドが失敗したことを通知します。
Bobチャットパネルで、Bobにアプリケーションをビルドしてテストするよう指示します。
Dockerを使用してレガシーアプリケーションをビルドしてテストし、最新化前に正しく動作することを確認してください。アプリケーションは/api/todosでサンプルデータを使用してAPIリクエストに応答する必要があります
テスト後、コンテナをクリーンアップしてください。Bobは、次のメッセージでpackage-lock.jsonの問題を修正するDockerfileへの変更を保存するよう求めます:
package-lock.jsonファイルがないためビルドが失敗しました。
`npm ci`の代わりに`npm install`を使用するようにDockerfileを更新する必要があります。修正させてください。Bobがビルドエラーを検出して修正する能力は、デプロイ中の問題のトラブルシューティングと解決においてBobがどのように協力するかの例です。
Bobが修正を適用してビルドを完了すると、レガシーアプリケーションがコンテナ化された環境で正しく動作していることを確認するビルドおよびテスト結果のサマリーが表示されます。次のセクションでアプリケーションを最新化した後の比較基準となります。
あなたとBobは、レガシーアプリケーションが正しく動作することを確認しました。
BobのAskモードでNode.jsコードベースを探索
最新化する前に、モード選択ドロップダウンをクリックして、BobのAskモードに切り替えます。Askモードはファイルの読み取りのみができるため、誤って変更を加えることなく安全にコードを探索できます。Bobチャットで/askと入力してAskモードに変更することもできます。
@コンテキストメンションを使用してプロジェクトを確認
Bobは、プロンプトで特定のファイル、フォルダー、または問題を直接参照できる**@コンテキストメンション**をサポートしています。コンテキストメンションは、Bobに議論したい内容に関する正確な情報を提供します。
@メンションを使用して分析するファイルをBobに明示的に指示することで、package.json、tsconfig.json、Dockerfileファイルを探索します。これらのファイルについて学ぶことで、変更を加える前に最新化の要件を理解するのに役立ちます。
Bobチャットパネルで、次のプロンプトを実行します:
@package.json このプロジェクトはどのNode.jsバージョンを使用していますか?Node.js 22用に更新する必要がある依存関係は何ですか?簡単な要約をください。@記号は、Bobにpackage.jsonをコンテキストとして含めるよう指示します。Bobはすぐに回答を開始しません。最初にコードベースを探索し、ファイルを読み取り、パターンに従い、コードを分析します。この探索フェーズを中断しないでください。
BobはNode.js 22に必要な次の更新を特定します:
**現在のNode.jsバージョン:** 16.x
**Node.js 22用に更新が必要な依存関係:**
1. **@types/node**:^16.18.0 → ^22.x.x(Node.js 22用のTypeScript型)
2. **typescript**:^4.9.5 → ^5.x.x(Node.js 22のより良いサポートのためのTypeScript 5+)
3. **ts-node**:^10.9.1 → ^10.9.2+(TS 5とNode 22との互換性を確保)
**すでに互換性のある依存関係:**
- **express**:^4.18.2 ✓(Node.js 22で動作)
- **uuid**:^9.0.0 ✓(Node.js 22で動作)
- **@types/express**:^4.17.17 ✓(互換性あり)
- **@types/uuid**:^9.0.0 ✓(互換性あり)
**要約:** Node.js固有の開発依存関係のみを更新する必要があります。ランタイム依存関係(Express、UUID)はすでにNode.js 22と互換性があります。TypeScript設定を分析
BobにプロジェクトのTypeScript設定を分析するよう依頼します:
@tsconfig.json このTypeScriptプロジェクトはどのモジュールシステムとコンパイラ設定を使用していますか?Node.js 22用に更新する必要がある依存関係は何ですか?簡単な要約をください。BobはNode.js 22用に更新する必要がある次のコンポーネントで応答します:
**現在のTypeScript設定:**
**モジュールシステム:** CommonJS(`"module": "commonjs"`)
- `require()`と`module.exports`を使用する従来のNode.jsモジュールシステム
- 出力:CommonJS構文の`.js`ファイル
**コンパイラ設定:**
- **Target:** ES2020(ES2020 JavaScriptにコンパイル)
- **Lib:** ES2020(ES2020標準ライブラリ機能を使用)
- **Module Resolution:** Node(標準Node.js解決アルゴリズム)
- **Strict Mode:** 有効(完全な型チェック)
**Node.js 22の推奨更新:**
1. **target**:ES2020 → **ES2022**または**ESNext**(新しいJS機能を活用)
2. **lib**:ES2020 → **ES2022**(新しいAPIにアクセス)
3. **module**:ネイティブESMサポートのために**"node16"**または**"nodenext"**への移行を検討
4. **moduleResolution**:"node" → **"node16"**または**"bundler"**(より良い最新の解決)
**要約:** プロジェクトはES2020ターゲットでレガシーCommonJSを使用しています。Node.js 22の場合、ターゲット/libをES2022+に更新し、ネイティブESMモジュールへの移行を検討する必要があります(ただし、CommonJSは引き続き正常に機能します)。Dockerfileを分析
BobにプロジェクトのDockerfileを分析するよう依頼します:
@Dockerfile このDockerfileはどのNode.jsバージョンを使用していますか?Node.js 22用に何を変更する必要がありますか?簡単な要約をください。BobはNode.js 22用に更新する必要があるものを応答します:
**現在のDockerfile Node.jsバージョン:** Node 16 Alpine(`node:16-alpine`)
**Node.js 22に必要な変更:**
1. **ベースイメージ(2行目):** `FROM node:16-alpine` → `FROM node:22-alpine`
**要約:** 1行の変更のみが必要:ベースイメージをnode:16-alpineからnode:22-alpineに更新します。Dockerfileの残りの部分はNode.js 22と互換性がありますが、npmフラグ構文は最新化できます更新が必要なものを理解しました。次のセクションでは、Agentモードに切り替えて、Bobに変更を行わせます。
BobのAgentモードでAPIを最新化
Bobはpackage.json、tsconfig.json、Dockerfileの次の最新化要件を決定しました:
- package.jsonとDockerfileでNode.js 16をNode.js 22に変更
- TypeScriptコンパイラのターゲットとモジュール設定を更新
- 古い依存関係バージョンを修正
アプリケーションの最新化を開始するには、Bobがコード変更を行えるようにAgentモードに戻す。モードセレクターをクリックしてAgentを選択します。
Bobチャットパネルで、次の最新化プロンプトを実行します。Bobが作業する特定のファイルを指す@参照に注意してください:
@package.json @tsconfig.json @Dockerfile
このExpress APIをNode.js 16からNode.js 22に最新化してください。API機能は同一に保ってください - これはプラットフォームのアップグレードであり、機能の変更ではありません。簡単な要約をください。Bobは最新化で更新したすべてのコンポーネントの要約を提供します:
Dockerfile — 2行変更
- 両方のFROM node:16-alpineステージ → node:22-alpine
package.json — 3フィールド変更
- engines.node: 16.x → 22.x
- @types/node: ^16.18.0 → ^22.0.0
- typescript: ^4.9.5 → ^5.0.0
tsconfig.json — 4設定変更
- target: ES2020 → ES2023
- lib: ["ES2020"] → ["ES2023"]
- module: commonjs → node16 (TypeScript 5はmoduleResolutionと一致させる必要があります)
- moduleResolution: node → node16
あなたとBobはアプリケーションを最新化しました。
最新化を完了としてマーク
Bobのリテラルコーディング機能を使用して、サンプルtodoタイトルを更新し、アプリを最新化済みとしてマークします。リテラルコーディングを使用すると、チャットパネルを使用する代わりに、エディタで直接Bobとコードを書くことができます。コードが入るべき場所に自然言語で指示を入力します。
リテラルコーディングモードを有効にする
画面の左側にあるエクスプローラータブで、express-todo-apiフォルダーに移動し、src/db.tsをクリックしてエディタで開きます。src/db.tsを開いたら、エディタツールバーの魔法の杖アイコンをクリックしてリテラルコーディングモードを切り替えます。または、MacではCmd + I、WindowsとLinuxではCtrl + Iを押すこともできます。
指示を書く
エディタで開いているsrc/db.tsファイルで、コードの前のファイルの先頭に次の指示を貼り付けます:
// サンプルtodoオブジェクトのtitleプロパティを見つけて、"Welcome to the Modernized Node.js 22 API"に変更してくださいリテラルコーディングモードにいるため、Bobはこのコメントが通常のコードではなく指示であることを理解します。指示はエディタで強調表示されます。
コードを生成
ドキュメントの下部にある生成をクリックします。
Bobはコンストラクター内のsampleTodoオブジェクトを見つけて、変更を表示します。タイトルの変更が次のように表示されます:
変更前:
title: "Learn Node.js modernization"変更後:
title: "Welcome to the Modernized Node.js 22 API"変更を受け入れる
生成をクリックしたドキュメントの下部にあるすべて受け入れるをクリックして、ファイルに変更を適用します。
リテラルコーディングモードを終了
ファイルの上部にあるリテラル魔法の杖の下にある終了をクリックして、リテラルコーディングモードを終了します。
リテラルコーディングを使用してAPIを更新しました。次のセクションでAPIをテストすると、API応答にこの新しいタイトルが表示されます。
Dockerで最新化されたアプリケーションを確認
Dockerコンテナを再構築してテストすることで、コードの最新化とリテラルコードの変更を確認します。
Agentモードに戻り、Bobに確認してほしいことを説明します:
Dockerでビルドしてテストすることで、最新化されたNode.js 22アプリケーションが動作することを確認してください。APIが/api/todosで応答し、更新されたtodoタイトルを表示することを確認してください。完了したらクリーンアップしてください。簡単な要約をください。新しいタイトルの検証も見たいです。Bobがアプリケーションが最新化されたことを確認すると、次の要約が表示されます:
✅ **検証完了 - Node.js 22最新化成功**
**ビルドとテストの結果:**
- Node.js 22でDockerイメージを正常にビルド
- TypeScriptコンパイルがエラーなしで完了
- アプリケーションが起動し、正しく応答
**API検証:**
{
"id": "72459851-7953-4a9c-94d3-4f8f1c656d21",
"title": "Welcome to the Modernized Node.js 22 API",
"completed": false,
"createdAt": "2026-02-16T16:35:49.132Z"
}
**確認済み:**
- ✅ 更新されたtodoタイトルが正しく表示:"Welcome to the Modernized Node.js 22 API"
- ✅ APIエンドポイント/api/todosが正常に応答
- ✅ すべての機能がNode.js 22で動作
- ✅ クリーンアップ完了(コンテナとイメージを削除)
**要約:** 最新化されたExpress TODO APIは、更新されたサンプルデータで新しいタイトルを表示し、最新化が完了したことを確認して、Node.js 22で完全に機能しています。APIは正しく動作し、タイトルは「Welcome to the Modernized Node.js 22 API」に更新され、BobがNode.jsバージョンと依存関係を最新化しながら既存の動作を保持したことを確認しています