これは #NervesJP Advent Calendar 2022 の5日目です。昨日は NISHIUCHI Kazuma さんの Nerves合同ハンズオンの裏側 でした。
みなさん、まもなくクリスマスですね。クリスマスが過ぎたらすぐに新年です。お祝いの準備をしましょう。
フォネティックコード
ということで最初は「2023年新春兎年Nerves/Elixirかるた」の予定でした。が、かるただと一文字ごとに文をつくらないとなりません。「あ」なら「アルケミストも歩けばプルリクに思い当たる」とか。これを五十音全部に当てはめるのは大変すぎます。そこで、かるたは諦めてフォネティックコードにすることにしました。それも五十音じゃなくアルファベット26文字のです。
ルール
フォネティックコードとは、音声通信で明瞭度が悪いときに、一文字一文字を単語にして伝えることで、単語を確実に相手に伝える手法です。Nerves
なら N
ovember, E
cho, R
omeo, V
ictor, E
cho, S
ierra と単語を並べます。きくゆた
なら き
って、ク
ラブ、ゆ
みや、た
ばこ、と伝えます。これの Nerves/Elixir 版を作りましょう。
フォネティックコードの趣旨から考えて、以下を想定しました。
- 1単語からなること。2単語から合成された単語も避ける。(2単語目が紛らわしいので)
- これで Functional Programming とか VintageNet とかは外れます
- ただし、すでに発音がひっついて単語として一つになってるのは許します
- 例:GenServer
- 省略されてできた単語は避ける(アルファベットの音が並ぶだけなので)
- GPIO とかが該当します
- ただし、すでに単語として発音が確立されてそうなのは許します(苦肉の策)
- 例:UART(ユアート)、YAML(ヤムル)
これらの規則を満足するという制約の元、以下(優先度順)の技術に由来のあるものを使うことにしました。
- Nerves
- Elixir
- 組込み
- コンピュータ
Nerves/Elixir 版フォネティックコード ver. 0.9
考えてみたのが以下です。満足がいくものではないので ver. 1.0 にはしてません。
Letter | Code | ボツ | 満足度 | 備考 |
---|---|---|---|---|
A | Alchemist |
|
◎ | 言わずとしれた錬金術師 |
B | BEAM |
|
◎ | Erlangの中間言語 |
C | Compile |
|
◯ | もっといいのがありそう |
D | Device |
|
◯ | IoTってことでデバイス |
E | Elixir |
|
◯ | 候補多すぎ |
F | Firmware | ◯ | 迷った | |
G | GenServer | ◎ | みんな大好き GenServer | |
H | Host | ◯ | Nervesでは Host/Target という言い方をします | |
I | Interface |
|
◯ | Iではじまると別の母音も多い |
J | José | ◯ | 唯一の人名利用 | |
K | Kernel | ◎ | 一択 | |
L | List |
|
◯ | 代表的なデータ型 |
M | Module |
|
◯ | Hex 採用すると Mix と紛らわしいかとこちらに |
N | Nerves | ◯ | 事実上の一択 | |
O | Overlay |
|
◎ | いろんなオーバレイがあります |
P | Poncho |
|
◎ | PonchoはUmbrellaのように複数のアプリケーションをひとまとめにします |
Q | Queue | △ | ほかに思いつかなかった | |
R | Registry |
|
◯ | プロセスの登録メカニズムで Pub/Sub にも使えるよ〜 |
S | Supervisor |
|
◎ | フォールトトレランスの要 |
T | Target |
|
◯ | HOSTとの対で |
U | UART |
|
△ | UARTは略語だけどすでに1単語になってるのでヨシ! |
V | Version | △ | VintageNetのほうがNervesっぽいんだけど残念ながら2単語ありで | |
W | Web | △ | Watchdogのほうが組込みっぽいんだけど残念ながら2単語あり | |
X | ExDoc |
|
△ | これをXと言い張るのは無理があるなぁ |
Y | YAML | △ | ついにNerves/Elixirと関連する用語を思いつかず | |
Z | Zenoh1 |
|
△ | これもNerves/Elixirと関連する用語を思いつかず |
U〜Z はかなり苦しく Nerves/Elixir と直接関係ないキーワードが目白押しです。何か良いのがあったら教えてください。
利用例
これを使うとこんな感じで通信することになります。
- Erlang:
E
lixir,R
egistry,L
ist,A
lchemist,N
erves,G
enServer - Kochi:
K
ernel,O
verlay,C
ompile,H
ost,I
nterface
明瞭度が良くなった感じはしますでしょうか。
まとめ
新年を迎えるにあたってフォネティックコードを作ってみました。来年は兎年で、ついでにお知らせしておくと私は歳男です。
さて、明日の #NervesJP Advent Calendar 2022 の記事は 充博 大崎 さんの Nerves合同ハンズオンのコード解説+うまみ です。お楽しみに!
参考文献
-
たまたまいま注目してるPub/Sub プラットフォームなだけで Elixir/Nerves とはまるで関係しません。 ↩