これは #NervesJP Advent Calendar 2022 の5日目です。昨日は NISHIUCHI Kazuma さんの Nerves合同ハンズオンの裏側 でした。
みなさん、まもなくクリスマスですね。クリスマスが過ぎたらすぐに新年です。お祝いの準備をしましょう。
フォネティックコード
ということで最初は「2023年新春兎年Nerves/Elixirかるた」の予定でした。が、かるただと一文字ごとに文をつくらないとなりません。「あ」なら「アルケミストも歩けばプルリクに思い当たる」とか。これを五十音全部に当てはめるのは大変すぎます。そこで、かるたは諦めてフォネティックコードにすることにしました。それも五十音じゃなくアルファベット26文字のです。
ルール
フォネティックコードとは、音声通信で明瞭度が悪いときに、一文字一文字を単語にして伝えることで、単語を確実に相手に伝える手法です。Nerves なら November, Echo, Romeo, Victor, Echo, Sierra と単語を並べます。きくゆた なら きって、クラブ、ゆみや、たばこ、と伝えます。これの 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:
Elixir,Registry,List,Alchemist,Nerves,GenServer - Kochi:
Kernel,Overlay,Compile,Host,Interface
明瞭度が良くなった感じはしますでしょうか。
まとめ
新年を迎えるにあたってフォネティックコードを作ってみました。来年は兎年で、ついでにお知らせしておくと私は歳男です。
さて、明日の #NervesJP Advent Calendar 2022 の記事は 充博 大崎 さんの Nerves合同ハンズオンのコード解説+うまみ です。お楽しみに!
参考文献
-
たまたまいま注目してるPub/Sub プラットフォームなだけで Elixir/Nerves とはまるで関係しません。 ↩