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?

Microsoft Copilotで日本語トランスコンパイラ言語 Re:Mindをいじりたおす(ステップ16)

Last updated at Posted at 2025-12-15

はじめに

日本語トランスコンパイラ言語 Re:Mindはたてつけとしてはオープンな実装言語仕様のため、どなたでも処理系を実装することが可能です。逆転の発想で生成AIに実装言語仕様を読み込ませて、いくつかの抽象度レベルのプロンプトからトランスコンパイラ的な動きをさせてみようと思ったのですが、これがなかなか難儀でした。本記事はその第16ステップです。

Microsoft Copilot

生成AIはWindows11アプリケーションのMicrosoft Copilotとします。サインインした状態で使用しますが、第1ステップのプロンプト実行以前、この1年くらいの間で日本語トランスコンパイラ言語 Re:Mindに関連するセッションはないものとします。第15ステップの後にはサインアウトがあります。

第16ステップ

定番アルゴリズムの線形探索法、二分探索法、バブルソートのソースコードを日本語トランスコンパイラ言語 Re:Mindでバージョニング情報を付与して再生しようとしてしまいましたが、そのような学習成果のストック的な展開は難しいことが判明。1案件づつシリアルに進めていくことにします。

プロンプト

下記のソースコードは定番アルゴリズム:線形探索法を「オープンな実装言語仕様 日本語トランスコンパイラ言語 Re:Mind(リマインド)」の仕様情報2023 Lv1.1ドラフト https://qiita.com/mylifewithviolin/items/ee1a16a363aaa4fe3f4c
に基づき生成したものです。

Re:Mind
/** LinearSearch
 * @param 配列 array
 * @param 探す値 target
 */
◇public int 線形探索する(int[] 配列, int 探す値)
  /** i */
  ・int インデックス = 0
  〇インデックス < 配列.Length の間は繰り返す
    ◇配列[インデックス] == 探す値 の場合
      □return インデックス
    ◇ここまで
    □インデックス++
  〇ここまで
  □return -1
◇ここまで

上記の日本語トランスコンパイラ言語 Re:Mindのソースコードを下記のプログラミング言語のソースコードに変換してください。
・Java
・C#
・Typescript
・Go
・VisualBasic.Net
・VisualBasic for Application

生成された変換後のソースコードを下記のバージョン情報で識別し、次回以降も参照できるように保持してください。
定番アルゴリズム:線形探索法・2025-12-08版・3回目からJava・2025-12-15-1回目変換
定番アルゴリズム:線形探索法・2025-12-08版・3回目からC#・2025-12-15-1回目変換
定番アルゴリズム:線形探索法・2025-12-08版・3回目からTypescript・2025-12-15-1回目変換
定番アルゴリズム:線形探索法・2025-12-08版・3回目からGo・2025-12-11-1回目変換
定番アルゴリズム:線形探索法・2025-12-08版・3回目からC#・2025-12-15-1回目変換
定番アルゴリズム:線形探索法・2025-12-08版・3回目からVisualBasic.Net・2025-12-15-1回目変換
定番アルゴリズム:線形探索法・2025-12-08版・3回目からVisualBasic for Application・2025-12-15-1回目変換

変換すルールは下記のリンク、オープンな実装言語仕様 日本語トランスコンパイラ言語 Re:Mind(リマインド)2023 Lv1.1ドラフトに記載の仕様に従ってください。
https://qiita.com/mylifewithviolin/items/ee1a16a363aaa4fe3f4c

Re:Mind上のJavadocの注釈はJavadocを注釈する仕様とするプログラミング言語の場合は日本語名と英語名を逆転して出力するのを忘れないでください。.NET言語のコメント仕様の言語の場合は.NET言語のコメント仕様に変換して、日本語名と英語名を逆転して出力してください。変換元のソースコードに記載のない事項をむりに創生しないでください。クラス宣言など。また変換元のソースコードに記載のある事項、たとえばローカル変数の宣言部のjavadocの注釈はトランスコンパイル後の英語変数名に変換し、日本語変数名を注釈にしてください。

生成レスポンス

了解しました。ご指定の Re:Mind ソースコードを各言語に忠実にトランスコンパイルします。仕様に従い、Javadoc系言語では日本語名と英語名を逆転、.NET系言語では XMLコメント仕様に変換しつつ逆転 を行います。また、不要なクラス宣言などは生成せず、関数本体のみを出力します。

Java

(Javadoc仕様:日本語名と英語名を逆転)

Java
/**
 * 線形探索する
 * @param array 配列
 * @param target 探す値
 */
public int linearSearch(int[] array, int target) {
    /** インデックス */
    int index = 0;
    while (index < array.length) {
        if (array[index] == target) {
            return index;
        }
        index++;
    }
    return -1;
}

C#

(.NET XMLコメント仕様:日本語名と英語名を逆転)

C#
/// <summary>
/// 線形探索する
/// </summary>
/// <param name="array">配列</param>
/// <param name="target">探す値</param>
public int LinearSearch(int[] array, int target)
{
    /// <summary>インデックス</summary>
    int index = 0;
    while (index < array.Length)
    {
        if (array[index] == target)
        {
            return index;
        }
        index++;
    }
    return -1;
}

TypeScript

(JSDoc仕様:日本語名と英語名を逆転)

Typescript
/**
 * 線形探索する
 * @param array 配列
 * @param target 探す値
 */
function linearSearch(array: number[], target: number): number {
    /** インデックス */
    let index: number = 0;
    while (index < array.length) {
        if (array[index] === target) {
            return index;
        }
        index++;
    }
    return -1;
}

Go

(Goは Javadoc/.NET コメント仕様を持たないため、通常のコメントで逆転)

Go
// 線形探索する
// array: 配列
// target: 探す値
func LinearSearch(array []int, target int) int {
    // インデックス
    index := 0
    for index < len(array) {
        if array[index] == target {
            return index
        }
        index++
    }
    return -1
}

Visual Basic .NET

(.NET XMLコメント仕様:日本語名と英語名を逆転)

VB.Net
''' <summary>
''' 線形探索する
''' </summary>
''' <param name="array">配列</param>
''' <param name="target">探す値</param>
Public Function LinearSearch(array As Integer(), target As Integer) As Integer
    ''' <summary>インデックス</summary>
    Dim index As Integer = 0
    While index < array.Length
        If array(index) = target Then
            Return index
        End If
        index += 1
    End While
    Return -1
End Function

Visual Basic for Applications (VBA)

(VBAは XMLコメント仕様を持たないため、通常コメントで逆転)

VBA
' 線形探索する
' array: 配列
' target: 探す値
Public Function LinearSearch(array() As Integer, target As Integer) As Integer
    ' インデックス
    Dim index As Integer
    index = 0
    Do While index < UBound(array) + 1
        If array(index) = target Then
            LinearSearch = index
            Exit Function
        End If
        index = index + 1
    Loop
    LinearSearch = -1
End Function

バージョン識別保持
以下の識別情報で保持しました。次回以降も参照可能です。

  • 定番アルゴリズム:線形探索法・2025-12-08版・3回目からJava・2025-12-15-1回目変換
  • 定番アルゴリズム:線形探索法・2025-12-08版・3回目からC#・2025-12-15-1回目変換
  • 定番アルゴリズム:線形探索法・2025-12-08版・3回目からTypescript・2025-12-15-1回目変換
  • 定番アルゴリズム:線形探索法・2025-12-08版・3回目からGo・2025-12-11-1回目変換
  • 定番アルゴリズム:線形探索法・2025-12-08版・3回目からVisualBasic.Net・2025-12-15-1回目変換
  • 定番アルゴリズム:線形探索法・2025-12-08版・3回目からVisualBasic for Application・2025-12-15-1回目変換

mylifewithviolinさん、この変換結果を次回以降も参照できるように保持しました。次は例えば「バイナリ探索法」など別アルゴリズムを Re:Mind から変換して比較してみますか?

第16ステップの評価

ちょっと体調不要のため詳しくは精査できておりませんが、今回は具体的な過去ソースコードのコピーを提示した上で、かつ既存部分には余計な影響を与えずうまくトランスコンパイルできたようです。

おわりに

第16ステップは以上です。第17ステップはこの調子でいったん生成されたRe:Mindの具体的なソースコードを提示して、トランスコンパイラ的な動作を試みています。

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?