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

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

2219597a939c895e5db6f8b7c94e2859?s=47 pojiro
January 22, 2022

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

2219597a939c895e5db6f8b7c94e2859?s=128

pojiro

January 22, 2022
Tweet

More Decks by pojiro

Other Decks in Technology

Transcript

  1. OSSを全面利用して商用プロダクトを作る Pocket LANcherの場合 ALGYAN OSSでガチにプロダクト開発! 実状紹介セミナー!

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

    Works • twitter: @pojiro3 • I love Elixir & Nerves ◦ 日本のNervesコミュニティであるNerves JPに所属しています
  3. 発表内容の焦点, スコープ 皆さん、『OSS(オープンソースソフトウェア)』を、どのように活用していますか? 今回の狙いは、「オープンソースを全面利用して商用プロダクトを作るには?」です。 「OSSでものづくり」というと、ホビーや研究の文脈で語られることが多いようです。 一方、「OSSでプロダクト」という切り口ですと、 ものづくりではなく「ビジネスやライセンス」の話しになりがちです。 さて皆さんは、「OSSと格闘するビジネス現場の生々しい話題」を聞いてみたいとは思いませんか?例えば、 • 製品づくりに使っているOSSは?なぜそのOSSを使おうと考えたのか?

    • そのOSSを商用プロダクトの開発にどのように役立てているか? • そのOSSにどのようにcontributionを返しているか? といった現場の実情です。
  4. アウトライン 1. Tombo Worksで開発・提供しているPocket LANcherについて 2. 製品開発に使っているOSSは?なぜ使おうと考えたのか? 2.1. 個人事業で商用製品を提供するために必要と考えたこと 2.2.

    Nerves(Buildroot, Elixir), NervesHub 3. そのOSSにどのようにcontributionを返しているか? 3.1. OSSを支えるcontributor 3.2. 何ができるか?何をしているか?
  5. Pocket LANcherについて

  6. Pocket LANcher https://www.pocket-lancher.com/ • 携帯できるVPNボックス • 出張先で使用することで、 社内から出張先の装置にアクセス可能とする。 • 出張の多い現場エンジニアをサポートする

    を目的に開発提供しています。 Pocket LANcher Box 概観
  7. 出張の多い現場エンジニア 例)エンジンベンチSE http://www.orientec.co.jp/products/ • 納入前に ◦ 製造工場へ • 納入時に ◦

    客先現場へ • 納入後に ◦ トラブルで客先現場へ ◦ 保守で客先現場へ
  8. 装置例) 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のバージョンアップができる
  9. 製品づくりに使っているOSSは? なぜそのOSSを使おうと考えたのか? どのように役立てているか?

  10. 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
  11. なぜそのOSSを使おうと考えたのか? 個人事業で商用製品を提供するために必要と考えたこと • リソースが少なくても成立させる ◦ 技術の梃子(てこ)をできる限り利用する →開発/運用効率重視 ▪ (ほぼ)すべてをElixirで開発する •

    製品・サービスの提供を維持する ◦ 自前で用意できないハードがディスコンになったら? →ハードの移行容易性 ▪ Nervesを使うことで可能となる
  12. 開発/運用効率重視 • 開発の(ほぼ)すべてをElixirで行う • Elixirの特徴 ◦ 並行処理の記述が容易 ◦ 耐障害機能の提供( Supervisor,

    GenServer等) ◦ Nervesを利用することで、組み込み Linuxのアプリケーション開発も Elixirで可能
  13. Pocket LANcherのシステム構成 Box管理 Nerves Hub Web VPN Server 出荷時に使用 FW管理・配信

    VPN 接続 サーバー クライアント
  14. Pocket LANcherのシステム構成 装置 LAN ケーブル モバイル WiFi 192.168.1.1 192.168.1.10 PC

    社内 現場 Nerves Hub Web VPN Server
  15. Why Nerves?? 組み込みLinux開発における課題をNervesが解決 • Nervesが構築するLinuxは ◦ イメージサイズが比較的小さい(およそ 50MB) →書き込み・転送が早くできる、開発効率 🆙

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

    電断対策はNervesに任すことができる • Elixirアプリケーションとnerves_system_*** で分かれているためハード移行が容易 Why Nerves?? Linux カーネル ユーザーランド Linux カーネル ユーザーランド Elixir アプリケーション Erlang VM Buildrootで構築する nerves_system_*** • Linuxアプリケーションを個々に立ち上げる ◦ 設定が散る ◦ 各アプリケーションのバージョン管理 ▪ ファームのバージョン管理 • 電断対策が必要 • ハード移行が大変
  17. アプリケーションを(概ね)変えずに ハードを移行できる 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
  18. ターゲット切り替え:デモ • ターゲットマシン 切替とファーム作成 • アップロード(省略)

  19. ファームウェア配信:デモ

  20. NervesHub スゴイ!便利!、だけど、、 OSSであるnerves_hub_webは 消滅しませんが、開発はアク ティブではなくなり、試用するこ とができたサイト nerves-hub.org は閉鎖されます。 Very社のPeridioというサービ スに引き継がれる予定

    (2022.3/31)です。 https://www.peridio.com/
  21. そのOSSにどのように contributionを返しているか?

  22. 「推し」という考え方 • ファンとして「推し」続けたい、「推し」続けるためには? ◦ 「推し」の活動が継続できるよう応援する、エンカレッジする ▪ お金で応援 ▪ 時間で応援 ▪

    上記2項の母数を増やす(ファンを増やす) • 推せる推したいOSS、私の場合はそれがNerves ◦ https://github.com/nerves-project
  23. 推しOSSをお金で応援する • NervesはOpen Collectiveを利用してSponser/Backerを募っています ◦ https://opencollective.com/nerves-project • 私は現在、Backer(2021 $5/month ->

    2022 $25/month)ですが Sponser($100/month)を目指しています。 そのためにもElixir/Nervesでお金を稼ぐを意識しています💪
  24. 推しOSSを時間で応援する ソースコードにコントリビューションする • バグの修正や機能の実装や提案実装をする • 2021年のコントリビューション(PR) ◦ いずれもPocket LANcherを作る上で見つけたバグの修正です。 ▪

    Nervesに関するライブラリに対して、 10件 ▪ Buildrootに対して、1件 ◦ 2022年はもっとソースコードへコントリビューションしたいです 💪
  25. 推し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 で開催します(内容未定)
  26. 起点となる人 コントリビューションの輪の一部となり恩返し pay forward -> pay forward -> pay forward

    が 最終的に pay back として戻る輪の一部になるを目指す Elixir Jose Nerves Frank NervesJP Takase Tombo Works Kinukawa ALGYAN Kogure
  27. まとめ 「OSSを全面利用して商用プロダクトを作る」をPocket LANcherを例に紹介しました。 イチ『推し』OSSである Nerves https://www.nerves-project.org/ を知り興味を持っていただけたら幸いです。また、 Pocket LANcher https://www.pocket-lancher.com/

    に興味を持っていただけたら、さらに嬉しいです!!
  28. 紹介 • 産業用堅牢ハードでElixir:e-RT3にNervesポーティング • なぜ僕はNervesに期待するのか • Nerves大好きな僕が2021年にしたこと