アルファテックブログ

生成AIを用いたMuleフロー生成

カバー

目次

  1. はじめに

    • 執筆のきっかけ
    • MuleSoftとは何か
    • 対象読者
  2. 生成AIを用いたMuleフロー生成

    • 検証対象の生成AI製品
    • 使用するプロンプト
      • 簡単なMuleフロー作成依頼
      • 複雑なMuleフロー作成依頼
  3. 製品評価

    • 各AI製品の成果物・製品評価
      • GitHub Copilot
      • Claude
      • Cursor
  4. まとめ

    • 製品の総合評価
    • 考察
    • 今後の展望

はじめに

執筆のきっかけ

近年、生成AIがさまざまな分野で活用されており、生成AIを取り入れた開発が増えています。私のチームではMuleSoftを取り扱っており、生成AIの積極的な活用に向けてルール作りや検証を進めていますが、実運用には至っていないのが現状です。そのため、この機会に自身で生成AIが開発にどの程度活用できるか確認し、他のMuleSoft開発者にも共有できればと思い執筆しました。

MuleSoftとは何か

MuleSoftについてや、基礎的な活用方法は以下の過去ブログにまとまっています。

MuleSoftにおけるRAMLを使ったAPIの実装

対象読者

この記事は、MuleSoft Anypoint Platformのユーザーだけでなく、最新のAI駆動型開発ツールに関心を持つ技術者も読者対象としています。

生成AIを用いたMuleフロー生成

検証対象の生成AI製品

コード生成AIとして知名度の高い製品として、今回は以下の3製品を検証対象としてピックアップしました。

製品名プラン
GitHub CopilotCopilot Enterprise
ClaudeFree
CursorPro

使用するプロンプト

今回は以下の観点から、簡単なMuleフロー作成依頼と複雑なMuleフロー作成依頼の2種類のプロンプトを使用しました。

  • Muleフロー生成ができるか
  • 複雑なMuleフローも実現可能か

実際に使用したプロンプトは以下の通りです。

簡単なMuleフロー作成依頼

MuleSoftで、以下の要件に基づいたMuleフローのXMLコード(Mule Configuration File)を生成してください。
目的:HTTPリクエストを受けてJSONデータを返す
入力:HTTP GETリクエスト
出力:JSON形式で {"message": "Hello"}を返す
処理内容:
- HTTPリスナーでリクエストを受け取る
- クエリパラメータを取得
- メッセージを組み立ててJSONとして返す

複雑なMuleフロー作成依頼

MuleSoftで、以下の要件に基づいたMuleフローのXMLコード(Mule Configuration File)を生成してください。
目的:顧客情報を受け取り、DBに登録し、Salesforceと連携して通知を送る
入力:
- HTTP POSTリクエスト(JSON形式)
- リクエストボディ例:{"customerId": "123", "name": "山田太郎", "email": "taro@example.com"}
処理内容:
- リクエスト受信(HTTP Listener)
- JSONをオブジェクトに変換(Transform Message)
- データベースに登録(Database Connector)
- Salesforce APIを呼び出して通知(Salesforce Connector)
- 成功・失敗に応じたレスポンスを返す(Try-Catch + Choice Router)
出力:
- 成功時:{"status": "success", "message": "登録完了"}
- 失敗時:{"status": "error", "message": "登録失敗"}(例:DBエラー、Salesforceエラー)

製品評価

各AI製品の成果物・製品評価

Muleフローの出力をAI製品で依頼した場合、XML形式で出力されます。しかし、XML形式での比較だと視認性が低いため、Anypoint StudioでXMLを取り込み、GUIで表示された状態を記載します。今回は大まかな処理の流れのみに注視していきます。

GitHub Copilot

簡単な生成プロンプト
フローの流れはおおむね出力できていますが、MuleSoftで利用できないXML要素(赤枠)が含まれています。

Muleフロー

複雑な生成プロンプト
複雑なフローも出力できていますが、簡単な場合と変わらずMuleSoftで利用できないXML要素が含まれています。

Muleフロー2 Muleフロー3

製品評価

開発時に良い点

  • 複数のエラーハンドリングが網羅されており、エラーごとにログ出力も行われているためエラー回りの実装に強い。

開発時に悪い点

  • 一部MuleSoftで利用できないXML要素を用いている(set-propertyという存在しないコンポーネントを用いた記載になっている)ため処理内容の確認、修正が手間。

総評

  • 私の主観として処理の流れは一番開発イメージに近い。しかし、一部MuleSoftで利用できないXML要素を用いているため、たたき台としてやや不十分と感じる。

Claude

簡単な生成プロンプト
簡単なフローは問題なく出力できています。

Muleフロー4

複雑な生成プロンプト
指示内のChoiceコンポーネントが処理に反映できていません。処理ごとに値を細かくSet Variableで保持している(赤枠)のが特徴です。

Muleフロー5

製品評価

開発時の良い点

  • 全てMuleSoftで利用できるXML要素で記載されているため、そのままたたき台として使用できる。

開発時の悪い点

  • 主観だが処理に無駄が多い(処理ごとにSet VariableでpayloadやhttpStatusの値を保持しているが、値はどこにも使われていない)。
  • 複雑な指示は完全には取り込めない。

総評

  • 全てMuleSoftで利用できるXML要素で記載されているのは高評価だが、無駄な操作が多く複雑な指示が完全に取り込めなかった。そのため、プロンプトの与え方を工夫すれば改善できる見込み。

Cursor

簡単な生成プロンプト
他製品では取得したクエリパラメータをTransform Messageで適切に変換して出力に反映していましたが、本フローではTransform Messageによる変換処理が抜けており、クエリパラメータが出力に反映されていませんでした。

Muleフロー6

複雑な生成プロンプト
指示した処理内容は出力できていますが、エラーハンドリング(Catchの部分)がMuleSoftで利用できないXML要素になっています。

Muleフロー7

製品評価

開発時の良い点

  • 指示そのままのMuleフローを生成したうえで、こんな処理も追加してはどうかと提案してくれることもあるため、処理の流れを検討している際に漏れに気付きやすい。

開発時の悪い点

  • 一部MuleSoftで利用できないXML要素を用いているため処理内容の確認、修正に手間がかかる。

総評

  • 処理の流れは一番シンプルかつ、指示内容を満たしたものになっている。簡単なプロンプトでのTransform Message不足は、プロンプトにクエリパラメータを出力することを明記していなかったためであり、製品の問題ではない。ただし、一部MuleSoftで利用できないXML要素を用いているため、たたき台としてやや不十分と感じる。

まとめ

製品の総合評価

それぞれの製品に良し悪しがありましたが、実際の開発で使用するにはまだ難しいと感じました。たたき台としては一定の役割を果たせそうですが、MuleSoftで利用できないXML要素を記載してしまうことや、処理の無駄など生成したMuleフローをそのまま使うには問題が見られるため、まだまだ技術成長の余地がありそうです。

考察

検証では簡単なプロンプトと複雑なプロンプトの両方で生成を試みましたが、望む結果(正常に動作するソースコード)がなかなか得られませんでした。これは一般的な生成AIが学習するデータとして、MuleフローのXMLの知識がまだまだ不足しているからだと想定しています。より良い結果を出すためにできることについて、この記事では踏み込んで検証することはできませんでしたが、AIが不得意な内容を生成させるときに以下の工夫を行うことが考えられます。

  1. プロンプトやカスタム・インストラクション・ファイルで前提条件や手順を詳細に与える

    公式ドキュメントやAIに与えるための実装例ファイルを理解させた上で生成させるといった、前提条件と手順をプロンプトに加えるという工夫です。製品によっては、特定のファイル名で前提や手順を記載しておくことで生成時に参照する仕組み(カスタムインストラクション)が利用できるものもあります。

  2. RAGとしてMuleフロー開発の知識を与える

    RAGとは、生成AIが検索に利用できる外部情報を指します。学習が不足している場合は、それを補うという工夫です。

今後の展望

今回は知名度の高い3製品をピックアップして検証しましたが、MuleSoftでもSalesforce独自の生成AI機能である「Agentforce」が登場しています。私の環境だと利用できなかったので今回の検証対象からは外しましたが、今後MuleSoft開発で用いられる生成AIとして間違いなく第一に挙げられるため、こちらも機会があれば検証して本ブログなどで共有できればと思います。

今後さまざまな開発で生成AIが用いられていくことが想定されます。MuleSoft開発者やそれ以外の方も、この記事からMuleSoftと生成AIを組み合わせた開発に興味を持ち、開発に生成AIを積極的に取り入れる心構えを持っていただけたら幸いです。


TOP
アルファロゴ 株式会社アルファシステムズは、ITサービス事業を展開しています。このブログでは、技術的な取り組みを紹介しています。X(旧Twitter)で更新通知をしています。