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 Slide

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

    View 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 Slide

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

    View Slide

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

    View Slide

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

    View 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 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 Slide

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

    View Slide

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

    View Slide

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

    View 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 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 Slide

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

    View 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide