ElixirImp#31_書籍【Elixir実践ガイド】の写経の感想_20230517

1K Views

May 17, 23

スライド概要

2023/5/17に開催される、【ElixirImp#31:Elixirで作ったもの、何でもLT会】の発表資料です。

ElixirImp#31:Elixirで作ったもの、何でもLT会 URL:
https://fukuokaex.connpass.com/event/283391/

profile-image

組込みソフトウェアエンジニア。 技術バックボーンはC言語・ベアメタル。 CQ EVカートのオーナーで、ハード・ソフトウェアの改造を通じて自身のスキルアップを日々考え中・・・。 LAPRASポートフォリオ: https://lapras.com/public/k-abe GitHub: http://github.com/grace2riku Qiita: https://qiita.com/juraruming Zenn: https://zenn.dev/k_abe よろしくね。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

ElixirImp#31:Elixirで作ったもの、何でもLT会 書籍:【Elixir実践ガイド】の写経の感想 2023/5/17 パーソルクロステクノロジー株式会社 阿部耕二 koji.abe@persol.co.jp

2.

自己紹介 1 ▪パーソルクロステクノロジー株式会社 第1技術開発本部 第4設計部 設計2課 阿部 耕二(あべ こうじ) ▪医療機器開発 ・組込みソフトウェア開発。 ・C言語、ベアメタルの開発業務経験がほとんど。 2

3.

自己紹介 2 ▪技術書を書いて技術書典13に参加したり、 ▪マイコンのコンテスト(※)に参加したり、 ※SPRESENSE™ 活用コンテスト 組込みソフトウェア開発が好きなおじさんです。 よろしくお願いします。 ▪LAPRASポートフォリオ:https://lapras.com/public/k-abe ▪twitter: @juraruming 3

4.

目次 • 写経の動機 • 写経した本の紹介 • 写経する前の状況 • 写経の方法 • 写経の感想 • 今後やってみたいこと 4

5.

目次 • 写経の動機 • 写経した本の紹介 • 写経する前の状況 • 写経の方法 • 写経の感想 • 今後やってみたいこと 5

6.

写経の動機 • 昨年8月、ElixirとNervesのハンズオン(※)に参加し、組込みシステムでモダンに 開発できることを体験し、感動した。 Elixirとnervesのことをより深く知りたいと考え、とりあえずElixirの書籍の写経 を始めてみることにした。 ※日本ソフトウェア科学会第39回大会チュートリアル 「関数型言語Elixirで始めるIoTシステム開発入門」 GitHubリポジトリ 6

7.

目次 • 写経の動機 • 写経した本の紹介 • 写経する前の状況 • 写経の方法 • 写経の感想 • 今後やってみたいこと 7

8.

写経した本の紹介 • 写経した本(現在も継続中・・・) Elixir実践ガイド https://book.impress.co.jp/books/1120101021 第Ⅰ部 Elixir入門 第 1 章 イントロダクション 第 2 章 Elixir 開発環境の構築 第 17 章 Enum モジュール 第 18 章 内包表記 第 3 章 Elixir の基礎 (1) 第 19 章 case マクロと with マクロ 第 4 章 Elixir の基礎 (2) 第 20 章 複数の節を持つ関数 第 5 章 Elixir の基礎 (3) 第 6 章 Elixir の基礎 (4) 第 21 章 reduce 関数 第Ⅱ部 モジュール、関数、マクロ 第 22 章 エラー処理 第 7 章 モジュール 第 8 章 関数 (1) 第Ⅴ部 開発演習 第 9 章 関数 (2) 第 23 章 ExUnit 第 10 章 第 24 章 Mix マクロの初歩と条件分岐 第Ⅲ部 データ構造 第 11 章 アトム 第 25 章 エージェントと GenServer 第 12 章 リスト 第 26 章 三目並べ (1) 第 13 章 タプルとキーワードリスト 第 27 章 三目並べ (2) 第 14 章 マップ 第 15 章 ビットストリング、バイナリ、文字列、文字リスト 第 28 章 三目並べ (3) 第Ⅳ部 魅惑のElixirワールド 付録 演習問題解答 第 16 章 パターンマッチング 8

9.

写経した本の紹介 ▪なぜこの本をセレクトした? Elixirのdiscordコミュニティ(elixirと見習い錬金術師)に相談したらこの本 を紹介いただいたため。 プログラミングElixir(第2版)と迷ったが難易度がElixir実践ガイドよりも 難易度が高い、というご意見があったので参考にさせていただいた。 9

10.

目次 • 写経の動機 • 写経した本の紹介 • 写経する前の状況 • 写経の方法 • 写経の感想 • 今後やってみたいこと 10

11.

写経する前の状況 ▪Elixir経験はWeb記事の写経(※1)、前述のハンズオン(※2)で体験した、という 状況。 ※1 en エンジニアHub つぎの記事 ・最速で知る! ElixirプログラミングとErlang/OTPの始め方【第二言語とし てのElixir】 ・挑戦! Elixirによる並行・分散アプリケーションの作り方【第二言語として のElixir】 ※2 日本ソフトウェア科学会第39回大会チュートリアル 「関数型言語Elixirで始めるIoTシステム開発入門」 GitHubリポジトリ 11

12.

目次 • 写経の動機 • 写経した本の紹介 • 写経する前の状況 • 写経の方法 • 写経の感想 • 今後やってみたいこと 12

13.

写経の方法 ▪@t_wadaさんの写経スタイル。 ・意味のあるコードを1日1回でも書く。 ・変更履歴管理ツールにコミットログ(本の章番号・不明点)を書く。 ・座れる駅(始発駅)に住み、通勤中にコードを書く環境をつくる。 →コロナの時差出勤(1h早く)で通勤電車内で写経可能になった!!! +α ・Elixir実践ガイドの章末の練習問題も欠かさず写経&理解するようにした。 ・学習したコードはどのようなシーンで使えるかイメージし、写経のときに 感じたことなどもコミットログに追記した。 13

14.

▪現在の状況 写経の方法 ・全28章のうち25章まで完了。全体の8割くらい終わった。 ・2023/2/24から開始。 第Ⅰ部 Elixir入門 第 1 章 イントロダクション 第 17 章 Enum モジュール 第 2 章 Elixir 開発環境の構築 第 18 章 内包表記 第 3 章 Elixir の基礎 (1) 第 19 章 case マクロと with マクロ 第 4 章 Elixir の基礎 (2) 第 5 章 Elixir の基礎 (3) 第 6 章 Elixir の基礎 (4) 第Ⅱ部 モジュール、関数、マクロ 第 7 章 モジュール 第 20 章 複数の節を持つ関数 第 21 章 reduce 関数 第 22 章 エラー処理 第 8 章 関数 (1) 第Ⅴ部 開発演習 第 9 章 関数 (2) 第 23 章 ExUnit 第 10 章 マクロの初歩と条件分岐 第Ⅲ部 データ構造 第 11 章 アトム 第 12 章 リスト 第 13 章 タプルとキーワードリスト 第 14 章 マップ 第 15 章 ビットストリング、バイナリ、文字列、文字リスト 第 24 章 Mix 第 25 章 エージェントと GenServer 第 26 章 三目並べ (1) 第 27 章 三目並べ (2) 第Ⅳ部 魅惑のElixirワールド 第 28 章 三目並べ (3) 第 16 章 パターンマッチング 付録 演習問題解答 14

15.

目次 • 写経の動機 • 写経した本の紹介 • 写経する前の状況 • 写経の方法 • 写経の感想 • 今後やってみたいこと 15

16.

写経の感想 ▪モダンなエコシステム!!! ▪Elixirの気持ちよさを体感!!! ▪Elixirらしいプログラミングをなんとなく理解!!! 16

17.

写経の感想 ▪モダンなエコシステム!!! ・対話型のシェル環境(IEx)ですぐに動作確認できる!!! ・★テストが書ける!!テストで言語自体を学習できる。 ・Mixでプロジェクトの雛形をサクっと作れる!!! ・日本のコミュニティが活発!!! 平時の活動、年末のQiitaアドベントカレンダーの記 事投稿数が凄い・・・。 17

18.

写経の感想 ▪モダンなエコシステム!!! ▪Elixirの気持ちよさを体感!!! ▪Elixirらしいプログラミングをなんとなく理解!!! 18

19.

写経の感想 ▪Elixirの気持ちよさを体感!!! ・パイプ ・パターンマッチ ・ビットストリング・バイナリ 19

20.

写経の感想 ▪Elixirの気持ちよさを体感!!! ↓【ElixirImp Connpassイベントページ】 より引用 👍 👍 20

21.

写経の感想 ▪Elixirの気持ちよさを体感!!! ・ビットストリング・バイナリ ビットストリング:ビットの列を表すデータ構造 バイナリ:ビットストリングのうち、長さが8の倍数 →組込みソフトウェアで使える!!! 組込みソフトウェアのハードウェア制御(レジスタア クセス、通信、etc)はこのデータ構造を多用する。 21

22.
[beta]
写経の感想
▪Elixirの気持ちよさを体感!!!
・ビットストリング・バイナリ
例)
# データ読み出し
{:ok, read_data} = File.read(“binary_data.bin”)
# 先頭0byte目, 先頭1〜3byte目, 残りを取り出す
<<stx:binary-size(1), size::binary-size(3), rest::bits>> = read_data

こんなに簡単に必要なデータを取り出せる!!!
より詳しい説明はこちらのQiita記事を参照してみてください。
組込みに欠かせない Elixir でのビットの扱い方

22

23.

写経の感想 ▪モダンなエコシステム!!! ▪Elixirの気持ちよさを体感!!! ▪Elixirらしいプログラミングをなんとなく理解!!! 23

24.

写経の感想 ▪Elixirらしいプログラミングをなんとなく理解!!! ●Elixir実践ガイドが随所で【Elixirらしい書き方】を 丁寧に記載してくれている。 【Elixirらしい】を言語化できないが、Elixir経験者 のコードをなんとなく理解することができた。 24

25.

目次 • 写経の動機 • 写経した本の紹介 • 写経する前の状況 • 写経の方法 • 写経の感想 • 今後やってみたいこと 25

26.

写経の感想 ▪今後やってみたいこと ●Elixirでアプリをつくる。 Elixir実践ガイドの写経未実施の章で【三目並べ】 のアプリ作成予定で楽しみ♪♪♪ ●シリアル通信のお化け(※)みたいなシステムを Nerves・バイナリのパターンマッチングで対応した い(ゆくゆくはPhoenixアプリ化など)。 ※120個くらいのパラメータがある文字で区切られ、 一定周期でデータ収集・表示を行うシステム。 26

27.

写経の感想 ▪今後やってみたいこと ↓【ElixirImp Connpassイベントページ】 より引用 27

28.

終わり ご静聴ありがとう ございました。 28