lily whiteと学ぶElixir入門

かしこい、かわいい、Elixir!(本人不在)
 
プログラミング言語Elixirの基礎を学びます。


凛「おーいみんな、大変にゃ!にこちゃんたちがなんか面白そうなことしてるにゃ!」
希「お、にこっち、なんか悪巧みしとるん?」
凛「BiBiのプロモーションがどうとか言ってたけど・・・話の中身はさっぱり分からなかったにゃ」
海未「分からないのに、面白そうというのは・・・」
凛「むー、だって3人とも楽しそうだったんだもん!PCに向かって、パイソンがどうとか・・・きっと新種の蛇でも見つかったんだにゃ」
希「あー」
海未「希、分かるのですか?私はその、爬虫類は、少々苦手でして・・・」
希「Pythonやね。何をとち狂ったかプログラミングに手を出したみたいや」
凛「いいなー、凛もやるー!」
海未「凛、何の話か分かっていますか・・・?」
希「lily whiteのPRがてら、ウチらも何かやってみる?面白いとは思うけどな」
凛「さんせーい!」
海未「し、しかし・・・私はその、理系には疎いので、大丈夫でしょうか・・・」
希「lily whiteで一番の成績優秀者は海未ちゃんやろ?情報の授業もそつなくこなしてるみたいやん」
海未「それは、真面目に勉強していれば結果は付いてきますから」
希「それや。まさか海未ちゃん、にこっちたちが真面目にやっとるのに、手を抜くつもりじゃあらへんよな?」
海未「そ、それは・・・わかりました。ならば、私も全力で取り組みましょう。希、凜、あなたたちも手抜きは許しませんよ?」
凛「はーい!」
希「そうこなくっちゃ!」


希「・・・というわけで、プログラミング言語といっても色々あるわけやけど、BiBiとかぶるのもつまらないやん?」
海未「そうですね。せっかくやるのですから、にこたちより高度なことをやらなくては」
凛「おー、海未ちゃんの負けず嫌いが発動にゃ」
希「この前はGitの話をしたけども、実はウチ別にプログラムに詳しいわけじゃないんよ」
凛「はぅ、頼みの綱と思ったらただの蜘蛛の糸だったにゃ」
希「おっと蜘蛛の糸馬鹿にしたらあかんで。言語の流行り廃りくらいは何となく知っとる」
海未「流行ってる言語をやるのですか?」
希「いーや、流行りそうな言語や。色々考えたんやけど、Elixirなんてどうやろ」
海未「えりくさー?」
凛「凛知ってるよ。HPとMP全回復してバッドステータス全部解除する薬にゃ!もったいなくてラスボス戦でも使えないラストエリクサー症候群にかかる人も多いにゃ」
希「凛ちゃんゲーマーだったん・・・。けど、今回はプログラミング言語の話でな」
海未「Elixirという言語があるのですね」
希「そもそもはErlangっていう結構古くからある言語があってな。通信機器とかに多く使われる、信頼性と並列実行を重視した言語なんやけど、なにぶん文法が難しいんや。そこで、Erlangの実行環境上で動く、Erlangより書きやすい言語として登場したのがElixir」
凛「なんか本格的にゃ」
希「ま、そんな背景はありつつも、とりあえず普通にプログラミング言語として勉強してみたらどうかな、て思っとるん」
海未「そうですね。いきなり信頼性や並列実行という話をされても、初心者としてはちょっと困ってしまいます」
希「ただ、ウチもElixirの文法とかは全然知らん。せやから、みんなで順番に勉強してきて講義をやる感じやね」
海未「それがよさそうですね」
希「ほな初回は、海未ちゃ・・・」
海未「希で」
凛「希ちゃんにゃ」
希「・・・ウチか。まあええわ。じゃ、次回インストールの説明からいこか」


Part1:インストール

希「環境構築から始めるで。必要なものはErlangとElixirの実行環境とテキストエディタやね」 海未「ErlangとElixir、別々に必要なのですか?」 希「基本的にセットで入るから心配せんでええよ。テキストエディ

Part2:Hello, World

凜「じゃあ、とりあえず動かしてみるにゃ!」 希「お、今回は凜ちゃんか」 凜「まずはこのコードを書いてみるにゃ」 海未「り、凜!」 凜「えへへ、凜は決め台詞ないから借りちゃったにゃ」 希「ファイルに保存すればええんやね?」

Part3:数値型

海未「それでは、僭越ながら今回は私が」 凜「鬼軍曹登場にゃ」 海未「希に破廉恥なことをされるよりはましだと思ってください」 凜「どっちも嫌にゃ!」 海未「今回は数値型の話ですが、まずElixirにどんなデータ型があるかま

Part4:アトム

希「今回はデータ型、アトムについてや」 凜「凜知ってるよ、アトムは・・・」 希「いや知らんな」 海未「知りませんね」 凜「ひどいにゃ!凜、男の子と遊んで育ったからロボットは詳しいんだにゃ!」 希「分かってないな」 海未「

Part5:文字列型

凜「今回は文字列の話にゃ。大事なところだから心して聞くといいにゃ」 海未「はい、よろしくお願いします」 凜「文字列というのは文字通り文字の並びだよ。といっても、どうやら2種類あるらしいにゃ」 凜「同じように見えて、ちょっ

Part6:リスト

海未「では今回は、リストについて見てみましょう」 希「言葉だけは何回か出てきとるやつやね」 海未「リストというのは、ここまでに出てきたようなデータに順序を付けて並べたものです」 凜「リリース順にゃ」 海未「入れられるもの

Part7:タプル

希「前回、海未ちゃんがリストの解説をしてくれたけど、今回紹介するタプルもそれとよく似たデータ型や」 海未「リストについて調べていたときにタプルも少し見たのですが、順序付けされた集合という意味では同じなんですよね」 希「せ

Part8:マップ

凜「マップにゃ。リストとかタプルみたいなデータの集まりなんだけど、順序がないのと、データに見出しを付けられるのが特徴だよ」 凜「辞書みたいなものだにゃ」 海未「これだと、名前に学年を紐付けているのですね」 凜「そうにゃ。

Part9:キーワードリスト

海未「それではキーワードリストですが・・・言葉で説明するのは、少しややこしいです。ですから、まずはコードを見てみましょう」 希「これって・・・タプルのリストやん?」 海未「そうです。最初の要素がアトムになっているタプルの

Part10:真偽値

希「シェイクスピアは語る。生きるべきか、死ぬべきか、それが問題や」 海未「いきなり何なのですか?それは・・・」 希「昔読んだ本に書いてあったんよ。ブール型の章の頭に」 海未「その昔がいつなのかは触れないことにしますが・・

Part11:パターンマッチング

凜「今回はパターンマッチングにゃ!」 海未「ちゃんと調べてきましたか?」 凜「ばっちりにゃ!」 希「お、自信たっぷりやね」 凜「それじゃ、行っくにゃー!」 希「にゃー!」 海未「・・・に、にゃー」 凜「えーっとね、Eli

Part12:条件分岐

海未「今回からは、プログラムを賢くする制御構造を見ていきましょう」 凜「かしこい!」 希「かわいい!」 凜希「エリクサー!」 海未「というわけでサブタイトルはKKEでつけておきました」 凜「曲ネタで探すのは挫折したにゃ」

Part13:関数

希「Elixirは関数型言語や。つまり、今回やる関数が、Elixirの中心になってくるってことや」 凜「なんか大変そうだにゃ・・・」 希「案外そうでもないんよ。そりゃ、難しいこと考え始めるときりがないけど、関数の定義と呼

Part14:再帰

凜「なんか難しいところ当たっちゃったけど頑張って調べてきたにゃ」 希「ループ、けっこう大変なん?」 凜「Elixirにはループ用の構文は用意されてないにゃ。だから、再帰というのを使うんだよ」 凜「結果は」 凜「にゃ」 海

Part15:EnumerableとStream

海未「それでは今回はEnumerableとStreamについてです。どう訳せばいいのかよくわからないので、表記はこのままでいきますね」 海未「まずはEnumerableから始めます。列挙可能な、ということで、リストやマッ

Part16:入出力

希「・・・とまあ、これまで色々と見てきたわけやけど、結局のところデータはソースコードにベタ書きで、結果はコンソールに出すだけやった。色々融通が利かないわけや」 海未「たしかに、処理したい値を毎回ソースコードに書くのも非現

Part17:例外処理

凜「今回は例外処理にゃ。なんかやばいことが起きたときになんとかするための仕組みだよ」 希「これまでエラー処理なんて考えてこなかったもんなあ」 海未「・・・」 希「あかん、海未ちゃんまだ駄目や」 凜「海未ちゃん気をしっかり

Part18:構造体

続・おまけ 海未「破廉恥です!破廉恥です!!破廉恥です!!!」 凜(予想以上のすごい剣幕にゃ) 海未「何なのですかあれは!?魔力供給と称して、あ、あんなこと・・・」 希(うんうん、顔真っ赤にして取り乱す海未ちゃん、やっぱ

Part19:プロトコル

続・おまけ 海未「破廉恥です!破廉恥です!!破廉恥です!!!」 希(予想以上のすごい剣幕や) 海未「何なのですかあれは!?女の子同士、それも小学生が、あ、あんなこと・・・」 凜(うんうん、顔真っ赤にして取り乱す海未ちゃん

Part20:内包表記

希「ほな、内包表記の説明するで。内包表記ってのは、リストとかに使ってたmapとかfilterとかを簡単にかけるようにした構文や」 希「これはmapを使うと」 希「こう書いてたやつや」 海未「あまり変わらないようですね」

Part21:シギル

海未「では、Elixirの基本文法の締めくくりとして、シギルについて見てみましょう」 希「ウチのスピリチュアルパワーをもってしても、いまいちよくわからん言葉なんやけど」 凜「希ちゃん、あれはもうやめるにゃ」 海未「Eli

Part22:Mix

凜「じゃ、今回はMixの話にゃ!」 希「開発用のツールやったっけ?」 凜「プロジェクト作成からテストまで面倒を見てくれるプロジェクト管理ツールだよ」 凜「早速だけどWindowsだとうまく動かなかったから、Windows

Part23:ユニットテスト

凜「前回に引き続き凜のターンにゃ!」 海未「今回はテストでしたね」 凜「うん。MixとExUnitを使ったユニットテストをやってみるにゃ」 凜「お題は前回のFizzBuzzもどきだけど、仕様そのままで実装を少し変えるから

Part24:QuoteとUnquote

希「ほな今回はマクロ・・・そのものの前に、ここまでで見てきたようなElixirの構文が、内部的にはどんな形式になっているか見てみようか」 海未「内部的には・・・というと」 希「Elixirの文法は人間が理解しやすいように

Part25:マクロ

凜「みんなSR凜3枚獲ってくれたかにゃ?」 海未「・・・すみません凜。まさか最後の3時間で12000人に抜かれるとは・・・」 凜「もー、かよちんなんて昼もおにぎり5つしか食べずに石割り続けてたんだよ?」 海未「何をどう突

Part26:プロセス

凛「いよいよ並行プログラミングに突入にゃ!」 海未「Elixirの本領発揮ですね」 凛「まずは基礎知識としてプロセスの説明をするにゃ」 凛「いままで見てきたコードは、ぜんぶ1つのプロセスの中で動いてたんだよ。けどElix

Part27:Agent

ことり「スペシャルゲスト、ことりですよ~」 海未「こ、ことり!?何かあったのですか?」 ことり「海未ちゃん、なんで焦ってるのかな?」 凛「前の方のサンプルコードにことうみことうみ書いてあるからにゃ」 ことり「ことうみ・・

Part28:GenServer

海未「日本語の情報源が減ってきました・・・」 希「まあ、予想はしとったけど・・・海未ちゃんが音を上げるとはね」 海未「いえ、読めないわけではないのですが、そうは言ってもなかなか大変でした」 海未「ではいきます。前回作った

Part29:GenEvent

近況報告2015/9/19 ことり「海未ちゃん」 海未「」 ことり「ことり[お祭り編]の覚醒後の絵、見せて?」 海未「」 ことり「じゃあ浴衣の絵でもいいよ?」 海未「」 ことり「3枚ってお願いしたよね?どうして1枚もない

Part30:Supervisor

2015/9/21 希「黒澤ルビィ生誕祭2015」 海未「・・・あの」 凛「誰にゃ?」 希「ウチにはな、スクールアイドルの未来が見えるんよ。きっとあの子も、遠からずAqoursの1人としてラブライブに名前を刻むで」 海未

Part31:ETS

海未「最近になってアイマスを見始めたのですが」 希「・・・まあ、アイドルの研究は大事ってことにしとこうか」 海未「如月千早を見ていると、心が安まる気がします。特に水着回」 凛「海未ちゃん、自分より下を見つけて安心するのは

Part32:依存関係とUmbrella Project

凛「じゃ、今回はUmbrella Projectというのを見てみるにゃ」 希「凛ちゃん、傘嫌いそうやん?」 凛「Hello,星を数えて~♪」 凛「まずはモジュール同士の依存関係を定義するやり方からね。書く場所はmix.e

Part33:Taskとgen-tcp

希「いよいよサーバっぽくなってくるで。今回は外部とTCPで通信してみるよ」 凛「TCP?」 海未「・・・そこからですか・・・」 希「凛ちゃん、1日あげるからこのマスタリングTCP/IP 入門編 第5版を読んでくるんや」

Part34:総仕上げ

海未「では前回のechoサーバを、TCP経由でコマンドを受け取ってKVアプリケーションを制御できるように拡張してみましょう」 凛「いよいよ大詰めって感じにゃ」 海未「"CREATE card1"のような文字列を受信すると

Part35:Twitter投稿クライアントを作ろう

凛「みんなーっ!ただいまにゃーっ!」 海未「希、どうしたのですか?なにやら急に」 希「唐突にネタが降ってきたんで、ちょっとね」 希「なんか簡単なものでもElixirで作れたら見せ合っても面白いかなと思ってな」 海未「ああ

Part36:Amazon Product Advertising APIを使ってみる

凛「今日集まってもらったのは他でもないにゃ」 海未「他も何も・・・」 希「思い当たる節が何もないんやけど?」 凛「こ、細かいことはどうでもいいにゃ!とにかく、ちょっとやりたいことがあってAmazonの商品情報を扱うAPI


LINEで送る
Pocket


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です