$30 off During Our Annual Pro Sale. View Details »

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

pojiro
January 22, 2022

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

pojiro

January 22, 2022
Tweet

More Decks by pojiro

Other Decks in Technology

Transcript

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

    View Slide

  2. 自己紹介
    ● 衣川 亮太 (きぬかわ りょうた)
    ● 愛知県岡崎市の個人事業エンジニア
    ● 屋号:Tombo Works
    ● twitter: @pojiro3
    ● I love Elixir & Nerves
    ○ 日本のNervesコミュニティであるNerves JPに所属しています

    View Slide

  3. 発表内容の焦点, スコープ
    皆さん、『OSS(オープンソースソフトウェア)』を、どのように活用していますか?
    今回の狙いは、「オープンソースを全面利用して商用プロダクトを作るには?」です。
    「OSSでものづくり」というと、ホビーや研究の文脈で語られることが多いようです。
    一方、「OSSでプロダクト」という切り口ですと、
    ものづくりではなく「ビジネスやライセンス」の話しになりがちです。
    さて皆さんは、「OSSと格闘するビジネス現場の生々しい話題」を聞いてみたいとは思いませんか?例えば、
    ● 製品づくりに使っているOSSは?なぜそのOSSを使おうと考えたのか?
    ● そのOSSを商用プロダクトの開発にどのように役立てているか?
    ● そのOSSにどのようにcontributionを返しているか?
    といった現場の実情です。

    View Slide

  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. 何ができるか?何をしているか?

    View Slide

  5. Pocket LANcherについて

    View Slide

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

    View Slide

  7. 出張の多い現場エンジニア 例)エンジンベンチSE
    http://www.orientec.co.jp/products/
    ● 納入前に
    ○ 製造工場へ
    ● 納入時に
    ○ 客先現場へ
    ● 納入後に
    ○ トラブルで客先現場へ
    ○ 保守で客先現場へ

    View Slide

  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のバージョンアップができる

    View Slide

  9. 製品づくりに使っているOSSは?
    なぜそのOSSを使おうと考えたのか?
    どのように役立てているか?

    View Slide

  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

    View Slide

  11. なぜそのOSSを使おうと考えたのか?
    個人事業で商用製品を提供するために必要と考えたこと
    ● リソースが少なくても成立させる
    ○ 技術の梃子(てこ)をできる限り利用する
    →開発/運用効率重視
    ■ (ほぼ)すべてをElixirで開発する
    ● 製品・サービスの提供を維持する
    ○ 自前で用意できないハードがディスコンになったら?
    →ハードの移行容易性
    ■ Nervesを使うことで可能となる

    View Slide

  12. 開発/運用効率重視
    ● 開発の(ほぼ)すべてをElixirで行う
    ● Elixirの特徴
    ○ 並行処理の記述が容易
    ○ 耐障害機能の提供( Supervisor, GenServer等)
    ○ Nervesを利用することで、組み込み Linuxのアプリケーション開発も Elixirで可能

    View Slide

  13. Pocket LANcherのシステム構成
    Box管理 Nerves Hub Web VPN Server
    出荷時に使用 FW管理・配信 VPN 接続
    サーバー
    クライアント

    View Slide

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

    View Slide

  15. Why Nerves??
    組み込みLinux開発における課題をNervesが解決
    ● Nervesが構築するLinuxは
    ○ イメージサイズが比較的小さい(およそ 50MB)
    →書き込み・転送が早くできる、開発効率 🆙
    ○ ルートファイルシステムが ROマウントされるので電断対策 ✅
    ● NervesがLinuxを隠蔽するから
    ○ アプリケーション開発に専念できる
    ○ アプリケーションがハードウェアに依存しないポータビリティを持てる
    ○ ファームウェア管理が非常に容易で、配信( OTA)が可能

    View Slide

  16. ● Elixir アプリケーションを開発するのみ
    ○ 設定はElixirプロジェクトに閉じる
    ○ バージョンはElixirのmix.lockで管理
    ■ linuxであるnerves_system_***も
    ● 電断対策はNervesに任すことができる
    ● Elixirアプリケーションとnerves_system_***
    で分かれているためハード移行が容易
    Why Nerves??
    Linux カーネル
    ユーザーランド
    Linux カーネル
    ユーザーランド
    Elixir アプリケーション
    Erlang VM
    Buildrootで構築する
    nerves_system_***
    ● Linuxアプリケーションを個々に立ち上げる
    ○ 設定が散る
    ○ 各アプリケーションのバージョン管理
    ■ ファームのバージョン管理
    ● 電断対策が必要
    ● ハード移行が大変

    View Slide

  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

    View Slide

  18. ターゲット切り替え:デモ
    ● ターゲットマシン
    切替とファーム作成
    ● アップロード(省略)

    View Slide

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

    View Slide

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

    View Slide

  21. そのOSSにどのように
    contributionを返しているか?

    View Slide

  22. 「推し」という考え方
    ● ファンとして「推し」続けたい、「推し」続けるためには?
    ○ 「推し」の活動が継続できるよう応援する、エンカレッジする
    ■ お金で応援
    ■ 時間で応援
    ■ 上記2項の母数を増やす(ファンを増やす)
    ● 推せる推したいOSS、私の場合はそれがNerves
    ○ https://github.com/nerves-project

    View Slide

  23. 推しOSSをお金で応援する
    ● NervesはOpen Collectiveを利用してSponser/Backerを募っています
    ○ https://opencollective.com/nerves-project
    ● 私は現在、Backer(2021 $5/month -> 2022 $25/month)ですが
    Sponser($100/month)を目指しています。
    そのためにもElixir/Nervesでお金を稼ぐを意識しています💪

    View Slide

  24. 推しOSSを時間で応援する
    ソースコードにコントリビューションする
    ● バグの修正や機能の実装や提案実装をする
    ● 2021年のコントリビューション(PR)
    ○ いずれもPocket LANcherを作る上で見つけたバグの修正です。
    ■ Nervesに関するライブラリに対して、 10件
    ■ Buildrootに対して、1件
    ○ 2022年はもっとソースコードへコントリビューションしたいです 💪

    View Slide

  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 で開催します(内容未定)

    View Slide

  26. 起点となる人
    コントリビューションの輪の一部となり恩返し
    pay forward -> pay forward -> pay forward が
    最終的に pay back として戻る輪の一部になるを目指す
    Elixir
    Jose
    Nerves
    Frank
    NervesJP
    Takase
    Tombo Works
    Kinukawa
    ALGYAN
    Kogure

    View Slide

  27. まとめ
    「OSSを全面利用して商用プロダクトを作る」をPocket LANcherを例に紹介しました。
    イチ『推し』OSSである
    Nerves https://www.nerves-project.org/
    を知り興味を持っていただけたら幸いです。また、
    Pocket LANcher https://www.pocket-lancher.com/
    に興味を持っていただけたら、さらに嬉しいです!!

    View Slide

  28. 紹介
    ● 産業用堅牢ハードでElixir:e-RT3にNervesポーティング
    ● なぜ僕はNervesに期待するのか
    ● Nerves大好きな僕が2021年にしたこと

    View Slide