13
0

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.

ElixirAdvent Calendar 2023

Day 11

自衛官からエンジニアへ Elixirから始める Web開発 Part11

Posted at

この記事は「Elixir Advent Calendar 2023」11日目の記事です
東京にいるけどfukuokaexのYOSUKEです。

普段は 合同会社TheWaggle で教材開発・システム開発・研修講師などマルチに活動してます。

このシリーズでは、文系ですらない、体育会系でも始められるプログラミング学習 というテーマで元自衛官だった僕が
自衛官からエンジニアになってもらいたいという気持ちを込めて、普段は大人しいですが、このコラムシリーズでは、あえて、体育会系のノリで、貴様ら理屈で覚えるなら体で覚えろ!というノリで書いてみたいと思います。

なので、初学者向けですが、理論は後回し、まずは動かして体感しろってノリの第11回目です。

それでは、いくぞ!

関数の調べ方「公式リファレンス」を読もう

前回、貴様らに便利な道具の使い方を1つ教えてやったのは覚えているな?
タプルをリストに変換するという便利な道具だ、この道具には、いろいろな種類の道具がある。
この道具のことを「関数」という。

この関数を色々使うことで便利に渡す方法が作れるのだ。
そこで、貴様らにはまず関数の調べ方を教えてやろう。

まずは、下記のリンクが公式のドキュメントの場所だ。
https://hexdocs.pm/elixir/Kernel.html

スクリーンショット 2023-12-10 23.44.08.png

ここで、左上に検索フォームがあり、その下にはElixirと記載があり、その下にはさらにv.1.15.7とバージョン番号が書かれている。自分の利用しているElixirのバージョンに合わせろ、このバージョンが違うのは貴様の銃が20式なのか89式、または64式かの違いがある。

仮に貴様が使っている銃が20式にも関わらず、64式を調べていたとしよう。その違いは弾薬の違いにより動かないのと同じで、バージョンが違うものを見ているのは致命傷だ!

バージョンの調べ方がわからないだと! いいだろう。特別に教えてやろう。LivebookではSystem.version()という関数を使う事で教えてくれる

System.version()
1.15.7

スクリーンショット 2023-12-11 13.02.17.png

ここで、たとえば前回利用したTuple.to_list()について知りたいとしよう。
Tupleを扱っているのでTupleで検索をしろ!

右上の検索フォームでTupleで調べると、一番上にTuple (module)が表示されるのでそれをクリックしろ。
これで、貴様はTupleに関する便利な道具(関数)についての情報がまとまったページを見ることができるわけだ。

今回は、TupleをListに変更したいから、Tuple.to_list()と、とてもわかりやすい名前で書かれているものを見るんだ。

以下のように書かれてるのが見えたか?

to_list(tuple)
@spec to_list(tuple()) :: list()
Converts a tuple to a list.

Returns a new list with all the tuple elements.

Inlined by the compiler.

Examples
tuple = {:foo, :bar, :baz}
Tuple.to_list(tuple)
[:foo, :bar, :baz]

よし、読み方を教えよう。

to_list(tuple)to_listの部分は道具の名前だ、これを関数名と呼ぶ。
to_list(tuple)()の中にあるtupleとは道具を使う時に入れる値だ。今回はtupleと書かれているから{}この形が最低でも必要なわけだ。

もし、この()カッコの中に何も無い場合は、何も入れずに使える関数ということだ。

もし、この()の中に、( tuple \\ {})のように\\という記号があれば、それは()の中に何も入れなかった場合、何もしなくても\\この記号の右隣りにある値がデフォルトで入るという意味だ。

{tuple \\{})この例だと、tupleを引数に入れなかった場合はデフォルトで値の無い{}tupleがデフォルトで入ってくるという意味だ。

わかったか?

@spec to_list(tuple()) :: list() これは、tupleを入れたらlistが帰ってくることを表してる
例えば、@spec sum(tuple()) :: number()この場合はtupleを入れたら数値が帰ってくることを意味してる。
詳しくは色々あるが、今の貴様らにはまだ早い、今のところは、上記の意味がわかれば充分だ!下手な詮索はよせ、貴様らが情報省隊なら話しは別だ! しかし、情報ではない貴様らには詮索は禁物だ!

この部分は単なる説明だ、この関数が何をしてくれるものか説明が英語でされているだけだ。

Converts a tuple to a list.

Returns a new list with all the tuple elements.

Inlined by the compiler.

何? 英語は読めないだと?

貴様、まだそんな甘えたことを言っているのか!今の戦争は情報戦だ、いや、第2時世界大戦の時ですでに情報戦!
日本は情報戦において負けたのをもう忘れたのか!

貴様らがエンジニアを覚えるのはもはや、国防上に必要な知識だ、もはや武器だけで戦争をしていると思うな!
英語だろうが、プログラミング言語だろうが、我々はもはや多言語を制する必要があることを忘れるな!

そして、最後に、使い方の例が載っている。ここまで親切に書かれている。ありがたく思え!

tuple = {:foo, :bar, :baz}
Tuple.to_list(tuple)
[:foo, :bar, :baz]

何? 意味がわからないだと!
貴様らはどこまで腑抜けているのだ、わからないと言う前になぜ、試さない!
これを動かしたところで、失敗しても誰も死ぬわけじゃない、こんな生ぬるい訓練に怖気付いたのか?

そんな無駄なことに悩む前にさっさとコードを動かして試してみろ!わかったな。

  • はい!

よーし、それでは 次回、このリストを使うことで便利にする関数を読んで、いよいよ動かすぞ。今日はここまで、それでは次回 Part12でまた会おう!

13
0
0

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
13
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?