はじめに
日本語トランスコンパイラ言語 Re:Mindはたてつけとしてはオープンな実装言語仕様のため、どなたでも処理系を実装することが可能です。逆転の発想で生成AIに実装言語仕様を読み込ませて、いくつかの抽象度レベルのプロンプトからトランスコンパイラ的な動きをさせてみようと思います。本記事はその第11ステップです。
Microsoft Copilot
生成AIはWindows11アプリケーションのMicrosoft Copilotとします。サインインした状態で使用しますが、第1ステップのプロンプト実行以前、この1年くらいの間で日本語トランスコンパイラ言語 Re:Mindに関連するセッションはないものとします。第8ステップの後にはサインアウトがあります。
第11ステップ
定番アルゴリズムの線形探索法、二分探索法、バブルソートのソースコードを日本語トランスコンパイラ言語 Re:Mindでバージョニング情報を付与して再生してもらい、バージョニング情報付きのソースコードにフィードバック修正を試みます。
プロンプト
前回生成したソースコードは以下のバージョン情報で識別されています。
定番アルゴリズム:線形探索法・2025-12-08版・2回目
定番アルゴリズム:二分探索法・2025-12-08版・2回目
定番アルゴリズム:バブルソート・2025-12-08版・2回目
それぞれに対して関数ヘッダのjavadocに引数の英語名注釈を下記のように修正してください。それ以外は上記のバージョンの状態を維持してください。
/** @param 配列 array /
/* @param 探す値 target */
ただし、バブルソートは配列のみの注釈となりますね。
今回の生成バージョンを下記のバージョン情報で識別します。
定番アルゴリズム:線形探索法・2025-12-08版・3回目
定番アルゴリズム:二分探索法・2025-12-08版・3回目
定番アルゴリズム:バブルソート・2025-12-08版・3回目
生成レスポンス
了解しました。前回「2回目」バージョンのソースコードを基に、関数ヘッダのjavadocに指定の形式で引数の英語名注釈を修正した「3回目」バージョンを提示します。その他の部分は維持しています。
定番アルゴリズム:線形探索法・2025-12-08版・3回目
/** LinearSearch
* @param 配列 array
* @param 探す値 target
*/
◇public int 線形探索する(int[] 配列, int 探す値)
/** i */
・int インデックス = 0
〇インデックス < 配列.Length の間は繰り返す
◇配列[インデックス] == 探す値 の場合
□return インデックス
◇ここまで
□インデックス++
〇ここまで
□return -1
◇ここまで
定番アルゴリズム:二分探索法・2025-12-08版・3回目
/** 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版・3回目
/** BubbleSort
* @param 配列 array
*/
◇public void バブルソートする(int[] 配列)
/** i */
・int 外側 = 0
〇外側 < 配列.Length の間は繰り返す
/** j */
・int 内側 = 0
〇内側 < 配列.Length - 外側 - 1 の間は繰り返す
◇配列[内側] > 配列[内側 + 1] の場合
/** temp */
・int 一時 = 配列[内側]
□配列[内側] = 配列[内側 + 1]
□配列[内側 + 1] = 一時
◇ここまで
□内側++
〇ここまで
□外側++
〇ここまで
◇ここまで
これで「3回目」バージョンは完成です。この形式でさらに「挿入ソート」や「選択ソート」などを追加していけば、Re:Mind仕様のアルゴリズム集が体系的に整っていきますね。
第11ステップの評価
今回は具体的な修正指示で、かつ既存部分には影響を与えずうまく修正できたようです。
おわりに
第11ステップは以上です。第12ステップはいったんトランスコンパイラ的な動作を試みています。
目次
「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の認知度を確認