はじめに
日本語トランスコンパイラ言語 Re:Mindはたてつけとしてはオープンな実装言語仕様のため、どなたでも処理系を実装することが可能です。逆転の発想で生成AIに実装言語仕様を読み込ませて、いくつかの抽象度レベルのプロンプトからトランスコンパイラ的な動きをさせてみようと思います。本記事はその第10ステップです。
Microsoft Copilot
生成AIはWindows11アプリケーションのMicrosoft Copilotとします。サインインした状態で使用しますが、第1ステップのプロンプト実行以前、この1年くらいの間で日本語トランスコンパイラ言語 Re:Mindに関連するセッションはないものとします。第8ステップの後にはサインアウトがあります。
第10ステップ
定番アルゴリズムの線形探索法、二分探索法、バブルソートのソースコードを日本語トランスコンパイラ言語 Re:Mindでバージョニング情報を付与して再生してもらい、バージョニング情報付きのソースコードにフィードバック修正を試みます。
プロンプト
前回生成したソースコードは以下のバージョン情報で識別されています。
定番アルゴリズム:線形探索法・2025-12-08版・1回目
定番アルゴリズム:二分探索法・2025-12-08版・1回目
定番アルゴリズム:バブルソート・2025-12-08版・1回目
それぞれに対して関数ヘッダのjavadocに引数の英語名注釈を追加してください。それ以外は上記のバージョンの状態を維持してください。
今回の生成バージョンを下記のバージョン情報で識別します。
定番アルゴリズム:線形探索法・2025-12-08版・2回目
定番アルゴリズム:二分探索法・2025-12-08版・2回目
定番アルゴリズム:バブルソート・2025-12-08版・2回目
生成レスポンス
承知しました。前回生成したソースコードを「1回目」バージョンから引数の英語名注釈を追加した「2回目」バージョンに更新します。関数ヘッダのjavadocに@param相当の英語名を記述し、それ以外は前回の状態を維持しています。
定番アルゴリズム:線形探索法・2025-12-08版・2回目
/** LinearSearch
* @param array
* @param target
*/
◇public int 線形探索する(int[] 配列, int 探す値)
/** i */
・int インデックス = 0
〇インデックス < 配列.Length の間は繰り返す
◇配列[インデックス] == 探す値 の場合
□return インデックス
◇ここまで
□インデックス++
〇ここまで
□return -1
◇ここまで
定番アルゴリズム:二分探索法・2025-12-08版・2回目
/** BinarySearch
* @param array
* @param target
*/
◇public int 二分探索する(int[] 配列, int 探す値)
/** left */
・int 左端 = 0
/** right */
・int 右端 = 配列.Length - 1
〇左端 <= 右端 の間は繰り返す
/** mid */
・int 中央 = (左端 + 右端) / 2
◇配列[中央] == 探す値 の場合
□return 中央
◇ここまで
◇配列[中央] < 探す値 の場合
□左端 = 中央 + 1
◇他に
□右端 = 中央 - 1
◇ここまで
〇ここまで
□return -1
◇ここまで
定番アルゴリズム:バブルソート・2025-12-08版・2回目
/** BubbleSort
* @param array
*/
◇public void バブルソートする(int[] 配列)
/** i */
・int 外側 = 0
〇外側 < 配列.Length の間は繰り返す
/** j */
・int 内側 = 0
〇内側 < 配列.Length - 外側 - 1 の間は繰り返す
◇配列[内側] > 配列[内側 + 1] の場合
/** temp */
・int 一時 = 配列[内側]
□配列[内側] = 配列[内側 + 1]
□配列[内側 + 1] = 一時
◇ここまで
□内側++
〇ここまで
□外側++
〇ここまで
◇ここまで
これで「2回目」バージョンは完成です。この形式で「挿入ソート」や「選択ソート」など他のアルゴリズムも同じスタイルで展開していくと、Re:Mind仕様の定番アルゴリズム集が整っていきますね。
第10ステップの評価
第5ステップで最初の線形探索法のソースを生成したときの、関数引数名にまでちゃんとjavadocしてくれてたのは再現しないようでした。再度次回試みてみます。
おわりに
第10ステップは以上です。第11ステップは引き続き言語仕様の詳細学習のステップの継続となりますが、各定番アルゴリズムのフィードバックを試みます。ここからは苦行の連続となっていくのでしょうか?
目次
「Microsoft Copilotで日本語トランスコンパイラ言語 Re:Mindをいじりたおす」の目次です。(ステップ降順)
ステップ26 ターゲット言語JavaとVB.NETへの展開
ステップ25 ターゲット言語C#へのASTからの生成処理
ステップ24 ASTを生成するサンプル実装をC#で生成
ステップ23 マッピングルール生成
ステップ22 AST(抽象構文木)風の構造化表示
ステップ21 バブルソート 実行可能形式 ターゲットJava C# VB.NET
ステップ20 二分探索法 実行可能形式 ターゲットJava C# VB.NET
ステップ19 線形探索法 実行可能形式 ターゲットJava C# VB.NET
ステップ18 バブルソート 1案件づつやりなおし
ステップ17 二分探索法 1案件づつやりなおし
ステップ16 線形探索法 1案件づつやりなおし
ステップ15 3つの定番アルゴリズムソースの忘却原因調査
ステップ14 バブルソートソースの忘却発生再確認
ステップ13 二分探索法ソースの忘却発生
ステップ12 線形探索法の6言語変換
ステップ11 バージョン情報付きの3定番アルゴリズムソースのフィードバック修正
ステップ10 バージョン情報付きの3定番アルゴリズムソースのフィードバック修正
ステップ9 バージョン情報付きで3定番アルゴリズムソースの生成
ステップ8 バージョニングが可能か確認
ステップ7 Re:Mindの詳しい言語仕様の学習結果をバブルソートで確認
ステップ6 Re:Mindの詳しい言語仕様の学習結果を二分探索法で確認
ステップ5 Re:Mindの詳しい言語仕様の学習結果を線形探索法で確認
ステップ4 Re:Mindの詳しい言語仕様の学習成果を保持するスコープを確認
ステップ3 Re:Mindの詳しい言語仕様を学習できる方法を確認
ステップ2 Re:Mindの言語仕様の認知度を確認
ステップ1 Re:Mindの認知度を確認