前回、「自作言語回りの記事について書きます」と言ったのですが。それよりも先に、苦しみが喉元過ぎれば熱さ忘れる的になる前に。これだけは書かなければ(使命感)……!
という気持ちになったのでこんな記事を書くことにしました。ちなみに内容はタイトル通り……ではなくただただ私がakrantiainを使ってちょっと苦労したことについて書いていくだけです。
まあ、この記事を見つけるような方なら皆様akrantiain君の存在は当然知っているよね、という体で話を進めます。
akrantiain君を使ってデナスティア語の発音記号を生成しようとした私がどんな点について苦労したのか。これを書いておけば未来の自分が同じミスを繰り返さなくなって、次の言語を作る時の時短になるのではという使命感()で書いております。
まずは私とakrantiain君の出会いから。説明読もうとした私は「あ、これ理解するのが面倒な(こら)タイプのだ」となりページをそっ閉じ。それでも目的的に読まないわけにはいかないので……という一連の流れをまとめると。
1akrantiainを知る
2akrantiainの説明を見る
3akrantiainの説明をそっ閉じする
4akrantiainの説明をあらためて見る
5読める、読めるぞ!
6akrantiain、何もわからん
7akrantiain、(不)完全に理解した
8とりあえず完成した(後で手直ししそう) ←イマココ
というわけで、具体的な苦労話をつらつらと書いていきます。
その1:黙字わからん
akrantiain、zp〇ICにsnoj? だったか例文というか何というかがあったと思うのですが。あれを見て「黙字は?」と思ってしまいました。だって見当たらないので。
結論としては「"h" -> //;」、つまりカッコの中に何も書き込まないことでできましたが……気づくまでの判断が遅い。
その2:!つきは変化後の説明、書きません
これがなかなか理解できず。当初私は「!」の場合も音を変化させる前提なのかと混乱してしまっていました。
正しい "a" !"i" -> /e/;
間違い "a" !"i" -> /e/ $;
私は「!」つきのものも数にカウントしてしまっていたのですが、りどみ(説明書)には「!マークは右側で必要な//と$の合計を数える時は無視してね!」みたいに解説がありまして……。
教訓。りどみと利用規約はきちんと読みましょう。面倒くさがらずに。
その3:順番は大事です
どういうことかと言いますと。例えば「au」を/o:/と読ませたいとして(実際デナスティア語にこの規則があります)、以下のように書いたとします。
"a" -> /a/;
"u" -> /u/;
"au" -> /o:/;
「au」と綴ったら「o:」と発音してね、という規則を書いたのですが。「au」の綴りの発音として返ってきたのは「au」。
「あれ? おかしいな?」と思ったのですが。後にakrantiain君は後先考えていないことが判明。「"au" -> /o:/;」を一番上に移動させたら解決しました。
その4:条件も大事です。例外はよく見ておかないと事故ります
“e” ^ -> //;
“u” “e” -> /i/ $;
“au” -> /o:/;
“k” -> /k/; “a” -> /a/; “u” -> “u”; “e”->/e/; “h” -> //;
こう読ませたい kaue/ko:/ kueh/kie/
帰ってきた発音 kaue/kai/ kueh/kie/
簡単に言うと「語末のeは黙字だから。二段目、わかるよね」と思っていると……パターンです。akrantiain君は忖度してくれない。
「“u” “e” ^ -> /i/ $;」にしたらきちんと動いてくれたのでよかったですが。基本母音が三連続以上しない設定で作っていて、動詞不定詞マーカーのe(基本読まない)だけ例外的に綴り字上は三重母音になりうるせいでバグりましたという例でした。
未来の私へ。条件大事。例外は徹底的に条件について観察を。
その5:約束はきちんと守りましょう
私が説明書通りに書かなかったというお話です。具体的にはこんな感じです。
"a" -> "a";
akrantiain君「右辺に""使うなや。//使え」
"a" > /a/;
akrantiain君「>って何や。->言うたやろがい」
はい。おわかりですね。間違って使ったパターンです。ものすごく初歩的なあれ。何ならさっきの「“u” “e” ^ -> /i/ $;」の「」つけ忘れ事件の方がまだマシなレベルで初歩のミス。
というわけで、誤字脱字で私がakrantiain君に怒られたお話でした。このミスに気づくのに最初十分ぐらいはかかりましたよ……。「えっちゃんと書いたのにこの規則ダメなの?」と思ってしまいましたが、結論は凡ミス。取り越し苦労とはこのことです。
で、そんなこんなを繰り返してひとまず完成させたファイル。すごく贅肉が多そうなものが出来上がりました。きちんと動くけれど読みにくいことこの上ない。
絶対もっとスマートにできるはず。というか、サイトに載っているサンプルがすごく綺麗なので、私のぐちゃぐちゃコーディングがより一層際立つのですよ……。
というわけで今回はここまでです。今度触る時にはもう少し綺麗に書きたいと思いました(個人の感想です)。
次回こそ言語記事を書きたい……!
Latest comments (5)
とても役に立ちました。ありがとうございます。
「順番は大事」、私もこの記事を読むまで気づかず、難儀しました。
どういたしましてです~。
akrantiainはやっぱり難しいですよね……わかります。
ありがとうございます!こういう軽い感じの記事が増えるとうれしいなと思っています。
ところで蛇足かもしれませんが、`〜`と内容を囲むとプログラムコードとしての書式になります。例えば
"e" ^ -> //;
など。この方がakrantiainの実際の表示に近くて見やすいかもしれません。返信ありがとうございます。私も他の方の自作言語語りとかたくさん読んでみたいです。
「~」で囲むと表示が変わるという仕様があるのですね(知らなかった顔)……また機会があれば使ってみます。
あ、すみません。`(内容)` という意味でした(バッククオートで囲む)。本文執筆中に編集画面の右側に書式などのリストを開くことができるのでぜひ見てみてください