この記事は「Elixir Advent Calendar 2023」7日目の記事です
東京にいるけどfukuokaexのYOSUKEです。
普段は 合同会社TheWaggle で教材開発・システム開発・研修講師などマルチに活動してます。
このシリーズでは、文系ですらない、体育会系でも始められるプログラミング学習 というテーマで元自衛官だった僕が
自衛官からエンジニアになってもらいたいという気持ちを込めて、普段は大人しいですが、このコラムシリーズでは、あえて、体育会系のノリで、貴様ら理屈で覚えるなら体で覚えろ!というノリで書いてみたいと思います。
なので、初学者向けですが、理論は後回し、まずは動かして体感しろってノリの第7回目です。
それでは、いくぞ!
人はそれを「変数」と呼ぶ
いいか、貴様ら!
前回、「貴様の持つ小銃の口径は何口径だ?と聞かれたら 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以上"
}
よし、この状態で、前回先に述べた「貴様の持つ小銃の口径は何口径だ?と聞かれたら 5.56mm と答えられる」方法を教えてやろう。
まず、貴様の名前をいえ!
アサルトだと! 物騒な名前だな。よしいいだろう。アサルト! 貴様はプログラムの世界では asult
と呼ぶことにしよう。
なぜ、カタカナではなく、英語のしかも半角文字を使うかだと?
それは色々と都合がいいからだ! いいか貴様らにはまだ理屈は早い! とりあえず、名前をつけるときは半角英数字
を使うと覚えておけ!いいな、話しがややこしくなるから、この話しはこれで終いだ!
まず asult
にマップのデータを持たせよう。
asult = %{
"名称" => "20式5.56mm小銃" ,
"種類" => "小銃" ,
"製造国" => "日本" ,
"口径" => "5.56 mm" ,
"銃身長" => "330 mm" ,
"使用弾薬" => "89式5.56mm普通弾" ,
"装弾数" => "30発" ,
"作動方式" => "ガス圧作動方式" ,
"全長" => "851 mm (銃床最小 779 mm)" ,
"重量" => "3.5 kg" ,
"発射速度" => "650 – 850発/分" ,
"有効射程" => "500 m以上"
}
=
はパターンマッチと教えたはずだが、asult
のように半角英数で書かれて、かつ`:コロンも " "
ダブルクォテーションもついてない場合には、自由にパターンマッチすることができる。
ちなみに、asult
は、最初は何もパターンマッチされてないとエラーが出る。
asult
貴様、何も装備をしてないのか!それでも軍人か! 戦場に銃を持たずに何しに行く気だ!と怒られてるようなものだ。必ず、最初に装備をさせる必要があると思え!
よし、いよいよ「貴様の持つ小銃の口径は何口径だ?と聞かれたら 5.56mm と答えられる」方法を伝授しよう!
asult["口径"]
これが、言わば貴様らに銃を持たせ、貴様らが持っている銃の口径は何だ!と聞いてるようなものだ!
よし、これでやり方はわかったか! では、"重量" を聞きたい場合はどうする?
asult["重量"]
そうだ! キーを伝えるんだ!
よーし! いいぞ、これで貴様はマップデータを使う方法を覚えたな!
他にも色々な方法があるが、貴様にはまだ早い!
今日はここまで、それでは次回 Part8でまた会おう!