ブログ

【SAP BTP×AI活用】AI積極活用プロジェクトに参画したリアルな記録と実践テクニック

この記事をSNSでシェア!

はじめに

社内でもまだ前例の少ない、生成AIをフル活用したSAP BTPアプリケーション開発プロジェクトに参画しました。紙と電卓がPCとExcelに変わった時と同レベルのパラダイムシフトを実感した本プロジェクトにおいて、AIを単なる「チャットボット」としてではなく、「優秀なペアプログラマー」として使いこなすための実践テクニックとリアルな所感を、BTPエンジニアの皆様へ共有します。

本記事の対象読者

  • 開発プロジェクトへのAI導入や、現場の生産性向上に関心のあるマネージャー・DX推進担当者
  • SAP BTP開発エンジニア(特にCAP JavaやSAP UI5などの技術スタックに携わっている方)
  • 生成AI(Cline等のAIエージェントやプロンプト戦略)の実務活用を模索しているエンジニア

今回の案件概要

本プロジェクトは、人事システム系のBTPアプリケーション(2画面)を対象とした5ヶ月間の開発案件です。3名体制(リーダー1名、PG2名)で進行しました。

  • フロントエンド: SAP UI5 (Fiori Template, Building Block)
  • バックエンド: CAP Java
  • データソース等: PostgreSQL, SAP SuccessFactors連携
  • 前提条件: 基本設計はExcel形式、詳細設計書はMarkdown形式で作成

今回活躍したAIツールと役割分担

本案件では、フェーズや用途に応じて3つのAIを適材適所で使い分けました。

  • Cline (Claude 4.5 Sonnet): VS Code拡張機能として導入した、本案件のメインエンジンです。既存コードの読解からバグ修正、設計書やUT仕様書の自動生成まで幅広く対応しました。
  • M365 Copilot (GPT-4/GPT-4o): エラー画面(画像)の解読や、Excelの読み込みを担当しました。

【実例動画】AIエージェントの稼働風景

実際にVS Code上でClineが自律的にコードを生成・編集していく様子をご覧ください。

使用プロンプト(クリックで表示)
# 画面UI設計書(フロントエンド編)
## 1. 概要
本画面は、ユーザーが情報を入力し、後続の処理を呼び出すための画面である。
SAP Fioriのシンプルかつ直感的なデザイン言語に基づき、無駄な装飾を省き、ユーザーが迷わず入力と実行を行えるレイアウト構成とする。
---
## 2. 画面レイアウト詳細
画面全体の配置および視覚的特徴は以下の通り。
* **背景デザイン**:
    * 画面全体は、Fiori標準の背景で統一。
* **入力フォームエリア(画面中央やや左上部)**:
    * 画面の中央からやや左上に寄せられた位置に、垂直(縦方向)に並んだ2組の入力項目が配置されている。
    * 各行は「ラベル」と「入力ボックス」が水平(横方向)にペアとなって並ぶ。
    * **1行目(ID入力)**:
        * 左側に「`ID:」というテキストラベルが配置される。
        * その右側に、長方形の入力フィールド(テキストボックス)が配置される。
    * **2行目(パスワード入力)**:
        * 「ID:」の真下に並ぶ形で、左側に「`パスワード`」というテキストラベルが配置される。
        * その右側に、1行目と完全に幅・位置が揃えられた、入力フィールド(パスワードボックス)が配置される。
* **アクションエリア(画面右下部)**:
    * 入力エリアから大きく離れた、画面の右下隅に「実行ボタン」が単独で配置されている。
---
## 3. UIコンポーネント仕様一覧
画面を構成するSAPUI5(Fiori標準)コントロールの詳細仕様。
| 項番 | コンポーネント名 | SAPUI5コントロール | コントロールID | 表示テキスト / 属性 | バリデーション・制約 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 1 | 画面コンテナ | `sap.m.Page` | `loginPage` | `showHeader="false"` | - | ヘッダーバー非表示のフルスクリーン |
| 2 | レイアウト配置 | `sap.m.VBox` | `mainLayout` | `alignItems="Center"`<br>`justifyContent="Center"` | - | フォームを中央付近に寄せるための外枠 |
| 3 | フォーム | `sap.ui.layout.form.SimpleForm`| `loginForm` | `editable="true"` | - | ラベルと入力を綺麗に整列させるコンテナ |
| 4 | IDラベル | `sap.m.Label` | `idLabel` | `text="ID:"` | - | 入力フィールド(idInput)と関連付け |
| 5 | ID入力 | `sap.m.Input` | `idInput` | `type="Text"`<br>`required="true"` | 必須入力<br>空白不可 | 半角英数字(SuccessFactorsのID体系に準拠) |
| 6 | パスワードラベル | `sap.m.Label` | `passwordLabel` | `text="パスワード:"` | - | 入力フィールド(passwordInput)と関連付け |
| 7 | パスワード入力 | `sap.m.Input` | `passwordInput` | `type="Password"`<br>`required="true"` | 必須入力<br>入力値は「●」でマスキング | セキュリティ保護のため型を`Password`に指定 |
| 8 | 実行ボタン | `sap.m.Button` | `executeBtn` | `text="実行"`<br>`type="Emphasized"` | - | 押下時にコントローラーの `.onExecute` を呼び出し |

Planモード(計画): AIエージェント(Cline)に依頼を読み込ませ、実装プランを自律的に構築させます。


Actモード(コード生成): プランで出力された計画に基づき、AIエージェントが実際にソースコードの生成を自律的に行います。

開発フェーズ別:AIの具体的な活用例

基盤作成・詳細設計フェーズ

  • アーキテクチャのベストプラクティス調査(M365 Copilot): CAPやBuilding Blockといった専門的な概念の補完や、DB接続の最適解の模索にAIを活用しました。
  • ExcelからMarkdownへの自動変換(M365 Copilot): 基本設計(Excel)を読み込ませ、詳細設計の1次原稿(Markdown)へ書き起こさせました。AIはMarkdown形式の読み込みが得意なため、後続フェーズの効率化に直結します。
  • ドキュメントの最新化(Cline): 実装と設計の乖離を防ぐため、ドキュメントの更新もAIに任せました。

実装・リファクタリングフェーズ

  • UI5 / CAP特有のロジック実装(ClineM365 Copilot): SAP UI5やCAP Javaといった専門性の高いコードは動作検証でつまずくこともありましたが、正規表現や配列化などのロジック組み立ては人間よりも速く正確でした。
  • 画像からのコード生成(M365 Copilot→Cline): 画面イメージをコードに落とし込む作業はCopilotを活用し、それ以外のロジックは主にClineで実装しました。
  • トラブルシューティング(Cline・M365 Copilot): エラー解決は基本Clineで行い、難渋する場合はM365 CopilotにSAP公式ドキュメントやQAサイトを調査させることで解決に導きました。

単体テスト(UT)編

  • テスト資産の自動生成(Cline): Markdownの詳細設計書とソースコードを読み込ませ、テストケースとテスト仕様書をCSV形式で生成しました。テストデータの作成にも有効でした。
  • QUnitスクリプトの実装(Cline): SAP UI5のフロントエンド自動テスト(QUnit)も、テンプレートコードを与えて試行錯誤を重ねることで自動生成を実現しました。

SAP開発でAIを「使いこなす」3つの実践テクニック

AIへの指示の出し方(プロンプト)次第で、アウトプットの品質は劇的に変わります。BTP開発で特に有効だったテクニックを紹介します。下記の方式はClineやM365 Copilot以外のAIエージェントやチャット型AIでも適用可能です。

①AIに「プロジェクト専用のルール」を事前に覚えさせる(ルール設定と拡張機能)

AIは優秀ですが、そのままでは一般的なネットの知識で回答してしまいます。そのため、まずは「私たちのプロジェクトのルールや専用の辞書」をしっかり教え込む(土台作り)ことが重要です。

  • プロジェクト固有ルールの設定(AIエージェントのみ):
    ClineなどのAIエージェントには、事前の制約ルールを設定できます(Clineの場合、「.clinerules」という名称のファイルに記述)。SAP開発特有の「もっともらしい嘘(ハルシネーション)」を防ぐため、以下のようなルールを記述しました。
    • 憶測で処理を行わない(ハルシネーション予防)
    • 公式ドキュメントを必ず参照する
    • 指示が曖昧な場合や複数案がある場合は、勝手に処理せずユーザーに確認する
  • MCPサーバーの導入(AIエージェントのみ)
    「MCP」と呼ばれる外部ツールとの連携機能を使うことで、AIにSAP関連の最新かつ正確な情報を持たせることができます(※導入時はセキュリティリスクと信頼性の確認が必須です)。

【コード例:使用したMCPサーバーの設定(cline_mcp_settings.json)】

{
  "mcpServers": {
    "@ui5/mcp-server": {
      "timeout": 60,
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@ui5/mcp-server"
      ],
      "env": {
        "NODE_OPTIONS": "--no-warnings",
        "PATH": "/usr/local/bin:/usr/bin:/bin"
      }
    },
    "fiori-mcp-server": {
      "timeout": 60,
      "type": "stdio",
      "command": "npx",
      "args": [
        "-yes","@sap-ux/fiori-mcp-server@latest", "fiori-mcp"
      ],
      "env": {
        "NODE_OPTIONS": "--no-warnings",
        "PATH": "/usr/local/bin:/usr/bin:/bin"
      }
    }
  }
}

(参考: @sap-ux/fiori-mcp-server, @ui5/mcp-server)

②AIが迷わない「型(テンプレート)」と「お手本」を用意する

  • 構造化された文章(Markdown)の徹底:
    AIは、ベタ打ちの文章よりも #- で整理された箇条書き(Markdown記法)を好みます。人間が読む「整理された議事録」と同じで、AIもノイズが減って処理が正確になります。
  • 「お手本」による誘導:
    SAPの特殊な規約を言葉だけで説明するより、「これと同じ書き方で作って」と正常に動くサンプルコードを渡すのが、AIにとって一番確実で成功率が上がります。

【プロンプト例:エラー解決依頼用テンプレート】

## 依頼
**【相対パス】**の【X行目】にある処理を実行するとエラーになる。原因を調査し修正案を提示してください。

## エラー内容
**コピーしたエラー内容をここにそのまま貼り付け**

## サンプルコード(または期待する動作のお手本)
**お手本となる正常稼働するコードや公式リファレンスのスニペットを貼り付け**

## 補足情報
**環境差異や、その他伝える必要のある前提情報があれば記述する**

③ 一度に多くを頼まない(タスクの細分化とチャットの部屋分け)

  • ステップバイステップでの実行(タスクの細分化):
    一度に「画面を作って、テストも書いて」と大量に依頼するとAIも混乱します。「まずは内容を理解して」→「次に実装案を出して」→「1つずつコードを書いて」と、段階を踏ませることで品質が向上します。
  • 話題が変わったら部屋を変える(チャットの分割):
    AIとのチャット履歴(コンテキスト)が長くなると、昔の話題がノイズになって誤作動を起こしやすくなります。「1つのチャットルームにつき、1つの議題」を原則とし、別の画面や機能の話題に切り替わるタイミングでチャットを新規作成することが、AIの回答精度を高く保つコツです。

おわりに:AI時代のエンジニアの役割と、実践から得た気づき

本案件を通して、「AIを使えば楽ができる」という単純なものではなく、「日々の業務から単純作業が消え、思考系の業務(要件定義、アーキテクチャ設計、コードレビュー等)の比重が増える」ことを痛感しました。一見、生産性が上がることで楽になりそうですが、業務内容が濃くなり、AIの高度な返答から知らない用語や知識を大量に浴びるため、脳疲労はむしろ増えるかもしれません(実体験)。

実際に案件でAIを毎日触り続け、試行錯誤する中で、「現場でのAI活用に本当に必要なスキル」は以下の5つだと感じました。

  • AIの特性を正確に理解し、キャッチアップし続ける: AIの進化は早く、情報のアップデートが常に必要です。
  • 「AIに任せられるか」を常に考える視点: 日々の手作業をどうすればAIで効率化できるか、その視点を持つことが活用の近道です。
  • 回答を正しく評価する「専門性」: AIの丁寧で高度な回答を正しく理解し、成果物を担保できなければ品質に悪影響が出ます。的確な指示を出すためには、エンジニア自身の継続的な学習が不可欠です。
  • タスクの「切り分け」と「言語化」能力: 複雑な処理は分割して指示した方が成功率が上がります。AIに任せる領域と人間が担う領域の境界線を見極め、要件を正確に伝えるスキルが求められます。
  • まずは触って試行錯誤する「行動力」: 結局のところ、実際に手を動かして失敗から学ぶのが一番身につきます。

AIは今後、PCやスマホと同様に手放せないツールになるはずです。AIができることはAIに任せ、私たちエンジニアはより高度な判断やレビューを主体とする方向へシフトしていくのが理想といえるでしょう。

本記事の知見が皆様のプロジェクトの効率化と品質向上の一助となり、システム開発における現場の負担が少しでも減り、すべてのプロジェクトが円滑に完遂できることを切に祈っています。

投稿者プロフィール

東浦 ななみ
東浦 ななみ
文系大学卒業後、SES企業に就職。常駐先で、C#を用いた生産管理システムの開発や保守を行っていました。現在は株式会社KYOSOに在職し、Javaを用いたSAPのIF開発案件に携わっております。SAP認定試験保有しています。
この記事をSNSでシェア!