8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

#NervesJPAdvent Calendar 2022

Day 21

2023年新春兎年Nerves/Elixirフォネティックコード

Last updated at Posted at 2023-01-22

これは #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(ヤムル)

これらの規則を満足するという制約の元、以下(優先度順)の技術に由来のあるものを使うことにしました。

  1. Nerves
  2. Elixir
  3. 組込み
  4. コンピュータ

Nerves/Elixir 版フォネティックコード ver. 0.9

考えてみたのが以下です。満足がいくものではないので ver. 1.0 にはしてません。

Letter Code ボツ 満足度 備考
A Alchemist Atom, Application, Agent 言わずとしれた錬金術師
B BEAM Buildroot, Booting, Branch Erlangの中間言語
C Compile Concurrent, Config, Comment もっといいのがありそう
D Device Distribution, Defmodule, Defun IoTってことでデバイス
E Elixir Enum, Erlang, Embedded 候補多すぎ
F Firmware Functional 迷った
G GenServer GPIO みんな大好き GenServer
H Host Hex Nervesでは Host/Target という言い方をします
I Interface I2C, IoT, IEx, Issue Iではじまると別の母音も多い
J José Jit 唯一の人名利用
K Kernel 一択
L List Lチカ, Logger, LiveBook, Linux 代表的なデータ型
M Module Map, Mix, Meta-programming Hex 採用すると Mix と紛らわしいかとこちらに
N Nerves Nx 事実上の一択
O Overlay OTP, Open Source いろんなオーバレイがあります
P Poncho Platform, Phoenix, Pub/Sub, Process, Pull request PonchoはUmbrellaのように複数のアプリケーションをひとまとめにします
Q Queue ほかに思いつかなかった
R Registry Reboot, Ring Logger プロセスの登録メカニズムで Pub/Sub にも使えるよ〜
S Supervisor Stack, Stream, SPI フォールトトレランスの要
T Target Task, Tupple, Tool Chain HOSTとの対で
U UART Umbrella, User, UNIX UARTは略語だけどすでに1単語になってるのでヨシ!
V Version VintageNet VintageNetのほうがNervesっぽいんだけど残念ながら2単語ありで
W Web Watchdog Watchdogのほうが組込みっぽいんだけど残念ながら2単語あり
X ExDoc XML, Exception, Xilinx これをXと言い張るのは無理があるなぁ
Y YAML Yocto ついにNerves/Elixirと関連する用語を思いつかず
Z Zenoh1 ZEN, Zynq, Zone これもNerves/Elixirと関連する用語を思いつかず

U〜Z はかなり苦しく Nerves/Elixir と直接関係ないキーワードが目白押しです。何か良いのがあったら教えてください。

利用例

これを使うとこんな感じで通信することになります。

  • Erlang: Elixir, Registry, List, Alchemist, Nerves, GenServer
  • Kochi: Kernel, Overlay, Compile, Host, Interface

明瞭度が良くなった感じはしますでしょうか。

まとめ

新年を迎えるにあたってフォネティックコードを作ってみました。来年は兎年で、ついでにお知らせしておくと私は歳男です。

さて、明日の #NervesJP Advent Calendar 2022 の記事は 充博 大崎 さんの Nerves合同ハンズオンのコード解説+うまみ です。お楽しみに!

参考文献

  1. たまたまいま注目してるPub/Sub プラットフォームなだけで Elixir/Nerves とはまるで関係しません。

8
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?