Upgrade to Pro — share decks privately, control downloads, hide ads and more …

『推し』で仕事をする

 『推し』で仕事をする

pojiro

May 18, 2022
Tweet

More Decks by pojiro

Other Decks in Technology

Transcript

  1. 『推し』で仕事をする
    ElixirImp#20Elixir生誕10周年で新装!Elixirお仕事2022春
    2022/05/18

    View full-size slide

  2. 自己紹介
    ● twitter: pojiro3
    ● web: https://www.tombo-works.com

    View full-size slide

  3. 経歴
    エンジンベンチSE
    出向
    シャシダイ開発管理
    A社
    埼玉県
    2010/04 - 2014/03
    T社
    豊田市
    2014/04 - 2017/03
    http://www.orientec.co.jp/products/
    S社
    名古屋市
    2017/03 - 2019/10
    組み込みLinux屋さん
    プログラマー
    Tombo Works
    岡崎市
    2020/06-現在
    エンジニア

    View full-size slide

  4. 『推し』is
    Elixir & Nerves !!

    View full-size slide

  5. 『推し』, Elixir & Nerves, で仕事する
    2019年後半から Elixir/Nerves を学び始め、
    ● 2021年後半から Phoenix での SaaS開発
    ○ 株式会社DigiDock Consulting
    ● 2022年前半に Nerves のポーティング・ライブラリ(の土台)開発
    ○ さくらインターネット株式会社
    として, 『推し』, Elixir & Nerves, で仕事する ことができました!感謝!

    View full-size slide

  6. 今日話すこと
    ● どうやってElixir, Phoenix, Nervesを学習したか
    ● どんな活動が仕事につながったか
    私個人のケースになりますが、紹介してみようと思います。

    View full-size slide

  7. 『推し』で仕事するまでにやってきたこと
    2022
    2021
    2020
    Pocket LANcher の開発, 20/7-21/7
    Nervesポーティング, 21/5
    Phoenix本, 20/9
    技術書典 9
    Phoenix開発
    Nerves開発
    プログラミングElixir 19/7
    Programming Phoenix 19/11
    Qiita 学習output 19/11-20/3
    NervesJP に参加開始 19/12
    fukuoka.ex に参加開始 19/10
    TomboWorks 20/6-

    View full-size slide

  8. 2年の学習期間, 19/8 - 21/8
    2022
    2021
    2020
    Pocket LANcher の開発, 20/7-21/7
    Nervesポーティング, 21/5
    Phoenix本, 20/9
    技術書典 9
    Phoenix開発, 21/9開始
    Nerves開発
    プログラミングElixir 19/7/28
    Programming Phoenix 19/11
    Qiita 学習output 19/11-20/3
    NervesJP に参加開始 19/12
    fukuoka.ex に参加開始 19/10

    View full-size slide

  9. Enumを通してElixirの基礎を学ぶ
    ● map/reduce に慣れることが最初の課題
    ○ Enumモジュールを自分なりに実装するというトレーニング
    https://github.com/pojiro/oreore_implementation_of
    _myenum
    ○ ※実際のEnumモジュールは、マクロやErlangを使ってい
    ますが、Elixirだけで組んでいます

    View full-size slide

  10. Phoenixを学ぶ
    ● WebフレームワークのPhoenixを学ぶのがダイブ辛かった
    ○ 分かってしまえば、リクエストからレスポンスまでをconn
    を通して扱うデータフローのフレームワーク
    ○ ですが、、Webフレームワークをちゃんと学ぶのははじめ
    てで、Phoenixのルールを、一人かつ英語で学ぶのはだ
    いぶ辛かった💦
    ● その学習した内容をまとめて書いたのが
    「データフローで学ぶPhoenix」
    本としては拙い部分が多いのですが、Phoenixのデータの流れ
    を学ぶことができます。
    ○ いまでもたまに売れます。700円、お買い得!!

    View full-size slide

  11. Nervesを学ぶ
    組み込みLinux を Elixir でできるフレームワーク
    ● 作って学ぶNerves、BBBでCO2計測
    ○ 最初は懐疑的だったが、さわるほどに一推しに!
    ○ Linuxのカスタマイズをしない限り、組み込みLinux
    であることを意識せずに Elixir の Application 開
    発ができるのが超良いです
    ● コミュニティ, Nerves JP, に参加して継続的に学びました

    View full-size slide

  12. 2年の学習期間, 19/8 - 21/8
    2022
    2021
    2020
    Pocket LANcher の開発, 20/7-21/7
    Nervesポーティング, 21/5
    Phoenix本, 20/9
    技術書典 9
    Phoenix開発, 21/9開始
    Nerves開発
    プログラミングElixir 19/7/28
    Programming Phoenix 19/11
    Qiita 学習output 19/11-20/3
    NervesJP に参加開始 19/12
    fukuoka.ex に参加開始 19/10

    View full-size slide

  13. 装置例)
    PLC
    HTTP(S)/SSH
    サーバー
    TCPアプリ
    内蔵の機器
    装置
    LAN
    ケーブル
    モバイル
    WiFi
    192.168.1.1 192.168.1.10
    PC
    What’s Pocket LANcher
    社内 現場
    装置はPCでもPLCでも、
    LANケーブルでつなぐことができれば
    同一LANにいるものとして扱えます
    つまり
    社内PCと現場装置をつなげられます!
    OSSに支えられる特徴
    ● レイヤー2のVPNを張ることができるので、 Ethernetのパケット転送ができる
    ● ファームウェアの配信機能があり、 PLBのバージョンアップができる

    View full-size slide

  14. Pocket LANcherのシステム構成
    装置
    LAN
    ケーブル
    モバイル
    WiFi
    192.168.1.1 192.168.1.10
    PC
    社内 現場
    Nerves Hub Web VPN Server

    View full-size slide

  15. 継続と運で点と点がつながって仕事へ
    2022
    2021
    2020
    Pocket LANcher の開発, 20/7-21/7
    Nervesポーティング, 21/5
    Phoenix本, 20/9
    技術書典 9
    Phoenix開発, 21/9開始
    Nerves開発
    プログラミングElixir 19/7/28
    Programming Phoenix 19/11
    Qiita 学習output 19/11-20/3
    NervesJP に参加開始 19/12
    fukuoka.ex に参加開始 19/10
    NervesJPで
    myasu と知り合い
    可能に!!
    20/6頃のノートに
    piacereさんと
    mokichiさんから
    チーム開発を学ぶ
    という希望を書い
    てる

    View full-size slide

  16. 『推し』で仕事する、につながるポイントは何であったか?
    ● 身も蓋もないけど、今回は運の要素がすごく大きい!
    ○ Phoenix開発:仕事の募集がタイミングよくかかり、応募できた
    ○ Nerves開発:声をかけてもらえた
    共通点は
    ● 人とのつながりが仕事につながった
    ○ コミュニティに参加する
    ○ 自分が何者であるか何が提供できるかを分かりやすくする
    ■ 学んだこと・作ったものを記事にする/発表する
    ● 継続的に時間を集中投下し、下地を作っていた

    View full-size slide

  17. Nerves in Production
    ● ExiBee & PLB in 小水力発電所
    発電所でのNerves, ExiBeeの活用
    は、5/20(fri) NervesJP #25 #kochiex
    がなんかええもんつくったらしい回 で
    紹介されるのでぜひご参加あれ!

    View full-size slide

  18. 他言語の仕事でも、Elixirを絡ませる(無理なく
    装置実機
    Windows
    Desktop App
    PC
    シミュレータ
    Windows
    Desktop App
    PC
    Application
    Supervisor
    circuits_uart
    GenServer
    シリアル通信
    シリアル通信
    C#で開発
    パターンマッチを使うことで、受信電
    文に対する応答を生成するサー
    バーを楽に作ることができた!!
    ソフトウェアのリプレースが仕事

    View full-size slide