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

生成AI活用 MESCIUS ActiveReports.NETの適当なコントロール名を意味のある名前にリファクタリングする

3
Last updated at Posted at 2026-01-11

概要

前回の記事では、GitHub Copilotを活用してActiveReportsのページレポート(.rdlx)からコントロール一覧を自動生成する方法を紹介しました。
本記事では、その一歩先として、適当なコントロール名(TextBox1, TextBox2...)を、内容に基づいた意味のある名前(txtTitle, txtCustomerName...)に自動でリファクタリングする方法を紹介します。

注意事項・免責事項

本記事について

  • 本記事は個人の検証プロジェクトです
  • ActiveReports試用版を使用しています
  • 商用利用時は正式ライセンスが必要です
  • メシウス社の公式見解ではありません
  • あくまで個人的な試みであり、推奨される開発手法とは限りません
  • 生成AIによる編集結果は必ず手動で確認してください

メシウス社について

本記事で使用しているActiveReportsは、株式会社メシウス(MESCIUS inc.)が開発・販売する優れた.NET帳票コンポーネントです。

公式サイト: https://www.mescius.jp/activereports/

より詳しい情報や正式な開発ガイドは、公式ドキュメントをご参照ください。

背景と課題

ActiveReportsでレポートを開発していると、以下のような課題に直面することがあります。

よくある問題

  • デフォルトで生成されるコントロール名が TextBox1, TextBox2, Table1 など、連番になっている
  • どのコントロールが何を表示しているのか、名前からは分からない
  • メンテナンス時にコントロールを探すのに時間がかかる
  • 設計書とソースコードの紐づけが困難

例:請求書レポートの場合

<Textbox Name="TextBox1">  <!-- これが何のTextBoxか分からない -->
  <Value>請求書</Value>
</Textbox>

<Textbox Name="TextBox2">  <!-- これも何を表示しているか不明 -->
  <Value>=Fields!CustomerName.Value+" 御中"</Value>
</Textbox>

<Table Name="Table1">      <!-- テーブルの用途が不明 -->
  ...
</Table>

このような状況では、コードを読んでも一目で理解できず、開発効率が低下します。

理想的な命名

コントロール名は、その役割や表示内容を反映した名前にすることで、可読性と保守性が向上します。

命名規則の例

プレフィックス コントロールタイプ
txt TextBox txtTitle, txtCustomerName
lbl Label lblAmount, lblDate
tbl Table tblInvoiceDetails, tblOrderList
img Image imgCompanyLogo, imgProductPhoto
line Line lineSeparator, lineHeader

リファクタリング後のコード例

<Textbox Name="txtTitle">  <!-- タイトル用TextBoxと分かる -->
  <Value>請求書</Value>
</Textbox>

<Textbox Name="txtCustomerName">  <!-- 顧客名用TextBoxと分かる -->
  <Value>=Fields!CustomerName.Value+" 御中"</Value>
</Textbox>

<Table Name="tblInvoiceDetails">  <!-- 請求明細テーブルと分かる -->
  ...
</Table>

開発環境

名称 バージョン 説明
Windows 10 OS
Visual Studio Community 2022 ActiveReportsのプレビュー表示用
VS Code latest 生成AI(GitHub Copilot)の利用
.NET Framework 4.8 Windows Formsのフレームワーク
ActiveReports.NET 18(試用版) 帳票ツール

実装手順

1. 前提:コントロールリストの生成

前回の記事で紹介した /getReportConrolList コマンドを使用して、まずコントロール一覧を生成します。

/getReportConrolList ActiveReport/Report/Invoice_bluegray.rdlx

これにより、以下のような情報が Invoice_bluegray_controllist.md に出力されます。

| No | コントロール名 | タイプ | データバインディング/値 |
|----|---------------|--------|------------------------|
| 1 | TextBox1 | Textbox | 請求書 |
| 2 | TextBox2 | Textbox | =Fields!CustomerName.Value+" 御中" |
| 3 | TextBox3 | Textbox | 毎度ご利用ありがとうございます... |
...

2. GitHub Copilot Chatでリファクタリングを依頼

生成されたコントロールリストを確認しながら、以下のようなプロンプトでリファクタリングを依頼します。

プロンプト例

各Nameが適当なので妥当な名前にしてくれ
編集してくれ

非常にシンプルなプロンプトですが、GitHub Copilotは以下を自動的に判断して実行してくれます。

  1. rdlxファイルの内容を解析
  2. 各コントロールの用途を判断
    • <Value>請求書</Value> → タイトル用なので txtTitle
    • <Value>=Fields!CustomerName.Value+" 御中"</Value> → 顧客名なので txtCustomerName
    • テーブルのカラム(伝票№、日付、商品名...)に基づいて tblInvoiceDetails
  3. 適切な命名規則を適用(txtプレフィックス、キャメルケースなど)
  4. rdlxファイルを一括編集
  5. コントロールリストも同時に更新

画像です。
image.png

image.png

image.png

3. リファクタリング結果

Before(変更前)

<Textbox Name="TextBox1">
  <Value>請求書</Value>
</Textbox>

<Textbox Name="TextBox2">
  <Value>=Fields!CustomerName.Value+" 御中"</Value>
</Textbox>

<Textbox Name="TextBox5">
  <Value>=Sum(Fields!UnitPrice.Value*Fields!Number.Value)</Value>
</Textbox>

<Table Name="Table1">
  <DataSetName>DataSet1</DataSetName>
  ...
</Table>

<Image Name="Image1">
  <Value>image</Value>
</Image>

After(変更後)

<Textbox Name="txtTitle">
  <Value>請求書</Value>
</Textbox>

<Textbox Name="txtCustomerName">
  <Value>=Fields!CustomerName.Value+" 御中"</Value>
</Textbox>

<Textbox Name="txtTotalAmount">
  <Value>=Sum(Fields!UnitPrice.Value*Fields!Number.Value)</Value>
</Textbox>

<Table Name="tblInvoiceDetails">
  <DataSetName>DataSet1</DataSetName>
  ...
</Table>

<Image Name="imgCompanyLogo">
  <Value>image</Value>
</Image>

VS2022のデザイナで確認した結果
できてる。問題なさそうですね!
image.png

4. 変更されたコントロール名の一覧

元の名前 新しい名前 用途
TextBox1 txtTitle 請求書タイトル
TextBox2 txtCustomerName 顧客名表示
TextBox3 txtGreeting 挨拶文
TextBox4 txtAmountLabel ご請求金額ラベル
TextBox5 txtTotalAmount 合計金額表示
Line1 lineSeparator 区切り線
TextBox6 txtCompanyName 会社名
TextBox7 txtCompanyAddress 会社住所
TextBox8 txtCompanyContact 会社連絡先
Image1 imgCompanyLogo 会社ロゴ画像
Table1 tblInvoiceDetails 請求明細テーブル

テーブル内のヘッダーと明細行のコントロール名も同様に変更されています。

TextBox9  → txtHeaderSlipNo      (ヘッダー:伝票№)
TextBox10 → txtHeaderDate        (ヘッダー:日付)
TextBox11 → txtHeaderProducts    (ヘッダー:商品名)
TextBox12 → txtDetailSlipNo      (明細:伝票№)
TextBox13 → txtDetailDate        (明細:日付)
...

5. コントロールリストも自動更新

GitHub Copilotは、rdlxファイルだけでなく、前回生成したコントロールリストのMarkdownファイルも同時に更新してくれます。

更新された Invoice_bluegray_controllist.md

| No | コントロール名 | タイプ | データバインディング/値 |
|----|---------------|--------|------------------------|
| 1 | txtTitle | Textbox | 請求書 |
| 2 | txtCustomerName | Textbox | =Fields!CustomerName.Value+" 御中" |
| 3 | txtGreeting | Textbox | 毎度ご利用ありがとうございます... |
...

## tblInvoiceDetails (明細テーブル) の構造

### ヘッダー行
| セル名 | 値 |
|--------|-----|
| txtHeaderSlipNo | 伝票№ |
| txtHeaderDate | 日付 |
| txtHeaderProducts | 商品名 |
...

動作確認

リファクタリング後は、必ずActiveReportsデザイナーで動作確認を行います。

Visual Studio 2022で確認

  1. ソリューションを開く
  2. リファクタリングした.rdlxファイルをダブルクリック
  3. デザイナーで開く
  4. プレビュー実行

確認ポイント

  • ✅ レポートが正常に表示される
  • ✅ データバインディングが正しく動作している
  • ✅ レイアウトに変更がない
  • ✅ 計算式が正常に動作している

重要: 名前の変更だけなので、表示結果やレイアウトに影響はありません。

効果とメリット

1. 可読性の向上

<!-- Before -->
<Textbox Name="TextBox15">
  <Value>="請求書番号:" + First(Fields!BillNo.Value, "DataSet1")</Value>
</Textbox>

<!-- After -->
<Textbox Name="txtBillNo">
  <Value>="請求書番号:" + First(Fields!BillNo.Value, "DataSet1")</Value>
</Textbox>

コントロール名を見ただけで、請求書番号を表示するTextBoxだと分かるようになりました。

2. メンテナンス効率の向上

従来は「どのTextBoxが請求金額を表示しているんだっけ?」と、デザイナーで一つずつクリックして確認する必要がありました。

リファクタリング後は、txtTotalAmount という名前から即座に判断できます。

3. チーム開発での理解共有

新しいメンバーがプロジェクトに参加した際も、コントロール名から用途が分かるため、学習コストが削減されます。

4. 設計書との整合性

コントロールリストに意味のある名前が記載されるため、設計書としての価値が向上します。

5. 工数削減

  • 手動での命名変更: 1ファイルあたり約30分~1時間
  • 生成AIを活用: 約1分(プロンプト入力 + 確認)

約30倍~60倍の効率化(個人の検証環境での測定結果)

GitHub Copilotの賢さ

今回のリファクタリングで、GitHub Copilotは以下のような判断を自動的に行いました。

1. コントロールの用途を推測

<Textbox Name="TextBox4">
  <Value>ご請求金額</Value>
</Textbox>


「ご請求金額」という文字列から「ラベル」であると判断し、txtAmountLabel に命名。

<Textbox Name="TextBox5">
  <Value>=Sum(Fields!UnitPrice.Value*Fields!Number.Value)</Value>
</Textbox>


合計計算式から「金額の合計値」を表示していると判断し、txtTotalAmount に命名。

2. 階層構造を理解

テーブル内のコントロールには、txtHeader〜(ヘッダー)と txtDetail〜(明細行)のように、階層を反映した名前を付けています。

3. 命名規則の統一

  • TextBox系: txt プレフィックス
  • Image系: img プレフィックス
  • Table系: tbl プレフィックス
  • Line系: line プレフィックス

プロジェクト全体で一貫した命名規則を自動適用しています。

4. 複数ファイルの同時更新

rdlxファイルとコントロールリストのMarkdownファイルを同時に更新する必要があることを理解し、両方を更新してくれました。

他の生成AIツールでも可能

今回はGitHub Copilotを使用しましたが、以下のツールでも同様のリファクタリングが可能です。

Claude (Anthropic)

VS CodeのClaude拡張機能を使用すれば、同様のプロンプトでリファクタリングできます。

このrdlxファイルのコントロール名を、内容に基づいた意味のある名前に変更してください

ChatGPT

rdlxファイルの内容をコピー&ペーストし、リファクタリングを依頼することで、変更後のXMLを取得できます。

ただし、ファイルへの直接編集はできないため、手動でコピー&ペーストする必要があります。

注意点とベストプラクティス

1. 必ずバックアップを取る

リファクタリング前に、必ずGitでコミットするか、ファイルのバックアップを取りましょう。

git add .
git commit -m "リファクタリング前のバックアップ"

2. 動作確認は必須

生成AIによる編集後は、必ずActiveReportsデザイナーでプレビュー実行し、正常に動作することを確認してください。

3. 命名規則はプロジェクトに合わせる

今回は txt, tbl, img などのプレフィックスを使用しましたが、プロジェクトの命名規則がある場合は、それに合わせて指示を出すことができます。

各コントロール名を以下の命名規則に従って変更してください:
- TextBox: lbl(ラベル)、txt(入力・表示)
- Table: grd
- Image: pic

4. 段階的に適用する

大規模なプロジェクトの場合は、一度に全てのファイルを変更するのではなく、1ファイルずつ確認しながら進めることをおすすめします。

まとめと所感

生成AIの活用場面

今回の検証を通じて、生成AIは以下の作業に特に有効であることが分かりました。

  1. 定型的だが時間がかかる作業の自動化

    • コントロール名の変更のような、ルールは単純だが手間がかかる作業
  2. XMLの構造理解

    • rdlxファイルの階層構造を理解し、適切な命名を提案
  3. 複数ファイルの同期更新

    • rdlxファイルとドキュメントファイルを同時に更新

生成AIとの協働

生成AIは「指示を出せば自動でやってくれる魔法のツール」ではなく、開発者のアシスタントとして活用すべきです。

  • ✅ 生成AIに任せる: 定型的な編集作業、コード補完、候補の提示
  • ❌ 生成AIに丸投げしない: 最終的な判断、品質確認、設計判断

重要: 本記事で紹介した手法は、あくまで個人の検証プロジェクトでの試みです。実際のプロジェクトに適用する際は、組織のコーディング規約や品質基準に従い、十分なテストと確認を行ってください。

今後の展開

今後は以下のような取り組みを検討しています。

  • 自動レビュー機能: 命名規則に違反しているコントロールを自動検出
  • 設計ドキュメント自動生成: rdlxファイルから詳細な設計書を自動生成
  • テストコード生成: レポートの単体テストコードを自動生成

前回の記事

前回は、ActiveReportsのコントロール一覧を自動生成する方法を紹介しました。

生成AI活用 ActiveReports.NET 18(試用版)のページレポートの項目一覧を取得する

参考

ActiveReports公式リソース

製品ページ: https://www.mescius.jp/activereports/

公式ドキュメント: https://docs.mescius.jp/activereports/

サンプル集: https://github.com/MESCIUSJP/ActiveReports-Invoice-Reports-Sample

技術ブログ: https://www.grapecity.co.jp/developer/

GitHub Copilot - カスタム指示

GitHub差分

今回のリファクタリングの詳細な差分は以下で確認できます。

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