現在、HGユニコーンガンダムのUV-LED共鳴台座を物理実装中だが、こだわればこだわるほど「可能性の獣」の調整という泥沼(情熱の証とも言う)に深くハマり込んでいる。工作の待ち時間すら、AIとの対話に捧げたい——。
そう考えた私が始動させた新プロジェクト、それが**「モールス信号によるAI操作」**だ。
最新のGemini に対し、あえて100年以上前の旧式通信規格で挑む。最高に無駄で、最高にエキサイティングな執行記録をここに記す。
1. 執行システムの設計:アナログとデジタルの極致
最終的なゴールは、本物の**「電鍵」**をソレノイドが叩き、物理的にガシャガシャと鳴らしながら、Geminiとテレタイプのようにやり取りすることだ。
- 入力: 私が電鍵を叩き、信号を送出する。
- 変換: ESP32等のマイコンで「短点(トン)・長点(ツー)」をテキストデータに変換。
- 送信: 変換された文字列をGemini APIへ投下。
- 推論: Geminiがモールス符号を解読し、指示(文章回答や画像生成等)を実行。
- 出力: 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(ベスト・リガード)!
