この記事は「Elixir Advent Calendar 2023」6日目の記事です
東京にいるけどfukuokaexのYOSUKEです。
普段は 合同会社TheWaggle で教材開発・システム開発・研修講師などマルチに活動してます。
このシリーズでは、文系ですらない、体育会系でも始められるプログラミング学習 というテーマで元自衛官だった僕が
自衛官からエンジニアになってもらいたいという気持ちを込めて、普段は大人しいですが、このコラムシリーズでは、あえて、体育会系のノリで、貴様ら理屈で覚えるなら体で覚えろ!というノリで書いてみたいと思います。
なので、初学者向けですが、理論は後回し、まずは動かして体感しろってノリの第6回目です。
それでは、いくぞ!
武器の諸元を入れるならタプルよりも、もっといいものあるぞ!
いいか、貴様ら!
前回、武器と銃弾の関係をタプルでまとめたのは覚えているか?
何?忘れただと! そんな奴は腕立てだ!
腕立てしながら、「タプルさん忘れてごめんなさい!」と腕立て1回する事にいいながら
腕立て10回しろ! わかったな!
よし、腕立て10回し終えたら前回の復習だ、前回は タプルを使って、{ }
銃の名前と銃弾のサイズを1つの情報の塊としてまとめたな。
{:"64式", 7.62}
{:"20式", 5.56}
その次に貴様らは、銃の重さもまとめたいと言い出したのを覚えているか?
そこで、次のようにタプルの中にタプルを入れた形で表現した。
{:"64式", {:bullet, 7.62}, {:weight, 4.2} }
しかし!この方法だと、銃の諸元をすべて扱うと、読みにくくなるのは明白だ、
例えば、20式小銃の主要な諸元を取り扱うとするなら、12項目を扱う必要がある。
- 名称 20式5.56mm小銃
- 種類 小銃
- 製造国 日本
- 口径 5.56 mm
- 銃身長 330 mm
- 使用弾薬 89式5.56mm普通弾
- 装弾数 30発
- 作動方式 ガス圧作動方式
- 全長 851 mm (銃床最小 779 mm)
- 重量 3.5 kg
- 発射速度 650 – 850発/分
- 有効射程 500 m以上
もし、貴様が20式の小銃を持っていたとしよう!
その時、貴様の持つ小銃の口径は何口径だ?と聞かれたら 5.56mm と答えられるのは、上記のように項目とその項目に当てはまる値が紐づいてるからだ。
このように、「項目」とそれに対応する「値」という形で情報をまとめる最適な書き方を教えてやろう! まずは、以下の例を見ろ!
%{ "名称" => "20式5.56mm小銃", "種類" => "小銃" }
これは、%{ }
で囲んだ中に、"項目" => "値"
で表現すればいい、複数入れたい場合には、 ,
カンマで区切りながら、追加すれば良い。このルールに従えば、改行を入れてみやすく書くこともできる。下の例を見てみろ!
%{
"名称" => "20式5.56mm小銃" ,
"種類" => "小銃" ,
"製造国" => "日本" ,
"口径" => "5.56 mm" ,
"銃身長" => "330 mm" ,
"使用弾薬" => "89式5.56mm普通弾" ,
"装弾数" => "30発" ,
"作動方式" => "ガス圧作動方式" ,
"全長" => "851 mm (銃床最小 779 mm)" ,
"重量" => "3.5 kg" ,
"発射速度" => "650 – 850発/分" ,
"有効射程" => "500 m以上"
}
このように書くことができる!どうだ見やすいだろう。
このように情報を「項目」と「値」に対応づけて書く書き方を map
マップという。
そして、"項目"を key "キー”、"値"を value "バリュー"と言ったりする。
キーとバリューでまとめるマップだ!わかったな!
それでは、次回は、先に述べた以下のやり取りをプログラムで表現するとどうなるかについて教えてやろう!
貴様の持つ小銃の口径は何口径だ?と聞かれたら 5.56mm と答えられる
今日はここまで、それでは次回 Part7でまた会おう!