# UniversalMigrator

**レガシーコード移行の初期診断と変換たたき台を作る GUI / CLI ツール**

113 種類のプログラミング言語（＋一覧に無い言語もカスタム指定可）に対応し、Anthropic Claude API を AI エンジンとして使用します。
フォルダ内のファイルを一括解析・変換し、サブフォルダ構造も維持します。

> 目的は「完全自動で本番移行を終えること」ではなく、既存コード資産を読み取り、移行方針・難易度・変換候補を早く見える形にすることです。

---

## 🎯 これは何？（30秒で）

- **誰のため**：複数言語のレガシー資産を抱える情シス・SI ベンダー／言語移行の PoC を企画している開発リード
- **何が解決される**：113 言語＋カスタム言語に対応した **「移行たたき台＋難易度可視化」** ツール。Oracle2PostgreSQL や cobol2java のような言語固定ツールでは扱えない「あらゆる組み合わせ」をカバー
- **なぜ既存ツールではダメか**：商用変換ツールは言語固定が多く、ニッチな組合せ（VB6→Python、SAS→R 等）に対応しない。本ツールは **Claude API を AI エンジン**として柔軟に対応
- **使う条件**：Python 3.10+ / Anthropic API キー／GUI または CLI

## 💰 想定ユースケース・価格帯

| 用途 | 形態 |
|---|---|
| OSS としての利用（自社 PoC・社内見積もり） | 無料（MIT。Claude API 料金は別途） |
| 言語移行プロジェクトのアセスメント受託 | 応相談 |
| 業務特化の追加プロンプト・ガードレール開発 | 個別見積もり |

---

## 活用シーン

- COBOL / VBA / PL/SQL / レガシー言語の移行前PoC
- 移行先言語での実装イメージ、変換率、手修正ポイントの初期把握
- プロジェクト見積もり前のサンプル診断
- CI/CD やバッチ処理に組み込んだ段階的なコード変換検証

---

## 主な機能

| 機能 | 説明 |
|---|---|
| 113 言語＋カスタム対応 | Python, Java, C/C++, C#, Go, Rust, TypeScript, COBOL, RPG, PL/I, VBA, Swift, Kotlin 他。一覧に無い言語も指定可 |
| 指数バックオフリトライ | 429 / Timeout / 529 エラー時に自動リトライ（最大 5 回） |
| レジューム | SHA-256 ハッシュで変換済みファイルを管理、中断後も途中から再開 |
| 出力サニタイズ | AI が付加するマークダウンフェンスや自然言語の解説を自動除去 |
| コンテキスト注入 | 定数 / 設定ファイルを先に変換し、後続ファイルの変換精度を向上 |
| エコシステム変換 | `requirements.txt` → `package.json` 等、プロジェクトファイルも自動変換 |
| GUI（8 言語 UI） | 日本語 / English / 中文 / 한국어 / Espanol / Francais / Deutsch / Portugues |
| CLI | CI/CD やバッチ処理に対応 |

## 必要なもの

- **Anthropic API キー**（[console.anthropic.com](https://console.anthropic.com/) で取得）
- EXE 版: 不要（Python 不要）
- ソース版: Python 3.9+

## インストール

### EXE 版（推奨）

1. [Releases](../../releases) から `UniversalMigrator.exe` をダウンロード
2. 任意のフォルダに配置
3. ダブルクリックで起動

### ソース版

```bash
git clone https://github.com/highdefinitionaudiodriver/UniversalMigrator.git
cd UniversalMigrator
pip install -r requirements.txt
python main.py
```

## 使い方

### ★ まず動きを見たい人へ（即実行デモ・APIキー不要）

同梱サンプルで、言語プラン・エコシステム対応・出力サニタイズの動きを即確認できます。
（`ANTHROPIC_API_KEY` を設定しておくと、サンプルの実変換まで実行します）

```bash
python main.py --demo
```

### GUI モード

```
python main.py
```

1. 変換元言語と変換先言語を選択
2. 入力 / 出力フォルダを指定
3. API キーを入力（環境変数 `ANTHROPIC_API_KEY` 設定済みなら不要）
4. 「変換開始」をクリック

### CLI モード

```bash
# Python → Rust
python main.py -i ./python_src -o ./rust_out -s Python -t Rust

# COBOL → Java
python main.py -i ./cobol_src -o ./java_out -s COBOL -t Java

# VBA → Python（Shift_JIS）
python main.py -i ./vba_src -o ./py_out -s VBA -t Python -e cp932

# 対応言語一覧
python main.py --list-languages
```

### CLI オプション

| オプション | 説明 |
|---|---|
| `-i, --input` | 入力フォルダ（必須） |
| `-o, --output` | 出力フォルダ（必須） |
| `-s, --source` | 変換元言語（必須） |
| `-t, --target` | 変換先言語（必須） |
| `-k, --api-key` | API キー |
| `-m, --model` | モデル（default: `claude-sonnet-4-20250514`） |
| `-e, --encoding` | ソースエンコーディング（default: `utf-8`） |
| `--extra` | 追加指示 |
| `--no-resume` | レジューム無効化 |
| `--no-context` | コンテキスト注入無効化 |
| `--no-ecosystem` | エコシステム変換無効化 |
| `--list-languages` | 対応言語一覧を表示 |
| `--ext` | カスタム元言語の拡張子（カンマ区切り、例: `.abc,.xyz`） |
| `--out-ext` | カスタム変換先の拡張子（例: `.abc`） |

## 対応言語（113 言語 + カスタム言語）

組み込み 113 言語に加え、**一覧に無い言語も「カスタム言語」として指定可能**です
（`-s`/`-t` に任意の言語名、元言語は `--ext` で拡張子指定）。AI エンジン（Claude）は
どんな言語でも変換を試みるため、実質的にあらゆる言語の組み合わせに対応します。
最新の一覧は `python main.py --list-languages` で確認できます。

**主要言語**: Python, Java, C/C++, C#, Go, Rust, TypeScript, JavaScript, Kotlin, Swift, Ruby, PHP, Scala, Haskell, Elixir, Dart, Zig …

**レガシー/基幹系**: COBOL, RPG (IBM), PL/I, REXX, JCL, MUMPS (M), Natural, Progress 4GL/ABL, PowerBuilder, Visual FoxPro, ColdFusion, VBA, VB.NET, VBScript, Delphi/Pascal, Fortran, Ada, Eiffel, Forth, ABAP …

**新興/ドメイン**: GDScript, Haxe, Raku, ReScript, Reason, PureScript, Mojo, Carbon, Gleam, Ballerina, Q#, Cython, Solidity, WebAssembly (WAT), GraphQL, Terraform (HCL), Apex, Wolfram, APL, Stata, SPSS …

## アーキテクチャ

```
main.py                    エントリポイント（GUI/CLI）
src/
  languages.py             113 言語定義（＋カスタム言語対応）
  migrator.py              変換エンジン（Claude API + リトライ + レジューム）
  sanitizer.py             出力サニタイズ
  resume_state.py          レジューム状態管理（SHA-256）
  ecosystem.py             エコシステムファイルマッピング + 優先度ソート
  gui_model.py             MVC Model
  gui_view.py              MVC View（tkinter）
  gui_controller.py        MVC Controller
  i18n.py                  多言語対応（8 言語）
```

## EXE ビルド

```bash
# Windows
build.bat

# macOS / Linux
./build.sh
```

## ライセンス

MIT License - Copyright (c) 2026 highdefinitionaudiodriver

---

## 🤝 商用利用・カスタマイズ依頼

- 個人・社内利用は無料（MIT ライセンス）
- 法人・自治体・SI 向け導入支援、カスタマイズ、診断レポート受託は応相談
- 連絡先：highdefinitionaudiodriver@gmail.com

<!-- CODEX-CURRENT-STATUS:START -->
## 現状サマリ (2026-05-25)

- 対象: UniversalMigrator
- 作業ブランチ: main
- README更新時点の参照コミット: a428bd9 docs: docs/RELATED_TOOLS.md - 移行ツール群の関係図と使い分け
- Python 実行環境向けに requirements.txt を同梱。
- docs ディレクトリ配下に設計・運用・補足資料を配置。
- src ディレクトリ配下に主要実装を配置。
- 主要な確認コマンド: python -m pytest または README 記載の Python コマンド
- 次に進めるなら、README 内の利用手順と既存 docs / tests を起点に、未整備の検証手順・引き継ぎメモ・CI 化を補強する。
<!-- CODEX-CURRENT-STATUS:END -->

