3
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 tips] Bob のことを Bob に尋ねる

Last updated at Posted at 2026-01-13

はじめに

当記事では、IBM Bob について、Bob の Ask モードを使用して質問した回答内容をご参考までに記載します。

参考リンク


1. IBM Bob ができること

◾️質問

スクリーンショット 2026-01-14 7.40.06.png


◾️回答

こんにちは! IBM Bobです。技術的な質問にお答えし、
ソフトウェア開発をサポートする知識豊富なアシスタントです。

私ができること

📚 コード分析と説明

  • プロジェクトのコードを読み取り、構造や実装を詳しく説明
  • 複雑なアルゴリズムやデザインパターンの解説
  • コードの品質評価とベストプラクティスの提案

🔍 プロジェクト理解

  • ファイル構造の分析とプロジェクト全体の把握
  • 依存関係やアーキテクチャの理解
  • 正規表現検索による特定パターンの発見

💡 技術的アドバイス

  • プログラミング言語、フレームワーク、ツールに関する質問への回答
  • 設計上の問題解決やアーキテクチャの提案
  • デバッグのヒントやトラブルシューティング

📊 視覚的説明

  • Mermaidダイアグラムを使った図解(フローチャート、シーケンス図、クラス図など)

🌐 外部リソースへのアクセス

  • ブラウザを使った情報収集と最新技術情報の調査

📝 ドキュメント作成支援

  • 技術仕様書の作成サポートとREADME作成のアドバイス

Ask モードでは、コードの分析や説明、技術的な質問への回答に特化しています。
実際にコードを編集する場合は、明示的にご指示いただければ適切なモードに切り替えます。


2. IBM Bobを最大限活用するためのポイント

◾️質問

IBM Bob、最大限の効果を発揮するためにはどのようなことに気をつけたら良いですか?

◾️回答

IBM Bobを最大限活用するためのポイント

🎯 明確な質問をする

具体的な問題や目的を明示
「このコードを説明して」より「この関数の時間計算量を分析して」の方が効果的

📁 ファイルパスを正確に指定

相対パスで明確に指定: app.py など
複数ファイルの関連を知りたい場合は明示的に列挙

🔄 段階的にアプローチ

大きなタスクは小さなステップに分割
各ステップの結果を確認してから次へ進む

💬 コンテキストを共有

プロジェクトの目的や制約条件を伝える
使用している技術スタック(Python、フレームワークなど)を明示

📊 図解が必要な場合は明示

「Mermaid図で説明して」と指定すると視覚的な説明が得られる
アーキテクチャ、フロー、クラス関係などに有効

🔍 適切なモードを活用

Ask モード(現在): 質問、説明、分析
Code モード: 実装、編集、リファクタリング
Plan モード: 設計、戦略立案

⚡ 効率的な質問例

❌ 「このプロジェクトについて教えて」
✅ 「app.pyの顧客離脱予測ロジックを説明し、改善点を提案して」

🎨 具体的な出力形式を指定

コード例が必要か、説明だけで良いか
日本語での説明が必要か(デフォルトは日本語)
これらを意識することで、より正確で有用な回答が得られます。

3. ツールセット

◾️質問

Bob のツールセットについて教えて

◾️回答

IBM Bobのツールセット

私が使用できる主要なツールは以下の通りです:

📖 ファイル操作ツール

read_file

  • 最大5ファイルを同時読み取り
  • 行番号付きで表示
  • 行範囲指定で効率的な部分読み取り
  • PDF/DOCX対応

list_files

  • ディレクトリ内容の一覧表示
  • 再帰的リスト可能
  • プロジェクト構造の把握に使用

list_code_definition_names

  • クラス、関数、メソッドなどの定義名を抽出
  • コードベース全体の構造理解に有効

🔍 検索・分析ツール

search_files

  • 正規表現による横断検索
  • ファイルパターンフィルタリング
  • コンテキスト付き結果表示

obtain_git_diff

  • Git差分の取得
  • ブランチ間比較
  • 未コミット変更の確認

💻 実行・操作ツール

execute_command

  • CLIコマンドの実行
  • インタラクティブコマンド対応
  • 各コマンドは新しいターミナルで実行

browser_action

  • Puppeteer制御のブラウザ操作
  • スクリーンショット取得
  • Web開発のテスト・検証に使用

📝 タスク管理ツール

update_todo_list

  • タスクの進捗管理
  • 未着手、[-] 進行中、[x] 完了
  • 複雑なタスクの段階的追跡

ask_followup_question

  • 追加情報の質問
  • 2-4個の提案回答を提供
  • 明確化が必要な場合に使用

🔄 モード・タスク管理

switch_mode

  • 他モードへの切り替え(Code、Plan、Advancedなど)
  • 理由を明示して切り替え

new_task

  • 新しいタスクインスタンスの作成
  • 指定モードで開始

fetch_instructions

  • MCPサーバーやモード作成の手順取得

generate_description_from_diff

  • Git差分からPR説明を生成
  • ブランチ間の変更を要約

完了報告

attempt_completion

  • タスク完了の報告
  • 簡潔な結果サマリーを提供
  • 質問や追加提案は含めない

🎯 使用原則

  • 1メッセージ1ツール: 各メッセージで1つのツールのみ使用
  • 段階的実行: 各ツール使用後、結果を待って次へ
  • 効率的読み取り: 関連ファイルを一度に読み取り(最大5ファイル)
  • コンテキスト重視: 十分な情報を収集してから変更実施

現在のAskモードでは、主に読み取り・検索・分析ツールを使用し、コード編集が必要な場合はCodeモードへの切り替えを提案します。


4. スラッシュコマンドについて

◾️質問

Bob, スラッシュコマンドについて教えて

◾️回答

IBM Bobのスラッシュコマンド

申し訳ございませんが、私のシステム情報には明示的な「スラッシュコマンド」のリストは含まれていません。

🤔 推測される可能性

一般的なAIアシスタントのスラッシュコマンドとして、以下のようなものが存在する可能性があります:

モード切り替え系

  • /code - Codeモードに切り替え
  • /ask - Askモードに切り替え
  • /plan - Planモードに切り替え
  • /advanced - Advancedモードに切り替え

タスク管理系

  • /new - 新しいタスクを開始
  • /clear - 現在のコンテキストをクリア
  • /history - タスク履歴を表示

ファイル操作系

  • /read [ファイル名] - ファイルを読み取り
  • /search [パターン] - ファイルを検索
  • /diff - Git差分を表示

💡 確認方法

実際に利用可能なスラッシュコマンドを確認するには:

  1. チャット入力欄で / を入力
  2. オートコンプリートや候補リストが表示される
  3. または、ヘルプコマンド(/help)を試す

📝 代替方法

スラッシュコマンドが利用できない場合でも、通常の自然言語で指示できます:

  • 「Codeモードに切り替えて」
  • 「app.pyを読み取って」
  • 「Git差分を表示して」

実際に利用可能なスラッシュコマンドの完全なリストをご存知でしたら、教えていただけると幸いです。


5. プロンプト強化方法

◾️質問

プロンプト強化について教えて

◾️回答

プロンプト強化テクニック

IBM Bobを最大限活用するためのプロンプト強化方法をご紹介します。

🎯 具体性を高める

❌ 弱いプロンプト:

このコードを改善して

✅ 強いプロンプト:

app.pyの顧客離脱予測関数について、以下を実施:
1. 時間計算量を分析
2. メモリ使用量を最適化
3. エラーハンドリングを追加
4. 型ヒントを完全に適用

📋 コンテキストを提供

構造化された情報:

【目的】機械学習モデルの精度向上
【現状】accuracy 0.75
【制約】学習時間は5分以内
【使用技術】scikit-learn, pandas
【質問】特徴量エンジニアリングの改善案は?

🔢 段階的アプローチ

複雑なタスクを分割:

ステップ1: まずapp.pyの現在の構造を分析
ステップ2: 次にボトルネックを特定
ステップ3: 最後に最適化案を3つ提案

📊 出力形式を指定

以下の形式で回答してください:
- Mermaidフローチャートで処理フローを図示
- コード例はPythonで記述
- 各提案に実装難易度(低/中/高)を付記

🎨 役割と視点を明示

あなたはシニアMLエンジニアとして、
初心者にもわかるように説明してください。
技術的正確性と教育的価値の両立を重視。

🔍 制約条件を明確化

【必須条件】
- Python 3.9以上
- 既存のAPIインターフェースは変更不可
- 後方互換性を維持

【優先順位】
1. パフォーマンス
2. 可読性
3. 拡張性

💡 例を含める

以下のような入力に対して:
入力例: {"age": 35, "tenure": 24, "monthly_charges": 70.5}
期待出力: {"churn_probability": 0.23, "risk_level": "low"}

このような処理を実装してください。

🎭 ペルソナ設定

【プロジェクト背景】
- スタートアップの顧客管理システム
- チーム規模: 3名
- 納期: 2週間後
- 予算制約あり

この状況で最適なアプローチは?

🔄 反復的改善

前回の提案について:
- 案1は実装コストが高すぎる
- 案2のアプローチは良いが、エラー処理が不足
- 案3をベースに、以下を追加して再提案:
  * ログ機能
  * ユニットテスト

📈 成功指標を定義

以下の基準で評価可能な提案を:
- コード行数: 現状の1.5倍以内
- 実行速度: 30%以上改善
- テストカバレッジ: 80%以上
- 保守性: Pylintスコア8.0以上

🎪 マルチモーダル活用

1. まずMermaid図でアーキテクチャを可視化
2. 次にコード例で実装イメージを提示
3. 最後に表形式で比較分析を提供

これらのテクニックを組み合わせることで、より正確で有用な回答が得られます。


6. Bob Shell

◾️質問

IBM Bobに統合されたターミナル/シェル機能について教えて

◾️回答

IBM Bob統合ターミナル/シェル機能

私が提供するターミナル/シェル統合機能について詳しく説明します。

🖥️ execute_commandツールの特徴

基本機能:

  • CLIコマンドの実行
  • VSCodeターミナルとの統合
  • リアルタイム出力の取得
  • 複数ターミナルセッションの管理

🔄 実行モデル

重要な特性:

  • 各コマンドは新しいターミナルインスタンスで実行
  • ターミナルは実行後もバックグラウンドで保持
  • 長時間実行プロセスもサポート

📍 作業ディレクトリ管理

デフォルト:

/Users/<user>/Desktop/Code/customer-churn-predictor

ディレクトリ変更:

# 他のディレクトリでコマンド実行
cd /path/to/other/directory && npm install

# 複数コマンドの連鎖
cd frontend && npm run build && cd ../backend && python manage.py migrate

🎯 インタラクティブコマンド対応

サポートされる例:

# 開発サーバー(長時間実行)
python manage.py runserver

# ウォッチモード
npm run dev

# インタラクティブREPL
python
node

📊 実行状態の追跡

environment_details内の情報:

Actively Running Terminals:
- Terminal 1: python app.py (実行中)
- Terminal 2: npm run dev (実行中)

この情報により:

  • 既存プロセスの重複起動を回避
  • 実行中のサービスを考慮した判断
  • リソース管理の最適化

🔧 システム情報の活用

現在の環境:

  • OS: macOS
  • デフォルトシェル: /bin/zsh
  • ホームディレクトリ: /Users/<user>

コマンド最適化:

# macOS固有のコマンド使用可能
open -a "Google Chrome" index.html
pbcopy < output.txt

# zsh機能の活用
ls **/*.py  # 再帰的検索

効率的な使用パターン

1. 複雑なコマンドを優先:

# ❌ スクリプトファイル作成
# ✅ 直接実行
find . -name "*.pyc" -delete && python -m pytest tests/

2. パイプラインの活用:

cat data.csv | grep "error" | wc -l

3. 環境変数の設定:

export DEBUG=true && python app.py

🚫 制限事項

ディレクトリ固定:

  • ワークスペースディレクトリは変更不可
  • cdは一時的(コマンド内でのみ有効)
  • 永続的な移動にはcd ... &&を使用

出力の扱い:

  • ストリーミング出力が制限される場合あり
  • 大量出力は要約される可能性
  • 必要に応じてask_followup_questionで確認

💡 ベストプラクティス

1. コマンド前の説明:

以下のコマンドでプロジェクトの依存関係をインストールします:
pip install -r requirements.txt

2. エラーハンドリング:

# 成功確認付き実行
command && echo "Success" || echo "Failed"

3. 段階的実行:

  • 1コマンド → 結果確認 → 次のコマンド
  • 複雑な操作は分割して実行

🎪 実用例

開発環境セットアップ:

# 仮想環境作成
python -m venv venv

# アクティベート & インストール
source venv/bin/activate && pip install -r requirements.txt

# 開発サーバー起動
python app.py

この統合により、コマンドライン操作とAI支援をシームレスに組み合わせることができます。


7. Bob のログ

◾️質問

IBM Bob, 思考過程や実行ログはどこに保管されていますか? 実際のログのパスを教えてください

上記のような質問をしても、claude-devや roo-code (roo-cline) などの別の製品仕様についてを返してきました。
ちなみに roo-code との関係性を尋ねると、 "IBM BobはRoo-Code (Roo Cline) をベースにした派生プロジェクト" と回答していました。

類似ディレクトリを検索して、対象ディレクトリを見つけてBob に連携しました。

◾️回答


ありがとうございます!実際のログ保管場所が特定できました。

📂 メインディレクトリ

/Users/<user>/Library/Application Support/IBM Bob/User/globalStorage/ibm.bob-code

🗂️ ディレクトリ構造(推定)

IBM Bob/
└── User/
    └── globalStorage/
        └── ibm.bob-code/
            ├── tasks/              # タスクセッション履歴
            │   ├── [task-id-1]/
            │   ├── [task-id-2]/
            │   └── ...
            ├── settings.json       # 設定情報
            ├── api-config.json     # API設定
            └── logs/               # 実行ログ

📋 詳細を確認するコマンド

# ディレクトリ内容を確認
ls -la "/Users/<user>/Library/Application Support/IBM Bob/User/globalStorage/ibm.bob-code"

# サブディレクトリを再帰的に表示
tree "/Users/<user>/Library/Application Support/IBM Bob/User/globalStorage/ibm.bob-code"

# または
find "/Users/<user>/Library/Application Support/IBM Bob/User/globalStorage/ibm.bob-code" -type f

# 最近変更されたファイルを確認
find "/Users/<user>/Library/Application Support/IBM Bob/User/globalStorage/ibm.bob-code" -type f -mtime -1

💾 保存される情報

このディレクトリには以下が保存されています:

タスク履歴:

  • 各会話セッションの完全な記録
  • メッセージ、ツール使用、結果

実行ログ:

  • コマンド実行履歴
  • ファイル操作記録
  • エラーログ

コスト情報:

  • トークン使用量
  • API呼び出し回数
  • 累積コスト

設定データ:

  • ユーザー設定
  • API認証情報
  • カスタム設定

🔒 セキュリティ注意

このディレクトリには機密情報が含まれる可能性があります:

  • API キー
  • 会話履歴
  • プロジェクトコード

バックアップや共有時は注意が必要です。


実際のディレクトリ、ファイルを確認した結果

Macの場合で、1タスクの履歴の保管場所です。

$ pwd
/Users/<user>/Library/Application Support/IBM Bob/User/globalStorage/ibm.bob-code/tasks/2518bb42-8457-4773-9806-9f4c6d79dbd9
$ ls -lR
total 160
-rw-r--r--  1 <user>  staff  41637  1月 14 08:08 api_conversation_history.json
drwxr-xr-x  3 <user>  staff     96  1月 14 07:38 checkpoints
-rw-r--r--  1 <user>  staff  35350  1月 14 08:08 ui_messages.json

./checkpoints:
total 0
$

api_conversation_history.jsonui_messages.json に会話履歴がありました。


8. 制御方法

◾️質問

Bob を安全に使用するための制御方法

◾️回答

## IBM Bobを安全に使用するための制御方法

### 🔒 **承認ベースの実行モデル**

IBM Bobの最も重要な安全機能は**ユーザー承認制**です:

```mermaid
graph TD
    A[Bob: ツール使用を提案] --> B[ユーザー: 承認/拒否]
    B -->|承認| C[ツール実行]
    B -->|拒否| D[実行キャンセル]
    C --> E[結果をユーザーに報告]
    E --> F[次のアクション提案]

重要な原則:

  • Bobは提案のみを行う
  • 実際の実行はユーザーの承認後
  • 各ツール使用は1つずつ確認

🛡️ ファイル保護機能

モード別の制限:

Ask モード:
  ✅ ファイル読み取り
  ✅ 検索・分析
  ❌ ファイル編集・作成

Code モード:
  ✅ コード編集
  ✅ ファイル作成
  ❌ システムファイル変更

Plan モード:
  ✅ .md ファイルのみ編集
  ❌ コードファイル編集

制限違反時:

FileRestrictionError: このモードでは app.py を編集できません
許可されているパターン: \.md$

🎯 段階的実行による安全性

1ツール1承認の原則:

ステップ1: ファイル読み取り → 承認待ち
ステップ2: 分析完了 → 次の提案
ステップ3: 変更案提示 → 承認待ち
ステップ4: 実装 → 承認待ち

利点:

  • 各段階で内容を確認可能
  • 問題があれば即座に中止
  • 予期しない動作を防止

🔐 機密情報の保護

環境変数の扱い:

# ❌ 危険: 直接記述
export API_KEY="secret123"

# ✅ 安全: .envファイル使用
echo "API_KEY=secret123" >> .env
# .gitignoreに追加済みか確認

ログからの除外:

  • API キーは自動的にマスク
  • パスワードは記録されない
  • 機密ファイルは明示的に除外可能

📋 コマンド実行の安全性

危険なコマンドの確認:

# 破壊的操作は明確に説明
rm -rf /path/to/directory  # ⚠️ 削除操作
sudo command               # ⚠️ 管理者権限
chmod 777 file            # ⚠️ 権限変更

Bobの動作:

  1. コマンドの目的を明確に説明
  2. 影響範囲を提示
  3. ユーザーの承認を待つ

🚫 制限事項の活用

ワークスペース制限:

固定ディレクトリ: /Users/<user>/Desktop/Code/customer-churn-predictor

✅ このディレクトリ内の操作
❌ 外部ディレクトリへの移動
❌ システムファイルの変更

ツール制限:

  • ファイル読み取り: 最大5ファイル/回
  • 検索: 指定ディレクトリ内のみ
  • ブラウザ: 明示的な起動・終了

🔍 監査とレビュー

実行履歴の確認:

# ログディレクトリを確認
ls -la "/Users/<user>/Library/Application Support/IBM Bob/User/globalStorage/ibm.bob-code/tasks"

# 最近のタスクを確認
find "/Users/<user>/Library/Application Support/IBM Bob/User/globalStorage/ibm.bob-code" -type f -mtime -7

レビューポイント:

  • 実行されたコマンド
  • 変更されたファイル
  • API使用量とコスト

⚙️ 設定による制御

推奨設定:

{
  "autoApprove": false,           // 自動承認を無効化
  "confirmDestructive": true,     // 破壊的操作の確認
  "logLevel": "detailed",         // 詳細ログ
  "restrictedPaths": [            // 制限パス
    "/System",
    "/usr/bin",
    "~/.ssh"
  ]
}

🎓 ベストプラクティス

1. 段階的な信頼構築:

初期: 読み取り専用操作のみ
中期: 小規模な変更を承認
長期: 複雑なタスクを委任

2. 定期的なレビュー:

  • 週次でログを確認
  • 予期しない動作をチェック
  • コスト使用量を監視

3. バックアップの習慣:

# 重要な変更前にバックアップ
git commit -am "Before Bob changes"
# または
cp -r project project.backup

4. 明確なコミュニケーション:

❌ 「このプロジェクトを改善して」
✅ 「app.pyの関数Xのパフォーマンスを改善。
    既存の動作は変更しないこと」

🚨 緊急時の対応

問題が発生した場合:

# 1. 実行中のプロセスを停止
# VSCodeターミナルで Ctrl+C

# 2. 変更を元に戻す
git reset --hard HEAD

# 3. Bobのセッションを終了
# 新しいタスクを開始

📊 リスク評価マトリクス

操作 リスク 推奨対応
ファイル読み取り 承認
コード編集 レビュー後承認
コマンド実行 中-高 内容確認後承認
システム変更 拒否または慎重に
外部API呼び出し コスト確認後承認

これらの制御方法を組み合わせることで、IBM Bobを安全かつ効果的に使用できます。


9. カスタムモード

◾️質問

カスタムモードについて

◾️回答

カスタムモードについて

IBM Bobでは、プロジェクト固有のニーズに合わせてカスタムモードを作成できます。

🎨 カスタムモードとは

標準モード(Ask、Code、Plan、Advanced)に加えて、独自の動作ルールを持つモードを作成できる機能です。

📋 カスタムモード作成手順

1. 作成指示を出す:

「新しいカスタムモードを作成して」
または
「[目的]用のモードを作成して」

2. Bobが手順を取得:

<fetch_instructions>
<task>create_mode</task>
</fetch_instructions>

3. 対話的に設定:

  • モード名
  • 説明
  • 許可する操作
  • ファイル制限
  • 特殊なルール

🔧 カスタムモードの構成要素

基本情報:

{
  "name": "🔬 Research",
  "slug": "research",
  "description": "技術調査と文献レビュー専用モード"
}

ファイル制限:

{
  "allowedPatterns": [
    "\\.md$",
    "\\.txt$",
    "research/.*"
  ],
  "deniedPatterns": [
    "\\.py$",
    "\\.js$",
    "src/.*"
  ]
}

ツール制限:

{
  "allowedTools": [
    "read_file",
    "search_files",
    "browser_action",
    "ask_followup_question"
  ],
  "deniedTools": [
    "write_to_file",
    "execute_command"
  ]
}

カスタムルール:

- 常にMermaid図を含める
- 参考文献リストを作成
- 技術的な正確性を最優先
- 実装コードは提案しない

💡 カスタムモードの例

1. データ分析モード:

名前: 📊 Data Analysis
目的: データ分析とビジュアライゼーション
許可: .ipynb, .csv, .json, analysis/
ツール: read_file, execute_command(Jupyter)
特徴: 統計分析とグラフ生成に特化

2. ドキュメント作成モード:

名前: 📝 Documentation
目的: 技術文書の作成と更新
許可: .md, .rst, docs/
ツール: read_file, write_to_file, search_files
特徴: 構造化された文書作成

3. レビューモード:

名前: 👀 Code Review
目的: コードレビューとフィードバック
許可: 全ファイル読み取り専用
ツール: read_file, search_files, list_code_definition_names
特徴: 編集不可、分析とコメントのみ

4. デバッグモード:

名前: 🐛 Debug
目的: バグ調査と修正
許可: 全ファイル
ツール: 全ツール + ブラウザ
特徴: ログ分析とステップ実行

🎯 カスタムモードの利点

安全性の向上:

  • 特定タスクに必要な権限のみ付与
  • 誤操作のリスク軽減
  • ファイル保護の強化

効率性の向上:

  • タスク特化の最適化
  • 不要なツールの除外
  • ワークフロー標準化

チーム協業:

  • プロジェクト固有のルール共有
  • 一貫した作業方法
  • オンボーディングの簡素化

🔄 モード切り替え

手動切り替え:

「Researchモードに切り替えて」

自動切り替え:

<switch_mode>
<mode_slug>research</mode_slug>
<reason>技術調査が必要なため</reason>
</switch_mode>

提案による切り替え:

Bob: 「この作業にはDebugモードが適しています。
      切り替えますか?」

📂 モード設定の保存場所

/Users/<user>/Library/Application Support/IBM Bob/User/globalStorage/ibm.bob-code/modes/
├── research.json
├── data-analysis.json
└── documentation.json

🎪 実用的な使用例

シナリオ: 機械学習プロジェクト

1. Research モード
   → 論文調査、アルゴリズム選定

2. Data Analysis モード
   → データ探索、前処理

3. Code モード
   → モデル実装

4. Debug モード
   → 精度改善、バグ修正

5. Documentation モード
   → 結果レポート作成

⚙️ 高度な設定

コンテキスト注入:

{
  "customInstructions": "
    - 常に型ヒントを使用
    - docstringはGoogle形式
    - テストカバレッジ80%以上
  "
}

プロンプト拡張:

{
  "systemPrompt": "
    あなたはデータサイエンティストとして、
    統計的厳密性を重視して分析を行います。
  "
}

🚀 カスタムモード作成の開始

カスタムモードを作成したい場合は、以下のように指示してください:

「[目的]用のカスタムモードを作成して」

例:
「セキュリティ監査用のカスタムモードを作成して」
「API開発専用のカスタムモードを作成して」

Bobが対話的に設定をガイドします。


10. セキュリティリスクの抑制

◾️質問

潜在的なセキュリティリスクを最小限に抑えるには?

◾️回答

IBM Bob使用時のセキュリティリスク最小化

🔐 1. 機密情報の保護

環境変数とシークレット:

# ❌ 絶対にしない
export API_KEY="sk-1234567890abcdef"
echo "PASSWORD=secret123" >> config.py

# ✅ 推奨方法
# .envファイルを使用
echo "API_KEY=your_key" >> .env
echo ".env" >> .gitignore

# 環境変数から読み込み
import os
api_key = os.getenv('API_KEY')

機密ファイルの除外:

# .gitignore に追加
.env
.env.local
secrets.json
*.key
*.pem
credentials/
config/production.yml

🛡️ 2. ファイルアクセス制限

カスタムモードで制限:

{
  "name": "Restricted Code",
  "deniedPatterns": [
    "secrets/.*",
    "\\.env$",
    "credentials\\.json$",
    "\\.ssh/.*",
    "config/production\\..*"
  ]
}

読み取り専用モードの活用:

Ask モード: 編集不可
Review モード: 分析のみ

🚫 3. 危険なコマンドの防止

実行前の確認リスト:

# 🚨 高リスクコマンド
rm -rf /
sudo rm -rf
chmod 777
curl | bash
eval $(command)

# ⚠️ 中リスクコマンド
git push --force
npm install -g
pip install --upgrade

# ✅ 安全な代替
# 削除前に確認
ls -la target_dir/
rm -i file.txt

# 権限は最小限
chmod 644 file.txt

# スクリプトは検証後実行
curl -o script.sh url
cat script.sh  # 内容確認
bash script.sh

Bobへの指示:

「以下のコマンドは実行しないでください:
- sudo を含むコマンド
- システムディレクトリの変更
- 強制的なgit操作」

🔍 4. コード実行の監視

実行前のレビュー:

チェックポイント:

  • コマンドの目的は明確か
  • 影響範囲は限定的か
  • 元に戻せるか
  • 機密情報を扱わないか
  • システムファイルに触れないか

📋 5. ログとデータの管理

ログの定期クリーンアップ:

# 古いログを削除
find "/Users/<user>/Library/Application Support/IBM Bob" \
  -type f -mtime +30 -delete

# 機密情報を含むログを削除
rm -rf "/Users/<user>/Library/Application Support/IBM Bob/User/globalStorage/ibm.bob-code/tasks/sensitive-task-id"

ログ除外設定:

{
  "logging": {
    "excludePatterns": [
      "password",
      "api_key",
      "secret",
      "token",
      "credential"
    ],
    "maskSensitiveData": true
  }
}

🌐 6. ネットワークアクセス制限

外部接続の制御:

✅ 許可:
- 公式ドキュメントサイト
- GitHub、npm、PyPI
- 既知の開発ツール

❌ 禁止:
- 不明なドメイン
- HTTPSなしのサイト
- ファイルダウンロードサイト

ブラウザアクション時の注意:

「以下のサイトのみアクセスしてください:
- localhost
- 127.0.0.1
- 公式ドキュメント」

🔒 7. バージョン管理の活用

変更前のコミット:

# 必ず実行
git add .
git commit -m "Before Bob changes: [task description]"

# タグ付けで復元ポイント作成
git tag before-bob-$(date +%Y%m%d-%H%M%S)

変更の追跡:

# Bobの変更を確認
git diff HEAD

# 問題があれば即座に戻す
git reset --hard HEAD

# または特定ファイルのみ
git checkout HEAD -- file.py

🎯 8. 最小権限の原則

段階的な権限付与:

Phase 1 (初期):
- 読み取り専用
- 分析とレポート

Phase 2 (信頼構築後):
- 小規模な編集
- テストファイルの作成

Phase 3 (完全信頼後):
- 本番コードの編集
- デプロイ関連操作

タスク別の権限:

調査タスク: Ask モード (読み取りのみ)
実装タスク: Code モード (編集可)
計画タスク: Plan モード (.mdのみ)

🚨 9. インシデント対応計画

問題発生時の手順:

# 1. 即座に停止
Ctrl+C (実行中のプロセス)

# 2. 変更を確認
git status
git diff

# 3. 必要に応じてロールバック
git reset --hard HEAD
# または
git revert HEAD

# 4. ログを保存
cp -r "/Users/<user>/Library/Application Support/IBM Bob" \
  ~/Desktop/bob-incident-$(date +%Y%m%d)

# 5. 問題を報告
# 何が起きたか記録

📊 10. セキュリティチェックリスト

毎回の使用前:

  • 機密情報を含むファイルは除外されているか
  • .gitignoreは適切に設定されているか
  • バックアップは取得済みか
  • 適切なモードを選択しているか

毎回の使用後:

  • 変更内容をレビューしたか
  • 意図しない変更はないか
  • 機密情報が漏洩していないか
  • ログに問題はないか

定期的に:

  • ログを確認・クリーンアップ
  • 権限設定を見直し
  • コスト使用量を監視
  • セキュリティ設定を更新

🎓 11. 教育と意識向上

チーム内での共有:

# IBM Bob セキュリティガイドライン

## 禁止事項
- 本番環境での直接実行
- 機密情報の共有
- 未検証のコマンド実行

## 推奨事項
- 常にレビュー
- 段階的な承認
- バックアップの習慣

🔐 12. 高度な保護設定

ファイルシステム保護:

# 重要ディレクトリを読み取り専用に
chmod -R 555 secrets/
chmod -R 555 .ssh/

# 復元用のバックアップ
rsync -av --exclude='.git' . ../project-backup/

ネットワーク分離:

# 開発環境を分離
# 本番環境へのアクセスは別マシンで

これらの対策を組み合わせることで、IBM Bobを安全に使用しながら、その強力な機能を最大限活用できます。


11. bobignore ファイル

◾️質問

bobignore ファイルとは?

◾️回答

.bobignore ファイル

.bobignoreは、IBM Bobがアクセスすべきでないファイルやディレクトリを指定する設定ファイルです。.gitignoreと同様の構文を使用します。

📋 基本構造

ファイル名:

.bobignore

配置場所:

/Users/<user>/Desktop/Code/customer-churn-predictor/.bobignore

🔧 構文と記述方法

基本パターン:

# コメント行

# 特定のファイル
secrets.json
credentials.yaml
.env

# 特定のディレクトリ
secrets/
credentials/
.ssh/

# ワイルドカード
*.key
*.pem
*_secret.py

# 拡張子
*.env
*.secret

# パターンマッチ
config/production.*
deploy/*.sh

🛡️ 推奨される.bobignore設定

セキュリティ重視:

# 環境変数と設定
.env
.env.*
*.env
.envrc

# 認証情報
secrets/
credentials/
*.key
*.pem
*.crt
*.p12
id_rsa*
*.ppk

# API キーとトークン
*_secret.py
*_secret.js
*secrets.json
*credentials.json
api_keys.txt

# SSH設定
.ssh/
known_hosts

# データベース
*.db
*.sqlite
*.sqlite3
database.yml

# ログファイル(機密情報含む可能性)
*.log
logs/
*.log.*

# バックアップ
*.backup
*.bak
*.old

# 本番環境設定
config/production.*
.production/
prod/

# ベンダーと依存関係(大容量)
node_modules/
vendor/
.venv/
venv/
__pycache__/

# ビルド成果物
dist/
build/
*.pyc
*.pyo

🎯 プロジェクト別の例

Python プロジェクト:

# 仮想環境
venv/
.venv/
env/
ENV/

# 設定
.env
settings_local.py
local_settings.py

# データベース
*.db
db.sqlite3

# キャッシュ
__pycache__/
*.pyc
.pytest_cache/

# Jupyter
.ipynb_checkpoints/

Node.js プロジェクト:

# 依存関係
node_modules/
package-lock.json

# 環境変数
.env
.env.local
.env.production

# ビルド
dist/
build/
.next/

# ログ
npm-debug.log*
yarn-debug.log*

機械学習プロジェクト:

# データセット(大容量)
data/raw/
data/processed/
*.csv
*.parquet

# モデルファイル
models/
*.h5
*.pkl
*.joblib
*.pt
*.pth

# 実験結果
experiments/
mlruns/
wandb/

# Jupyter
.ipynb_checkpoints/
*.ipynb

🔍 動作確認

無視されているか確認:

# .bobignoreの内容を表示
cat .bobignore

# 特定のファイルが無視されるかテスト
# Bobに以下を指示:
「secrets/api_key.jsonを読み取って」
# → エラーまたは無視される

📊 .bobignore vs .gitignore

特徴 .gitignore .bobignore
目的 Git追跡除外 Bob アクセス制限
影響範囲 バージョン管理 AI アシスタント
必須性 推奨 セキュリティ重視時
継承 可能 プロジェクト固有

両方に含めるべき:

.env
secrets/
*.key
credentials.json

Bobのみ除外:

# 大容量ファイル(Gitには含むがBobは不要)
data/large_dataset.csv
models/trained_model.h5

# 個人的なメモ(Gitには含むがBobに見せたくない)
notes/personal/

🚀 .bobignoreの作成

手動作成:

# プロジェクトルートで
cat > .bobignore << 'EOF'
# IBM Bob 除外設定
.env
secrets/
*.key
node_modules/
EOF

Bobに作成を依頼:

「このプロジェクト用の.bobignoreファイルを作成して。
以下を除外:
- 環境変数ファイル
- 認証情報
- 大容量データファイル」

⚙️ 高度な設定

条件付き除外:

# 開発環境のみ除外
!config/development.*

# 特定のファイルは例外
!secrets/example.json
secrets/*

コメントで整理:

# ========================================
# セキュリティ関連
# ========================================
.env
secrets/
*.key

# ========================================
# パフォーマンス(大容量ファイル)
# ========================================
node_modules/
data/raw/
*.csv

# ========================================
# 一時ファイル
# ========================================
*.tmp
*.cache
.DS_Store

🔐 セキュリティベストプラクティス

1. 作成直後に設定:

# プロジェクト開始時
touch .bobignore
echo ".env" >> .bobignore
echo "secrets/" >> .bobignore

2. .gitignoreと同期:

# .gitignoreをベースに作成
cp .gitignore .bobignore
# 追加の除外項目を追加

3. 定期的な見直し:

# 新しい機密ファイルが追加されたら更新
echo "new_secret_file.json" >> .bobignore

📝 テンプレート

汎用テンプレート:

# IBM Bob 除外設定

# 環境変数
.env*
*.env

# 認証情報
secrets/
credentials/
*.key
*.pem

# データベース
*.db
*.sqlite*

# 依存関係
node_modules/
venv/
vendor/

# ビルド成果物
dist/
build/
*.pyc

# ログ
*.log
logs/

# 一時ファイル
*.tmp
*.cache
.DS_Store

.bobignoreを適切に設定することで、機密情報の漏洩リスクを大幅に削減し、IBM Bobを安全に使用できます。


12. MCPサーバー

◾️質問

MCPサーバーとは?

◾️回答

MCPサーバー (Model Context Protocol Server)

MCPサーバーは、IBM Bobの機能を拡張するための外部サービス統合メカニズムです。

🔌 MCPとは

Model Context Protocol:

  • AIアシスタントと外部ツール/サービスを接続するプロトコル
  • 標準化されたインターフェース
  • プラグイン的な機能拡張

🎯 MCPサーバーの役割

機能拡張:

  • 標準ツールにない機能を追加
  • 外部サービスとの統合
  • カスタムワークフローの実装

例:

標準ツール: ファイル読み書き、コマンド実行
MCPサーバー: Slack通知、Jira連携、AWS操作

🛠️ MCPサーバーの種類

1. データアクセス系:

- データベースクエリ
- API呼び出し
- クラウドストレージアクセス

2. 通知・連携系:

- Slack/Teams通知
- メール送信
- Webhook呼び出し

3. 開発ツール系:

- Jira/GitHub連携
- CI/CDトリガー
- コード品質チェック

4. カスタムビジネスロジック:

- 社内システム連携
- 独自ワークフロー
- ドメイン固有処理

📋 MCPサーバーの作成

作成手順:

1. Bobに指示:
「新しいMCPサーバーを作成して」

2. 手順を取得:
<fetch_instructions>
<task>create_mcp_server</task>
</fetch_instructions>

3. 対話的に設定:
- サーバー名
- 提供する機能
- 必要な認証情報
- エンドポイント定義

🔧 MCPサーバーの構造

基本構成:

{
  "name": "my-mcp-server",
  "version": "1.0.0",
  "description": "カスタムMCPサーバー",
  "tools": [
    {
      "name": "custom_tool",
      "description": "カスタム機能",
      "parameters": {
        "param1": "string",
        "param2": "number"
      }
    }
  ],
  "resources": [
    {
      "uri": "custom://resource",
      "name": "Custom Resource"
    }
  ]
}

実装例 (Node.js):

import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';

const server = new Server({
  name: 'my-mcp-server',
  version: '1.0.0',
}, {
  capabilities: {
    tools: {},
    resources: {}
  }
});

// ツールの実装
server.setRequestHandler('tools/call', async (request) => {
  const { name, arguments: args } = request.params;
  
  if (name === 'custom_tool') {
    // カスタムロジック
    return {
      content: [{
        type: 'text',
        text: 'Result from custom tool'
      }]
    };
  }
});

// サーバー起動
const transport = new StdioServerTransport();
await server.connect(transport);

🎨 実用的なMCPサーバー例

1. Slack通知サーバー:

{
  "name": "slack-notifier",
  "tools": [
    {
      "name": "send_slack_message",
      "description": "Slackにメッセージを送信",
      "parameters": {
        "channel": "string",
        "message": "string"
      }
    }
  ]
}

使用例:

Bob: 「デプロイが完了したらSlackに通知して」
→ MCPサーバー経由でSlack API呼び出し

2. データベースクエリサーバー:

{
  "name": "db-query",
  "tools": [
    {
      "name": "execute_query",
      "description": "SQLクエリを実行",
      "parameters": {
        "query": "string",
        "database": "string"
      }
    }
  ]
}

3. AWS操作サーバー:

{
  "name": "aws-manager",
  "tools": [
    {
      "name": "list_s3_buckets",
      "name": "deploy_lambda",
      "name": "check_ec2_status"
    }
  ]
}

🔐 セキュリティ考慮事項

認証情報の管理:

// 環境変数から読み込み
const apiKey = process.env.SLACK_API_KEY;

// 設定ファイル(暗号化推奨)
const config = loadEncryptedConfig();

アクセス制御:

// 許可されたユーザーのみ
if (!isAuthorized(request.user)) {
  throw new Error('Unauthorized');
}

📊 MCPサーバーの管理

設定ファイル:

// ~/.config/ibm-bob/mcp-servers.json
{
  "mcpServers": {
    "slack-notifier": {
      "command": "node",
      "args": ["/path/to/slack-server/index.js"],
      "env": {
        "SLACK_TOKEN": "xoxb-..."
      }
    },
    "db-query": {
      "command": "python",
      "args": ["/path/to/db-server/main.py"]
    }
  }
}

有効化/無効化:

# MCPサーバーの一覧
bob mcp list

# 有効化
bob mcp enable slack-notifier

# 無効化
bob mcp disable slack-notifier

🚀 MCPサーバーの利点

拡張性:

  • 無限の機能追加が可能
  • 既存システムとの統合
  • カスタムワークフロー

再利用性:

  • 一度作成すれば複数プロジェクトで使用
  • チーム内で共有可能
  • コミュニティでの配布

保守性:

  • 機能が分離されている
  • 独立してテスト可能
  • バージョン管理が容易

💡 使用シナリオ

シナリオ1: CI/CD統合

1. コード変更をコミット
2. Bob: 「テストを実行してJenkinsにデプロイ」
3. MCP経由でJenkins APIを呼び出し
4. 結果をSlackに通知

シナリオ2: データ分析

1. Bob: 「先月の売上データを分析」
2. MCP経由でデータベースクエリ
3. 結果を集計・可視化
4. レポートを生成

シナリオ3: インフラ管理

1. Bob: 「本番環境のステータスを確認」
2. MCP経由でAWS/GCP APIを呼び出し
3. リソース使用状況を取得
4. アラートがあれば通知

🎓 学習リソース

公式ドキュメント:

https://modelcontextprotocol.io/

サンプルサーバー:

https://github.com/modelcontextprotocol/servers

🔄 MCPサーバー作成の開始

MCPサーバーを作成したい場合:

「[目的]用のMCPサーバーを作成して」

例:
「GitHub Issues管理用のMCPサーバーを作成して」
「社内データベースアクセス用のMCPサーバーを作成して」

Bobがfetch_instructionsツールで詳細な手順を取得し、対話的に作成をガイドします。

MCPサーバーにより、IBM Bobの可能性は無限に広がります。


おわりに

まだ色々聞きたいことが出てきますが、ひとまずここまでとします。
お手元に IBM Bob がいる際にはお試しください。

3
1
4

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
3
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?