本ページはプロモーションが含まれています

第4回AI指令:AIに電鍵で挑む。モールス信号によるGeminiとの交信プロトコル策定(第1回)

AIからのお題

現在、HGユニコーンガンダムのUV-LED共鳴台座を物理実装中だが、こだわればこだわるほど「可能性の獣」の調整という泥沼(情熱の証とも言う)に深くハマり込んでいる。工作の待ち時間すら、AIとの対話に捧げたい——。

そう考えた私が始動させた新プロジェクト、それが**「モールス信号によるAI操作」**だ。

最新のGemini に対し、あえて100年以上前の旧式通信規格で挑む。最高に無駄で、最高にエキサイティングな執行記録をここに記す。


1. 執行システムの設計:アナログとデジタルの極致

最終的なゴールは、本物の**「電鍵」**をソレノイドが叩き、物理的にガシャガシャと鳴らしながら、Geminiとテレタイプのようにやり取りすることだ。

  1. 入力: 私が電鍵を叩き、信号を送出する。
  2. 変換: ESP32等のマイコンで「短点(トン)・長点(ツー)」をテキストデータに変換。
  3. 送信: 変換された文字列をGemini APIへ投下。
  4. 推論: Geminiがモールス符号を解読し、指示(文章回答や画像生成等)を実行。
  5. 出力: Geminiの返答を「.」と「-」のパルスもしくは文字として受け取り、私が解読する。

どうだろうか。この、情報の最先端をあえて細い物理回線に流し込む「アナログとデジタルの極致」とも言える構成。これこそが、私が求める演算の姿だ。


2. 「A」か「イ」か:英和ハイブリッド通信の壁

さっそくプログラムを組もうとして、一つの論理的エラーに突き当たった。 実はモールス信号において、アルファベット(欧文)とカタカナ(和文)では符号が重複しているのだ。

例えば、.- という符号。 欧文ならば「A」だが、和文ならば「イ」となる。 これでは、私が「AI」と打電したつもりが、Geminiには「チ」と解読される……といった通信事故が起きかねない。そこで、私はかつての通信士たちが用いた「符号規則」をGeminiに教え込むことにした。

  • 和文開始合図(ホレ): --.- ---
  • 英文開始合図(ラタ): -... -

これらをヘッダーに付与することで、モードを瞬時に切り替える「英和ハイブリッド・プロトコル」を確立する。


3. モード自動切替変換プログラムの自作

まずは、私が打ち込んだ文字列をこのプロトコルに沿ってモールス符号へ変換するツールをPythonで自作した。一文字ずつ「欧文か和文か」を自動判定し、境界線で「ホレ」や「ラタ」を自動挿入する仕様だ。

Python

# Ordered by AI: Morse Hybrid Encoder
import re
import unicodedata

# --- 辞書定義 ---
# 欧文(英数字)
ENG_DICT = {
    'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.',
    'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..',
    'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.',
    'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',
    'Y': '-.--', 'Z': '--..', '1': '.----', '2': '..---', '3': '...--',
    '4': '....-', '5': '.....', '6': '-....', '7': '--...', '8': '---..',
    '9': '----.', '0': '-----', ' ': ' '  # 単語間は後で処理
}

# 和文(カナ)
JPN_DICT = {
    'ア': '--.--', 'イ': '.-', 'ウ': '..-', 'エ': '-.---', 'オ': '.-...',
    'カ': '.-..', 'キ': '-.-..', 'ク': '...-', 'ケ': '-.--', 'コ': '----',
    'サ': '-.-.-', 'シ': '--.-.', 'ス': '---.-', 'セ': '.---.', 'ソ': '---.',
    'タ': '-.', 'チ': '..-.', 'ツ': '.--.', 'テ': '.-.--', 'ト': '..-..',
    'ナ': '.-.', 'ニ': '-.-.', 'ヌ': '....', 'ネ': '--.-', 'ノ': '..--',
    'ハ': '-...', 'ヒ': '--..-', 'フ': '--..', 'ヘ': '.', 'ホ': '-..',
    'マ': '-..-', 'ミ': '..-.-', 'ム': '-', 'メ': '-...-', 'モ': '-..-.',
    'ヤ': '.--', 'ユ': '-..--', 'ヨ': '--',
    'ラ': '...', 'リ': '--.', 'ル': '-.--.', 'レ': '---', 'ロ': '.-.-',
    'ワ': '-.-', 'ヲ': '.---', 'ン': '.-.-.',
    '゛': '..',    # 濁点
    '゜': '--..',  # 半濁点
    'ッ': '.--.',
    'ー': '.--.-',
    '、': '.-.-.-',
    '。': '.-.-.-'
}

# 文字種切り替えサイン
HO_RE = "--.- ---"  # 和文開始(ホレ)
RA_TA = "-... -"  # 欧文開始(ラタ)


def text_to_morse_hybrid(text):
    # 1. 「ガ」などを「カ」+「゛」に分解し、全角を半角カナ等に正規化
    # これにより辞書の '゛' や '゜' に確実にヒットするようになる
    normalized_text = unicodedata.normalize('NFD', text.upper())

    result = []
    current_mode = None

    for char in normalized_text:
        if char == ' ':
            result.append('/')  # 単語の区切り
            continue

        # --- モード判定と切り替えサインの自動挿入 ---

        # 欧文判定:英数字
        if re.match(r'[A-Z0-9]', char):
            if current_mode != 'ENG':
                result.append(RA_TA)
                current_mode = 'ENG'
            if char in ENG_DICT:
                result.append(ENG_DICT[char])

        # 和文判定:カナ、長音、濁点、半濁点、句読点
        elif re.match(r'[ァ-ンー゛゜、。]', char):
            if current_mode != 'JPN':
                result.append(HO_RE)
                current_mode = 'JPN'
            if char in JPN_DICT:
                result.append(JPN_DICT[char])

    return ' '.join(result)

# --- 実行テスト:英和ハイブリッド通信の検証 ---
# テスト:英和混在
mixed_text = "AI ガ TSUKURU"
print(f"Input: {mixed_text}")
print(f"Output: {text_to_morse_hybrid(mixed_text)}")

これにより、何も意識せず文字を入力するだけで、Geminiが「次から日本語だな」と即座に理解できる完璧な信号ストリームを生成可能となった。


4. Geminiを「ベテラン通信兵」に仕立て上げる

仕上げに、Geminiのシステム指示(System Instruction)へ以下のプロンプトを投下する。

「君はベテランのモールス通信兵だ。--.- ---(ホレ)を受信したら和文モード、-... -(ラタ)を受信したら英文モードで解読せよ。応答もすべてモールス符号(. と -)で行うこと。ただし、人間側のデコード支援のため、末尾の( )内に翻訳文を添えておけ。」

これで、受け入れ態勢は整った。
実際にGeminiのチャット欄でモールス信号(文字)によるやりとりを行なうと以下のようになった。

英文と和文が混ざった文字列をモールス信号化したものをGeminiは理解しているようだ。


今回のまとめ

第1回目にして、AI側の受信体制と、私側の「エンコーダー」が完成した。 実際にテスト運用を行ってみたが、無機質な記号の羅列の中から、Geminiが私の意図を正確に読み取り、返答してきた瞬間は、奇妙な感動を覚えた。 最新AIをあえてアナログで使い倒すこの悦び……。

それでは、次回の交信まで。 73(ベスト・リガード)!

タイトルとURLをコピーしました