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

OSSを全面利用して商用プロダクトを作る

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for pojiro pojiro
January 22, 2022

 OSSを全面利用して商用プロダクトを作る

Avatar for pojiro

pojiro

January 22, 2022
Tweet

More Decks by pojiro

Other Decks in Technology

Transcript

  1. 自己紹介 • 衣川 亮太 (きぬかわ りょうた) • 愛知県岡崎市の個人事業エンジニア • 屋号:Tombo

    Works • twitter: @pojiro3 • I love Elixir & Nerves ◦ 日本のNervesコミュニティであるNerves JPに所属しています
  2. アウトライン 1. Tombo Worksで開発・提供しているPocket LANcherについて 2. 製品開発に使っているOSSは?なぜ使おうと考えたのか? 2.1. 個人事業で商用製品を提供するために必要と考えたこと 2.2.

    Nerves(Buildroot, Elixir), NervesHub 3. そのOSSにどのようにcontributionを返しているか? 3.1. OSSを支えるcontributor 3.2. 何ができるか?何をしているか?
  3. 装置例) PLC HTTP(S)/SSH サーバー TCPアプリ 内蔵の機器 Pocket LANcher Box 装置

    LAN ケーブル モバイル WiFi 192.168.1.1 192.168.1.10 PC 社内と現場をつなぐ 社内 現場 装置はPCでもPLCでも、 LANケーブルでつなぐことができれば 同一LANにいるものとして扱えます つまり 社内PCと現場装置をつなげられます! OSSに支えられる特徴 • レイヤー2のVPNを張ることができるので、 Ethernetのパケット転送ができる • ファームウェアの配信機能があり、 PLBのバージョンアップができる
  4. Pocket LANcherに使っているOSSは? • プログラミング言語:Elixir ◦ https://elixir-lang.org/ • Webフレームワーク:Phoenix ◦ https://www.phoenixframework.org/

    ◦ Elixir製のWebフレームワーク • 組み込みLinux:Nerves ◦ https://www.nerves-project.org/ ◦ Elixirで組み込みLinuxを開発できるフレームワーク • VPN:SoftEther VPN ◦ https://ja.softether.org/ ◦ レイヤー2の強力なVPN
  5. 開発/運用効率重視 • 開発の(ほぼ)すべてをElixirで行う • Elixirの特徴 ◦ 並行処理の記述が容易 ◦ 耐障害機能の提供( Supervisor,

    GenServer等) ◦ Nervesを利用することで、組み込み Linuxのアプリケーション開発も Elixirで可能
  6. Why Nerves?? 組み込みLinux開発における課題をNervesが解決 • Nervesが構築するLinuxは ◦ イメージサイズが比較的小さい(およそ 50MB) →書き込み・転送が早くできる、開発効率 🆙

    ◦ ルートファイルシステムが ROマウントされるので電断対策 ✅ • NervesがLinuxを隠蔽するから ◦ アプリケーション開発に専念できる ◦ アプリケーションがハードウェアに依存しないポータビリティを持てる ◦ ファームウェア管理が非常に容易で、配信( OTA)が可能
  7. • Elixir アプリケーションを開発するのみ ◦ 設定はElixirプロジェクトに閉じる ◦ バージョンはElixirのmix.lockで管理 ▪ linuxであるnerves_system_***も •

    電断対策はNervesに任すことができる • Elixirアプリケーションとnerves_system_*** で分かれているためハード移行が容易 Why Nerves?? Linux カーネル ユーザーランド Linux カーネル ユーザーランド Elixir アプリケーション Erlang VM Buildrootで構築する nerves_system_*** • Linuxアプリケーションを個々に立ち上げる ◦ 設定が散る ◦ 各アプリケーションのバージョン管理 ▪ ファームのバージョン管理 • 電断対策が必要 • ハード移行が大変
  8. アプリケーションを(概ね)変えずに ハードを移行できる Linux カーネル ユーザーランド Elixir アプリケーション Erlang VM nerves_system_rpi3

    https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus/ Linux カーネル ユーザーランド Elixir アプリケーション Erlang VM nerves_system_f3rp70 https://github.com/pojiro/nerves_system_f3rp70 Linux カーネル ユーザーランド Elixir アプリケーション Erlang VM nerves_system_??? https://armadillo.atmark-techno.com/armadillo-iot-g4
  9. 推しOSSをお金で応援する • NervesはOpen Collectiveを利用してSponser/Backerを募っています ◦ https://opencollective.com/nerves-project • 私は現在、Backer(2021 $5/month ->

    2022 $25/month)ですが Sponser($100/month)を目指しています。 そのためにもElixir/Nervesでお金を稼ぐを意識しています💪
  10. 推しOSSのファンを増やす • Nervesに関する発表をする ◦ ALGYAN: https://algyan.connpass.com/ ◦ FA設備技術勉強会: https://fa-study.connpass.com/ ▪

    Factory Automationの勉強会 ◦ SWEST: https://swest.toppers.jp/ ▪ 組込みシステムの勉強会 • NervesJPのイベント開催・参加 ◦ https://nerves-jp.connpass.com/ ◦ 2022年はオーガナイザーを頑張ろうと思っています! ▪ 2/18(金)19:30〜21:30 で開催します(内容未定)
  11. 起点となる人 コントリビューションの輪の一部となり恩返し pay forward -> pay forward -> pay forward

    が 最終的に pay back として戻る輪の一部になるを目指す Elixir Jose Nerves Frank NervesJP Takase Tombo Works Kinukawa ALGYAN Kogure