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

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

pojiro
January 22, 2022

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

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