Nimτ〃日本語を≠〃ャノレ文字ッホレ|文字列|=変換すlレ⊃マノ┣〃を作レノмаU+ニ。=σ記事τ〃|?作ッ+ニ⊃マ*ノ┣〃σ使レ|方├、仕組彡を解説Uмаす。
※原文: Nimで日本語をギャル文字っぽい文字列に変換するコマンドを作りました。
この記事では作ったコマンドの使い方と、仕組みを解説します。
ギャル文字とは
ひらがなやカタカナ、漢字などの任意の文字を、元の文字以外の任意の1つ以上の文字列の組み合わせで表現する表現技法を指します(たぶん)。
以下がギャル文字の一例です。
ァレヽ⊃
λ_寸>
原文: あいうえお
なぜ作ったか
作れそうだったから作りました。
ソースコード
ソースコードは以下。
nimble packageにも登録ずみですので、Nimユーザであれば以下のコマンドでインストールできます。
nimble install gyaric
使い方
以下のように実行することで、任意の文字をギャル文字に変換します。
echo <任意の文字> | gyaric encode
以下のコマンドで元の文字列に『ある程度まで』復元できます。
※完全には復元できません。
echo <ギャル文字> | gyaric decode
仕組み
Tableのキーにひらがな、カタカナ1文字を持ち、値に変換候補のギャル文字を1つ以上持たせただけです。かなり単純。
import tables, random, strutils
const
dict = {
"あ": @["ぁ", "ァ"],
"ア": @["ァ", "了"],
"い": @["レヽ", "レ|", "ヰ"],
"ぃ": @["ы"],
"イ": @["亻"],
"う": @["⊃`"],
"ウ": @["宀"],
"え": @["ゑ", "λ_"],
"エ": @["ヱ"],
"お": @["寸>`"],
"オ": @["才", "オ"],
"が": @["カヾ", "カ〃", "カゞ", "ヵ〃"],
"ガ": @["カヾ", "カ〃", "カゞ", "ヵ〃"],
"か": @["カl", "カゝ", "カヽ", "ヵゝ"],
"カ": @["ヵ"],
"ぎ": @["(キ〃", "‡〃", "≠〃"],
"ギ": @["‡〃", "≠〃"],
"き": @["(キ", "‡", "≠"],
"キ": @["‡", "≠"],
"ぐ": @["<〃"],
"く": @["<"],
"げ": @["|ナ〃", "レナ〃"],
"ゲ": @["ヶ〃"],
"け": @["|ナ", "レナ"],
"ケ": @["ヶ"],
"ご": @["⊃〃", "⊇〃"],
"ゴ": @["⊃〃", "⊇〃"],
"こ": @["="],
"コ": @["⊃", "⊇"],
"サ": @["廾"],
"さ": @["±"],
"し": @["ι", "υ", "∪", "U", "U"],
"じ": @["ι〃", "υ〃", "∪〃", "U゙", "U゙"],
"ソ": @["`ノ", "ヽノ"],
"だ": @["tニ゙", "+ニ〃", "ナニ〃", "ナご"],
"た": @["tニ", "+ニ", "ナニ", "ナこ"],
"ヂ": @["干〃", "千〃"],
"チ": @["干", "千"],
"づ": @["⊃〃", "っ〃"],
"つ": @["⊃"],
"ツ": @["〃ノ"],
"っ": @["ッ"],
"で": @["τ〃"],
"て": @["〒", "τ"],
"テ": @["〒", "τ"],
"ド": @["├〃", "┣〃"],
"ト": @["├", "┣"],
"と": @["├", "?"],
"な": @["ナょ", "+?", "+ょ", "fょ"],
"ナ": @["ナ"],
"に": @["|=", "|ニ", "レニ"],
"ニ": @["ニ"],
"ね": @["キa", "пё", "Йё"],
"の": @["σ"],
"ネ": @["пё", "Йё", "ネ"],
"ノ": @["/", "丿"],
"バ": @["ハ〃", "/ヽ〃"],
"パ": @["ハo", "/ヽo"],
"ぱ": @["ハo", "/ヽo"],
"は": @["|?", "レ?", "は"],
"ハ": @["/ヽ"],
"ビ": @["ヒ〃"],
"ぴ": @["ヒo", "ヒ*"],
"ピ": @["ヒo", "ヒ*"],
"ヒ": @["ヒ"],
"ブ": @["フ〃", "┐〃"],
"プ": @["フo", "┐o", "┐*"],
"ぷ": @["フo", "┐o", "┐*"],
"べ": @["∧〃"],
"ベ": @["∧〃"],
"ぺ": @["ヘo", "∧o", "∧*"],
"ペ": @["ヘo", "∧o", "∧*"],
"ボ": @["ホ〃"],
"ポ": @["ホo", "ホ*"],
"ぽ": @["ホo", "ホ*"],
"ほ": @["│ま"],
"マ": @["ма", "マ"],
"ま": @["ма", "ま"],
"ミ": @["Ξ", "彡"],
"み": @["Ξ", "彡", "ゐ"],
"ム": @["厶", "∠、", "<、"],
"む": @["厶", "∠、", "<、"],
"メ": @["×", "乂", "〆"],
"も": @["м○", "も"],
"モ": @["м○", "モ"],
"や": @["ゃ"],
"ゃ": @["ャ"],
"ヤ": @["ャ"],
"ゆ": @["ゅ"],
"ユ": @["ュ"],
"ゅ": @["ュ"],
"よ": @["∋", "чOo0"],
"ヨ": @["∋"],
"ょ": @["ョ"],
"ら": @["ら", "ζ"],
"り": @["L|", "└ノ", "Lノ", "レノ"],
"リ": @["L|", "└ノ", "Lノ", "レノ"],
"る": @["lレ", "」レ", "/レ", "ノレ"],
"ル": @["lレ", "」レ", "/レ", "ノレ"],
"れ": @["れ", "キν", "└"],
"レ": @["レ", "└"],
"ろ": @["з", "З"],
"ロ": @["口"],
"わ": @["ゎ", "キっ"],
"ワ": @["ヮ"],
"ん": @["ω", "μ", "w"],
"ン": @["*ノ"],
}.toTable
encode処理では、単純に置換処理でギャル文字に置き換えるという処理を行っています。
「完全には復元できません」と書いたのは、encode処理後の文字列から元の文字列を一意に特定できないためです。特定できるようにもできるのですが、面倒だったのでそこまで作りこんでいません。
まとめ
以下の内容について説明しました。
- ギャル文字のこと
- gyaricコマンドの作り
- 単純な置換処理で実現した
- 100%元の文字に復元はできない
ギャル文字を誰かに送りたくなった時は、思い出していただければ幸いです。
以上です。