2
0

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 の使い方 【3】MCPとスキルで実現するRPAオペレーション

2
Posted at

はじめに

IBM Bobは、IBMが提供するAI機能を持ったIDEです。幅広い開発者向けに使いやすく、親しみやすい機能を提供しています。開発パートナーとしても有能ですが、その能力は開発ではない領域にも活かすことができます。

別の記事でユースケースを軸にBobの機能性を確認しています。

この記事ではどちらかというと技術面を軸に考えて、BobにWebサイトでの入力の自動化、いわゆるRPA(Robotic Process Automation)に相当する仕事をチャレンジしてもらいます。

この記事の内容は Bob2.0+Windows11環境 にて検証を行っています。

実際の利用にあたっては、所属されている組織の運用ルールをご確認のうえ、問題ない範囲でご利用ください。

IBM Bobとは?

IBM Bobは、コードベース上で開発者と協働し、ソフトウェア開発を支援するAIパートナーです。
コード補完だけでなく、アプリケーションの分析、設計、実装、レビュー、モダナイゼーションなど、開発ライフサイクル全体を支援します。

30日間の無料トライアルでは、IBM Bobの利用に必要な「Bobコイン」を40コイン利用できます。

この記事でBobが達成すること

気象庁の過去の気象データ・ダウンロードページから、指定する場所・期間の天気を取得する。

あまり実務に沿ったタスクではありませんが:sweat_drops:、お子様の夏休みの日記で8末に天気:sunny:をまとめてチェックしないといけなくなった際にぜひ。

気象庁の当該サイトに「アクセス集中の原因となりますので、自動化ツール等による過度のアクセスはお控えいただくようお願いいたします。」と記載されております。実際に動かす際にはご留意いただきますよう、よろしくお願いします。

Step.1 Bobを起動する

ワークスペースとなるフォルダを任意に作成します。
Bobを起動した後、このフォルダを開きます。成果物は基本的にこのフォルダでやりとりすることになります。

Step.2 Playwright MCPサーバーの導入

BobにMCPサーバーを登録することで、Webアクセスの機能を追加します。

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

Playwright MCPサーバーを登録して。Chromeを起動する設定としてください。

WebアクセスするためのMCPサーバーの導入については、前回の記事に詳細を記載していますので、ご確認ください。
ここでは画面操作が適切にできて結果が表示されることを確認したいため、headless指定はしません

Step.3 操作手順書を作成する

チームメンバーに共有するつもりで操作手順書をつくります。

ある程度アバウトな指示でもBobは賢く立ち回ってくれますが、RPAのように精度高く画面操作するために次の段階を踏みます。

  • 操作手順書を作成し、Bobに一度手順書どおりのプロセスを踏んでもらう
  • Bobに、踏んだ手順を頼りにスキル定義をつくってもらう

まずはワークスペースに操作手順書を追加します。
日常の業務でも、周りのメンバー向けに定型的なタスクの手順書を作成することがあると思いますが、これと同じようにつくっていきます。

操作手順書の記載要領

次の内容が含まれるようにテキストを記載します。

  • サービスの開始ページにアクセスするところから開始する
  • 画面上の操作は、画面上のどの場所を操作するかが分かるように画面上の場所や項目名が明確になること、入力内容または操作が明確になること、を意識する
  • 画面遷移が発生する場合は、その挙動を表現する
  • 画面上のデータを参照する場合も、画面上のどの場所にあたるかが明確になること、を意識する

:warning: 日常業務で手順書を作成する場合は、スクリーンショットを添付するほうが分かりやすいでしょう。
今回は画像添付を含めた手順も準備して比較しましたが、Bobは画像有無に関わらず期待どおり動作しました。ですのでこの記事ではテキストのみで手順を進めます。

対象ページでの実際の操作

全体的な流れは次の手順になります。

  • 「過去の気象データ・ダウンロード」ページのURLにアクセスする
  • 「地点を選ぶ」タブで、東京/東京を選択する
  • 「項目を選ぶ」タブで、日別値、「気温」タブで日最高気温、日最低気温、「雲量/天気」タブで、天気概況 昼・夜 を選択する
  • 「期間を選ぶ」タブで、2026/6/1~2026/6/30を指定する
  • 「画面に表示」ボタンを押す

これにより、指定期間のデータが表示されます。

これを次のような操作手順書に書き起こし、ワークスペースに追加します。また、手順内のスクリーンショットファイル名にあわせて、対象画面のスクリーンショットをファイル化し、ワークスペースに格納します。

操作手順書.md
# 画面を表示する
https://www.data.jma.go.jp/risk/obsdl/index.php にアクセスする。

# 地点を入力する
画面上部の「地点を選ぶ」ボタンが選択されていることを確認する。
地図から「東京」をクリックする。
次の画面で、地図から「東京」という地点名を探し、クリックする。
画面上の「東京」にチェックが付き、画面右側の「選択された地点」に「東京」が追加されたことを確認する。

# 項目を入力する
画面上部の「項目を選ぶ」ボタンをクリックする。
画面切り替えが発生する。
「データの種類」で「日別値」が選択されていることを確認する。選択されていない場合、クリックする。
下のタブから「気温」をクリックする。
「日最高気温」をクリックする。
「日最低気温」をクリックする。
下のタブから「雲量/天気」をクリックする。
画面切り替えが発生する。
「天気概況(昼:06時~18時)」をクリックする。
「天気概況(夜:18時~翌日06時)」をクリックする。
画面右側の「選択された項目」に「日最高気温」「日最低気温」「天気概況(昼:06時~18時)」「天気概況(夜:18時~翌日06時)」が追加されたことを確認する。

# 期間を入力する
画面上部の「期間を選ぶ」ボタンをクリックする。
画面切り替えが発生する。
「連続した期間で表示する」が選択されていることを確認する。選択されていない場合、クリックする。
「X年X月X日から」の欄に、2026/6/1と入力する。
「X年X月X日まで」の欄に、2026/6/30と入力する。
画面右側の「選択された期間」に「2026年6月1日から2026年6月30日まで の日別値を表示」が追加されたことを確認する。

# 結果を表示する
画面右側にある「画面に表示」ボタンをクリックする。

Step.4 Bobに操作手順書どおりに操作してもらう

Bobに操作手順書をトレースしてもらいます。手順書の検証も兼ねています。

Bobに次のように指示します。

操作手順書.mdの内容にあわせてブラウザを操作してください。

ブラウザが自動起動すると思います、その裏でBobが承認待ちになっている場合があるためご注意ください。
検証では、検索結果画面にて期待するデータリストを表示することができました。

検索結果東京

Step.5 スキル定義を作成する

反復処理できるようにスキルとして整理します。

先ほどの会話に続けて、Bobに次のように指示します。

今回の画面操作を再現するスキルのテキストを作成してmdファイルとしてワークスペースに出力してください。作成にあたり次の要素を取り込んでください。
・なるべく無駄なくブラウザ操作ができるように編集してください。試行錯誤した箇所は、次は一回で結果が取れるようにしてください。
・地点および日付期間は、実行毎にユーザーに入力を促してください。取得項目は不変です。
・検索結果のデータは、画面から抽出してCSVファイルとしてワークスペースに出力してください。

先に実施した画面操作の知見を踏まえてスキルを作成してくれます。
実際に作成されたスキル定義では、利用すべきツール名の特定や画面内で操作すべきオブジェクトが明確になっており、Bobがストレートに処理を実行しやすくなっています。

SKILL.mdの抜粋
## Step 4 — 項目を選択する

1. `img[id="elementButton"]`(「項目を選ぶ」)をクリックする。
2. 「日別値」ラジオボタン(`radio "日別値" [checked]`)が選択済みであることを確認する。選択されていなければ `radio "日別値"` をクリックする。
3. 「気温」タブはデフォルトで表示されている。以下をクリックする(2つ同時に呼び出し可):
   - `checkbox "日最高気温"` exact: true
   - `checkbox "日最低気温"` exact: true
4. 「雲量/天気」タブのリンク(`link "雲量/天気"` → href `#other1tab`)をクリックする。
5. 以下をクリックする(2つ同時に呼び出し可):
   - `checkbox "天気概況(昼:06時~18時)"`
   - `checkbox "天気概況(夜:18時~翌日06時)"`
6. 右パネルの `#selectedElementList` に4項目が揃っていることを `mcp__playwright__browser_evaluate` で確認する:
   ```js
   () => document.querySelector('#selectedElementList').innerText.trim()
   ``` 

---

## Step 5 — 期間を入力する

1. `img[id="periodButton"]`(「期間を選ぶ」)をクリックする。
2. 「連続した期間で表示する」ラジオ(`radio "連続した期間で表示する" [checked]`)が選択済みであることを確認する。
3. 開始日のコンボボックスを設定する。コンボボックスは `#periodArea` 内に「年・月・日から」「年・月・日まで」の順で6つ並んでいる。  
   セレクタで直接操作する:
   ```js
   // 開始年
   document.querySelectorAll('#periodArea select')[0].value = '2026';
   // 開始月
   document.querySelectorAll('#periodArea select')[1].value = '6';
   // 開始日
   document.querySelectorAll('#periodArea select')[2].value = '1';
   // 終了年
   document.querySelectorAll('#periodArea select')[3].value = '2026';
   // 終了月
   document.querySelectorAll('#periodArea select')[4].value = '6';
   // 終了日
   document.querySelectorAll('#periodArea select')[5].value = '30';
   ``` 
   `mcp__playwright__browser_evaluate` で上記スクリプトを実行する(値はユーザー入力に置換)。
4. `#selectedPeriod` の表示テキストを `mcp__playwright__browser_evaluate` で確認する:
   ```js
   () => document.querySelector('#selectedPeriod').innerText.trim()
   ``` 

Step.6 追加されたスキルの検証を行う

BobがRPA相当の操作ができることを確認します。

新しいタスクを作成し、Bobに次のように指示します。

気象庁から過去の気象データを取得してください。場所は札幌で25/7/1~25/7/31の期間としてください。

場所や期間を任意に指定しつつ、結果を取得することができました。

検索結果札幌

Bobコインの消費も抑えられています(実績値としてStep.4では6.55コイン、Step.6では2.30コインを消費)。

おわりに

従来チーム内で行っていた準備と変わらない言葉づかい・表現で、RPAの機能が再現できました。
反復作業の時間削減効果も大きいですが、ツールの習熟にかかる準備コストも少なくて済むということがご理解いただけたのではないでしょうか。

今回で全3回にわたる「事務作業にも役に立つ IBM Bob の使い方」シリーズは完結です。プロンプトのスキル化(第1回)、MCPによるWeb連携(第2回)、そして今回のRPA化(第3回)を通して、Bobが開発だけでなく日常の事務作業も強力にバックアップできるパートナーだと分かっていただけたかと思います。

さまざまな日常課題の解消に、Bobの利用はとてもハードルが低いです。ぜひさまざまな可能性を追求してみてください。

2
0
2

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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?