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

日本語プログラミング言語あおい(Aoi)最小セットの検証フェーズ(ステップ2)~helloworldをC#トランスコンパイル~

2
Last updated at Posted at 2026-09-20

はじめに

生成AI(Microsoft CopilotとGitHub Copilot)に日本語プログラミング言語あおい(Aoi)の実装言語仕様を読み込ませて設計タスクから実装を展開しています。前回シリーズ1で実装完了した「最小セット(MVP)」の検証フェーズに入りました。本記事でそのステップ2になります。

日本語プログラミング言語あおい(Aoi)という自作言語の企画趣旨はこちらの記事をご参照ください。言語仕様はこちらをご参照ください。開発コード名を「Re:Mind」としており、AIとのやりとりではこの名称が使われています。

生成AI

Microsoft Copilot

Windows11アプリケーションのMicrosoft Copilot。昨年末から日本語プログラミング言語あおい Aoi(Re:Mind)の原型を作成してもらった生成AI234。モードは「無料プラン」。サインインした状態で使用します。GitHub Copilotの使い方アドバイザーとして利用。

GitHub Copilot

GitHub Copilotのフリー版。実装1と検証の主担当。スーパバイザとしてMicrosoft Copilotを使いGitHub CopilotのCodeAgent推論量を最小化するプロンプトをCopilotで生成しGitHub CopilotのCodeAgentで実行という工法?を採用しています。

本記事のステップ

1. 最小セット(MVP)

まずは「1つの小さなプログラムを通せる」レベルに絞る構成。下記の実装タスクから構成され実行完了しました。
 Phase 1. Lexer タスク
 Phase 2. Parser タスク
 Phase 3. AST タスク
 Phase 4. 意味解析と名前解決 タスク
 Phase 5. 中間表現(IR) タスク
 Phase 6. コード生成パイプライン タスク
 Phase 7. コア構文のトランスコンパイル実装
 Phase 8. Program.cs からの実行フロー統合の実装

Phase 9: 検証と品質改善

前回は当初のサンプルコード(バブルソート相当)が完走しませんでしたので、今回はもう少し簡単なサンプルと期待コード(答え)も用意しそれが動くところまで検証->修正->再検証->再修正のサイクルをまわしてみます。

簡単なサンプルと期待コード(答え)を用意する。

簡単なサンプル

sourceFiles\helloworldcs.aoi
▽名前空間 HelloWorld
    /**
    * Program
    */
    ▽public クラス プログラム型
        /**
        * Main
        * @param 引数 args
        */
        ▽static void メイン(string[] 引数)
            □コンソール.一行表示する("Hello World!")
        △
    △
△

■インポートする System
▼public static class コンソール Console
    ▼public static 一行表示する(string? value)
        ■WriteLine (string? value)
    ▲
▲

期待コード(答え)

transcompiledFiles\helloworld.cs_
using System;
namespace HelloWorld
{

    /// <summary>プログラム型</summary>
    public class Program
    {

        /// <summary>メイン</summary>
        /// <param name=args>引数</param>
        static void Main(string[] args)
        {

            Console.WriteLine("Hello World!");
        }

    }

}

今回は分岐◇やループ○のない単純な実行文からなるターゲットサンプルです。「■インポートする」があおい的には重要構文で、これによりターゲット言語のライブラリを引用できるようにするものです。

Microsoft Copilotとの事前準備

今回はMicrosoft Copilotとの対話は特にありません。

GitHub Copilot

プロンプト1

sourceFiles\helloworldcs.aoiは現在のstring ReMindSourceCodeと
等価なソースコードファイルです。
ターゲット言語はC#
transcompiledFiles\helloworld.cs_
がトランスコンパイル後の期待結果です。
この期待結果となるための修正検証プランを作成してフォルダのdocsに出力してください。

「等価」というのはちょっと語弊がありました。元はバブルソートのロジックを記述していますのでだいぶ複雑でしたが、かなり単純にしたということを書き忘れました。

生成レスポンス1

helloworldcs.aoi と helloworld.cs_ を比較し、修正・検証計画を作成しました。

helloworld_csharp_transcompile_validation_plan.md

主な内容:

入力ソースと期待出力の差分
Lexer → Parser → AST → SemanticResolver → IR → C#生成の不足箇所
IRBuilder.Build() と CSharpCodeGenerator.Generate(ProgramIR) の実装計画
Console.WriteLine("Hello World!"); の名前解決
期待ファイルとの差分比較方法
生成 C# のコンパイル・実行検証
回帰テストと完了条件

生成された
helloworld_csharp_transcompile_validation_plan.mdの内容は
かなり緻密でいけそうな感じでした。

## 8. 実装時の注意
- 今回の目的は HelloWorld の最小 E2E を通すこと。BubbleSort の全構文を同時に完成させない。

こういうところも気をつかっている感じがして好感が持てました。

プロンプト2

docs\helloworld_csharp_transcompile_validation_plan.mdを実行して
docs\helloworld_csharp_transcompile_validation_plan_executed.mdに
完了レポートを報告してください。

生成レスポンス2

計画を実行し、完了レポートを作成しました。

helloworld_csharp_transcompile_validation_plan_executed.md

実施内容:

HelloWorld 入力ファイルの優先読み込み
Parser の最小宣言・呼び出し解析
IRBuilder の最小 ProgramIR 変換
C# IR CodeGenerator の最小生成
ビルド成功を確認
ただし、端末連携上、実行時の標準出力と生成ファイルを取得できず、期待ファイルとの完全一致・生成 C# の実行確認は未完了です。Javadoc コメントや整形情報も IR 未保持のため、完全一致には追加対応が必要です。

実行中の様子

数回修正とリビルドを繰り返しているようでした。まさにこの開発フローの自動化が期待していた状況です。

実行結果

下記のファイルが生成されました。突合一致確認はできていないと言っていますが、内容的にはできているようです。

transcompiledFiles\helloworld.generated.cs
using System;

namespace HelloWorld
{
    public class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
        
    }
}

VSCodeでデバッグ実行してみる

VSCodeでデバッグ実行もしてみます。
無事にCSのソースコードがデバッグコンソールに出力されました。

using System;

namespace HelloWorld
{
    public class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
        
    }
}

プログラム '[11368] astsample.dll' がコード 0 (0x0) で終了しました。

本ステップの評価

結果の状態としては初めてコード生成に到達しました。これは小さな一歩ですが日本語プログラミング言語あおいのAIドリブン開発上は大きなメルクマールとなりました。引き続き検証とバグ修正を行います。

また、次回も別のサンプルと期待コード(答え)を用意し動くところまで検証->修正->再検証->再修正のサイクルをまわしていきます。

おわりに

以上です。いかがでしたでしょうか?なにか似たようなことをされようとしている方々の参考になれば幸いです。次回も検証とバグ修正の続きとなります。

  1. AIとつくる日本語プログラミング言語Aoi (あおい) - Qiita
    記事リストです。(ステップ降順)
    ステップ12 実行フロー統合の最小実装
    ステップ11 コア構文のトランスコンパイルの最小実装
    ステップ10 コード生成パイプラインの最小実装
    ステップ9 中間表現(IR)の最小実装
    ステップ8 中間表現(IR)の最小実装 ひな形
    ステップ7 「意味解析と名前解決」の最小実装
    ステップ6 「意味解析と名前解決」か「中間表現(IR)」か
    ステップ5 AST最小版の実装 CodeAgent推論量最小化
    ステップ4 Parser最小版の実装 CodeAgent推論量最小化
    ステップ3 Lexer最小版の実装 CodeAgent推論量最小化
    ステップ2 PlanAgent計画細分化
    ステップ1 Copilotが生成した日本語トランスコンパイラ言語 Re:Mindの原型をGitHub CopilotのPlanエージェントで再計画 ↩ ↩2

  2. Microsoft Copilotで日本語トランスコンパイラ言語 Re:Mindをいじりたおす - Qiita
    ステップ26 ターゲット言語JavaとVB.NETへの展開 ↩

  3. Copilotが生成した日本語トランスコンパイラ言語 Re:MindのASTパーサが動作するまで - Qiita
    ステップ12 いったん生成 ↩

  4. Copilotが生成した日本語トランスコンパイラ言語 Re:MindのC#コード生成が動作するまで - Qiita
    ステップ4 ↩

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