0
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 で実現する My Notifications 抽出&レポート生成の自動化

0
Posted at

はじめに

IBM製品の運用において、My Notificationsを通じた最新情報の確認は、システムの安定稼働を支える重要なルーチンワークです。しかし、管理対象の製品数が数十を超えてくると、手動で内容を精査し、レポートにまとめる作業は大きな業務負荷となります。


こうした定型作業の自動化は検討に上がりますが、実際にはいくつかの現実的なハードルが存在します。


実装のコスト: ログイン認証の維持やブラウザ自動化の細かな制御など、本質的なロジック以外に費やす調査・実装時間の確保。

着手の心理的障壁: 「手作業で済ませれば今のところは回る」という状況下で、自動化ツールの開発にまとまった時間を投資することへのためらい。

今回、次世代AI IDEである IBM Bob を開発のパートナーとして活用したところ、これらのハードルを下げ、約2時間という短期間で実用的な抽出・レポーティングツールを構築することができました。


当記事では、AIとの対話を通じてどのように実装上の課題を解決し、実業務に即したツールを具体化したか、その開発プロセスを記録として共有します。


環境

  • 開発パートナー: IBM Bob
  • 実行環境:  Mac PC

用語解説

IBM Bob とは?

IBM Bob は、IBM が 2025 年に発表した従来のコード補完ツールを超える AI 主体型の開発パートナー として設計された生成 AI IDE です。 開発者の意図、既存リポジトリ、組織のセキュリティ基準を理解し、設計からコーディング、テスト、デプロイまで一貫して支援するエージェント型ワークフローを備えています。日本語での対話から実行可能なコード一式を自律的に生成できる点が特徴です。

IBM My notifications とは?

IBM 製品に関する最新情報(Fix Pack / セキュリティ速報 / 技術文書更新など)をメールや RSS で自動受信できる公式サブスクリプションサービスです。運用担当者にとって重要な修正情報を逃さず把握するために欠かせない仕組みです。

(ご参考リンク)


IBM Bob によるツール開発プロセス

Bob を立ち上げて、

 「IBM My Notificationsサイトから特定製品の通知情報を期間指定で抽出し、Markdown形式のレポートを生成するツールを開発したいです」

と相談しながら、対話を通じて開発を進めました。


bob1.png

時々首を傾げている方向が反対に変わります。


そういえば他の AI IDE はキャラクター化された製品は見かけませんが、個人的には、IBM Bob は Bob という小人さんに相談しているイメージで、コーディング中などは「Bob 頑張って、よろしくね!」という気持ちで見守っています :slight_smile:



開発結果

技術スタック

📌 プログラミング言語

項目 要件
Python 3.8 以上

📚 主要ライブラリ

ライブラリ バージョン 用途
Playwright >= 1.40.0 ブラウザ自動化
Requests >= 2.31.0 HTTP 通信
BeautifulSoup4 >= 4.12.3 HTML 解析
lxml >= 5.1.0 XML/HTML 処理
browser-cookie3 >= 0.19.1 Firefox Cookie 読み込み
PyYAML >= 6.0.1 YAML 設定管理
python-dotenv >= 1.0.0 環境変数管理
deep-translator >= 1.11.4 翻訳機能

🧩 アーキテクチャ / 実装内容

項目 内容
実装構成 2 種類:Requests 版(軽量) / Playwright 版(動的コンテンツ対応)
モジュール構成 auth, scraper, parser, report_generator, translator
出力形式 Markdown

🖥 対応環境

種別 内容
OS macOS / Linux / Windows
ブラウザ Firefox(ログイン済み必須)

README.md(抜粋)

ツール内容は README.md ファイルで確認できます。

README.md ファイルをご覧になる場合はクリックして展開してください

IBM My Notifications Extractor

IBM My Notificationsサイトから特定製品の通知情報を期間指定で抽出し、Markdown形式のレポートを生成するツールです。

機能

  • FirefoxのCookieを使用した自動認証
  • Product subscriptionsページからの通知情報取得
  • 期間指定による通知のフィルタリング
  • 通知内容、日付、カテゴリ、バージョン、対応方法の抽出
  • カテゴリ別・重要度別の統計情報生成
  • 見やすいMarkdown形式でのレポート出力

必要要件

  • Python 3.8以上
  • pip(Pythonパッケージマネージャー)
  • Firefox(ログイン済み)
  • インターネット接続

セットアップ手順

ステップ1: Pythonのバージョン確認

python --version
# または
python3 --version

Python 3.8以上であることを確認してください。

ステップ2: プロジェクトディレクトリへ移動

cd ibm-notifications-extractor

ステップ3: 仮想環境の作成(推奨)

仮想環境を使用することで、システムのPython環境を汚染せずにパッケージをインストールできます。

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

# 仮想環境の有効化
# macOS/Linux:
source venv/bin/activate

# Windows:
venv\Scripts\activate

仮想環境が有効化されると、プロンプトに (venv) が表示されます。

ステップ4: 実行スクリプトを使用した自動セットアップ(推奨)

実行スクリプトを使用すると、仮想環境の作成、依存パッケージのインストール、Playwrightブラウザのインストールが自動的に行われます。

macOS/Linux:

chmod +x run.sh
./run.sh

Windows:

run.bat

初回実行時に自動的に以下が実行されます:

  • 仮想環境の作成
  • 依存パッケージのインストール
  • Playwrightブラウザのインストール

ステップ4(代替): 手動セットアップ

実行スクリプトを使用しない場合は、以下の手順で手動セットアップできます。

依存パッケージのインストール

# 仮想環境内で実行
pip install -r requirements.txt

インストールされるパッケージ:

  • playwright: ブラウザ自動化
  • pyyaml: YAML設定ファイルの読み込み
  • python-dotenv: 環境変数の管理
  • beautifulsoup4: HTML解析
  • lxml: XML/HTML処理

事前準備: Firefoxでログイン

このツールはFirefoxのCookieを使用するため、事前にFirefoxでIBM My Notificationsにログインしておく必要があります。

  1. Firefoxを起動
  2. https://www.ibm.com にアクセス
  3. IBM IDでログイン
  4. ログイン状態を保持(Firefoxを閉じないでください)

注意: スクリプト実行中はFirefoxを開いたままにしておいてください。

ステップ5: 設定ファイルの編集

config/config.yaml を編集して、対象製品と期間を設定します。

製品情報の取得方法

  1. IBM My Notificationsにログイン
  2. Product subscriptionsページにアクセス
  3. URLから製品IDを確認
    • 例: https://www.ibm.com/systems/support/myview/subscription/css.wss/view/S19618dd0a81
    • S19618dd0a81 が製品ID(URLパスの最後の部分)

config.yaml の編集例

# IBM認証情報
ibm_credentials:
  login_id: "xxxxxxx@xxx.xxx"  # ログインページで使用するIBM ID(config.yamlに直接記載)

# 対象製品リスト
target_products:
 - product_name: "AIX 7.2 HIPERS, APARs and Fixes"
   product_id: "S19618dd0218"
 - product_name: "AIX 7.3 HIPERS, APARs and Fixes"
   product_id: "S19618dd0a81"
 - product_name: "Db2 for Linux, UNIX and Windows (all current and future products)"
   product_id: "S17c24d2b87f"

# 抽出期間
date_range:
  start_date: "2026-01-01"
  end_date: "2026-01-31"

ステップ6: 動作確認

テスト実行(ヘッドレスモード無効)

初回実行時は、ブラウザの動作を確認するため、ヘッドレスモードを無効にすることを推奨します。

config/config.yaml を編集:

scraping:
  headless: false  # ブラウザを表示

実行

推奨: 実行スクリプトを使用

macOS/Linux:

./run.sh

Windows:

run.bat

または、仮想環境を手動で有効化して実行:

# 仮想環境を有効化
source venv/bin/activate  # macOS/Linux
# または
venv\Scripts\activate  # Windows

# スクリプトを実行
python main.py

期待される動作

  1. ブラウザが起動
  2. IBM ログインページが表示
  3. 自動的にログイン
  4. Product subscriptionsページに移動
  5. 通知情報を取得
  6. レポートが output/ ディレクトリに生成

ステップ7: 出力の確認

ls -la output/

生成されたMarkdownファイルを確認:

cat output/ibm_notifications_*.md

使用方法

基本的な実行

macOS/Linux:

./run.sh

Windows:

run.bat

または、仮想環境を手動で有効化して実行:

macOS/Linux:

source venv/bin/activate
python main.py

Windows:

venv\Scripts\activate
python main.py

使用方法の詳細

ステップ1: Firefoxでログイン

  1. Firefoxを起動
  2. https://www.ibm.com/systems/support/myview/subscription/ にアクセス
  3. IBM IDでログイン
  4. Firefoxを開いたままにする

ステップ2: スクリプトを実行

./run.sh  # macOS/Linux
# または
run.bat  # Windows

スクリプトは自動的にFirefoxのCookieを読み込み、ログイン状態で通知を取得します。

重要:

  • スクリプト実行中はFirefoxを開いたままにしてください
  • Firefoxを閉じると、Cookieが読み込めなくなる場合があります

出力

レポートは output/ ディレクトリに生成されます。

ファイル名形式: ibm_notifications_{製品名}_{日時}.md

レポートの構成

  1. ヘッダー情報

    • 製品名
    • 対象期間
    • 生成日時
  2. サマリー

    • 総通知数
    • カテゴリ別統計
    • 重要度別統計
  3. 通知一覧

    • カテゴリ別にグループ化
    • テーブル形式での一覧表示
  4. 詳細情報

    • 各通知の詳細内容
    • バージョン情報
    • 対応方法
    • 詳細リンク

プロジェクト構造

ibm-notifications-extractor/
├── config/
│   └── config.yaml          # メイン設定ファイル
├── src/
│   ├── __init__.py
│   ├── auth.py              # IBM認証処理
│   ├── scraper.py           # 通知スクレイピング
│   ├── parser.py            # データ解析
│   └── report_generator.py # レポート生成
├── output/                  # 生成されたレポート
├── logs/                    # ログファイル
├── requirements.txt         # 依存パッケージ
├── main.py                  # メインスクリプト
├── run.sh                   # 実行スクリプト(macOS/Linux)
├── run.bat                  # 実行スクリプト(Windows)
└── README.md               # このファイル

設定オプション

config.yaml の主要設定

# IBM認証情報
ibm_credentials:
  login_id: "xxxxxxx@xxx.xxx"  # ログインページで使用するIBM ID(config.yamlに直接記載)

# 対象製品リスト(複数指定可能)
target_products:
  - product_name: "製品名"
    product_id: "製品ID"

# 抽出期間
date_range:
  start_date: "2026-01-01"
  end_date: "2026-01-31"

# 出力設定
output:
  directory: "./output"
  filename_format: "ibm_notifications_{product}_{date}.md"
  include_summary: true      # サマリーを含める
  group_by_category: true    # カテゴリ別にグループ化

# スクレイピング設定
scraping:
  headless: false            # ヘッドレスモード
  use_existing_browser: true # 既存のFirefoxプロファイルを使用(ログイン済みの場合)
  user_data_dir: "./firefox_profile"  # Firefoxプロファイルディレクトリ
  timeout: 30000             # タイムアウト(ミリ秒)
  wait_for_selector_timeout: 10000
  retry_attempts: 3          # リトライ回数
  retry_delay: 5             # リトライ間隔(秒)

# ログ設定
logging:
  level: "INFO"              # DEBUG, INFO, WARNING, ERROR
  file: "./logs/scraper.log"
  console: true              # コンソール出力

開発ツールの稼働確認

上記の内容で config.yaml を修正して run.sh (Mac) で実行すると次の挙動になります。

1 : ブラウザを自動起動し My notifications サイトを開く

スクリーンショット 2026-02-07 10.32.22.png

2 : 自動ログイン

3 : 対象サイトへの自動遷移

スクリーンショット 2026-02-07 10.33.05.png

4 : 情報取得 (期間指定によるフィルタリング)

5 : タイトルを日本語に翻訳

6 : レポート生成


スクリプト実行ログ

$ ./run.sh
==========================================
IBM My Notifications Extractor
==========================================

Python バージョン: 3.14.2
仮想環境を有効化中...
依存パッケージは既にインストール済みです

==========================================
スクリプトを実行中...
==========================================

2026-02-07 10:38:36,000 - __main__ - INFO - ============================================================
2026-02-07 10:38:36,000 - __main__ - INFO - IBM My Notifications Extractor 開始 (Playwright版)
2026-02-07 10:38:36,000 - __main__ - INFO - ============================================================
2026-02-07 10:38:36,000 - __main__ - INFO - 製品の処理を開始: AIX 7.3 HIPERS, APARs and Fixes
2026-02-07 10:38:36,000 - __main__ - INFO - Playwrightで通知ページにアクセス中: https://www.ibm.com/systems/support/myview/subscription/css.wss/view/S19618dd0a81
2026-02-07 10:38:36,252 - __main__ - INFO - Firefoxを起動中 (headless=False)...
2026-02-07 10:38:36,252 - __main__ - INFO - Firefoxプロファイルを使用: /Users/xxxxxx/Library/Application Support/Firefox/Profiles/tkrelvy6.default
2026-02-07 10:38:37,198 - __main__ - INFO - FirefoxのCookieを読み込みました (28個)
2026-02-07 10:38:37,708 - __main__ - INFO - ページを読み込み中...
2026-02-07 10:38:41,339 - __main__ - WARNING - ログインページにリダイレクトされました
2026-02-07 10:38:41,340 - __main__ - WARNING - 現在のURL: https://login.ibm.com/authsvc/mtfim/sps/authsvc?PolicyId=urn:ibm:security:authentication:asf:basicldapuser&Target=https%3A%2F%2Flogin.ibm.com%2Foidc%2Fendpoint%2Fdefault%2Fauthorize%3FqsId%3D430da9cd-a58f-46da-acc2-b588f19bc756%26client_id%3DM2QxNzk4ZjItNWYyMC00
2026-02-07 10:38:48,363 - __main__ - INFO - ログインフィールドを検出: input[id="username"]
2026-02-07 10:38:48,364 - __main__ - INFO - 自動ログインを試みます: xxxxx@xx.xx.xx
2026-02-07 10:38:48,364 - __main__ - INFO - ログインIDを入力中...
2026-02-07 10:38:48,459 - __main__ - INFO - 続行ボタンをクリックしました
2026-02-07 10:38:50,465 - __main__ - INFO - ============================================================
2026-02-07 10:38:50,465 - __main__ - INFO - ログインIDを入力しました
2026-02-07 10:38:50,465 - __main__ - INFO - 処理を続行します(10秒待機)...
2026-02-07 10:38:50,465 - __main__ - INFO - ============================================================
2026-02-07 10:39:00,468 - __main__ - INFO - 目的のページに移動中: https://www.ibm.com/systems/support/myview/subscription/css.wss/view/S19618dd0a81
2026-02-07 10:39:06,017 - __main__ - INFO - ページ移動完了
2026-02-07 10:39:06,017 - __main__ - INFO - 動的コンテンツの読み込みを待機中...
2026-02-07 10:39:11,070 - __main__ - INFO - 通知コンテナを検出しました
2026-02-07 10:39:14,102 - __main__ - INFO - デバッグ用にHTMLを保存しました: logs/debug_page_playwright.html
2026-02-07 10:39:14,520 - __main__ - INFO - ページ取得成功
2026-02-07 10:39:14,525 - __main__ - INFO - 通知を抽出中...
2026-02-07 10:39:14,578 - __main__ - INFO - 通知コンテナの内容: SearchDateNotification2026-02-06IJ57288: EMGR_CHECK_IFIXES SHOWS ERRORS WITH LANG OTHER THAN C OR EN_US2026-02-06IJ57292: A POTENTIAL SECURITY ISSUE EXISTS2026-02-06IJ57290: FOC73H:ISST: LPAR GOT CRAS
2026-02-07 10:39:14,579 - __main__ - INFO - テーブル数: 1
2026-02-07 10:39:14,580 - __main__ - INFO - テーブル内の行数: 801
2026-02-07 10:39:14,597 - __main__ - INFO - 抽出した通知数: 801
2026-02-07 10:39:14,597 - __main__ - INFO - 日付範囲でフィルタリング: 2026-02-04 ~ 2026-02-07
2026-02-07 10:39:14,602 - __main__ - INFO - 日付フィルタリング: 801件 → 12件
2026-02-07 10:39:14,602 - __main__ - INFO - 通知を解析中...
2026-02-07 10:39:14,602 - __main__ - INFO - タイトルを日本語に翻訳中...
2026-02-07 10:39:14,602 - translator - INFO - 翻訳機能を初期化しました
2026-02-07 10:39:22,975 - translator - INFO - 翻訳進捗: 10/12件
2026-02-07 10:39:23,518 - translator - INFO - 翻訳完了: 12件
2026-02-07 10:39:23,518 - __main__ - INFO - レポートを生成中...
2026-02-07 10:39:23,519 - report_generator - INFO - レポートを生成しました: ./output/ibm_notifications_AIX_7_3_HIPERS__APARs_and_Fixes_20260207_103923.md
2026-02-07 10:39:23,519 - __main__ - INFO - レポート生成完了: ./output/ibm_notifications_AIX_7_3_HIPERS__APARs_and_Fixes_20260207_103923.md
2026-02-07 10:39:23,519 - __main__ - INFO - ============================================================
2026-02-07 10:39:23,520 - __main__ - INFO - IBM My Notifications Extractor 完了
2026-02-07 10:39:23,520 - __main__ - INFO - ============================================================

==========================================
実行が完了しました
レポートは output/ ディレクトリに保存されています
==========================================
$ 

作成されたレポート

レポートをご覧になる場合はクリックして展開ください

IBM My Notifications レポート

製品: AIX 7.3 HIPERS, APARs and Fixes
期間: 2026-02-04 ~ 2026-02-07
生成日時: 2026-02-07 10:39:23

📊 サマリー

  • 総通知数: 12件

📝 通知詳細

1. IJ57288: EMGR_CHECK_IFIXES で C または EN_US 以外の LANG でエラーが表示される

Title: IJ57288: EMGR_CHECK_IFIXES SHOWS ERRORS WITH LANG OTHER THAN C OR EN_US

2. IJ57292: 潜在的なセキュリティ問題が存在します

Title: IJ57292: A POTENTIAL SECURITY ISSUE EXISTS

3. IJ57290: FOC73H:ISST: LPAR がクラッシュしました @ E_ASSERT_WAIT_EXT+0000B8 は AIX 7300-04 に適用されます

Title: IJ57290: FOC73H:ISST: LPAR GOT CRASHED @ E_ASSERT_WAIT_EXT+0000B8 APPLIES TO AIX 7300-04

4. IJ57291: 潜在的なセキュリティ問題が存在します

Title: IJ57291: A POTENTIAL SECURITY ISSUE EXISTS

5. IJ57279: PKS AUTH を使用した暗号化された LV の ALT_DISK_COPY が失敗する

Title: IJ57279: ALT_DISK_COPY FAIL FOR ENCRYPTED LV WITH PKS AUTH

6. IJ57287: LPM LUN レベル検証 - テープのマスキングの問題

Title: IJ57287: LPM LUN LEVEL VALIDATION - MASKING ISSUE WITH TAPE

7. IJ57281: ホーム ディレクトリの作成により不正な権限が発生する可能性がある

Title: IJ57281: HOME DIRECTORY CREATION MIGHT RESULT IN BAD PERMISSIONS

8. IJ57282: 潜在的なセキュリティ問題が存在します

Title: IJ57282: A POTENTIAL SECURITY ISSUE EXISTS

9. IJ57280: ECCCONNECT.PROPERTIES が更新中に上書きされる可能性がある

Title: IJ57280: ECCCONNECT.PROPERTIES MAY BE OVERWRITTEN DURING UPDATE

10. IJ57271: ODM に PVID がない場合、UNMIRRORVG が間違ったミラー コピーを削除する

Title: IJ57271: UNMIRRORVG REMOVES INCORRECT MIRROR COPY IF PVID MISSING IN ODM

11. IJ57272: 潜在的なセキュリティ問題が AIX 7200-05 に適用されます

Title: IJ57272: A POTENTIAL SECURITY ISSUE EXISTS APPLIES TO AIX 7200-05

12. IJ57268: 潜在的なセキュリティ問題が AIX 7200-05 に適用されます

Title: IJ57268: A POTENTIAL SECURITY ISSUE EXISTS APPLIES TO AIX 7200-05

出力形式も Bob と相談して修正ができました。
日付順で作成していますが、Bob に相談するとカテゴリ別などに分ける表記なども可能になります。


開発ツールの導入効果

これまで定期的に 60 以上の製品を対象に手動で通知を確認しレポートを作成していましたが、本ツールの活用により、1 回あたりの作業時間は 従来の半分から 3 分の 1 程度に短縮 される見込みです。

ログイン周りの実装はハードルが高く、これまで自動化を断念していた部分でしたが、IBM Bob とのペアプログラミングにより、わずか 2 時間程度で実用レベルのツールを完成させることができました。開発時間中も Bob に軽く相談しながら進められたため、開発の苦しみ (知識・実行力・時間の不足など) を感じることなくメンタルにも優しい開発体験でした :slight_smile:


おわりに

IBM Bob を用いて、個人の「あったらいいな」を具現化するスピードが向上し、確実な実現結果を得られました。


個々の業務で直面する課題は様々だと思いますが、自身のアイディアをもとに、IBM Bob と協力して「業務改善ツール」を簡易に作成できる一例として本稿が参考になれば幸いです。


以上です。

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