Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

アウトライン 1. Tombo Worksで開発・提供しているPocket LANcherについて 2. 製品開発に使っているOSSは?なぜ使おうと考えたのか? 2.1. 個人事業で商用製品を提供するために必要と考えたこと 2.2. Nerves(Buildroot, Elixir), NervesHub 3. そのOSSにどのようにcontributionを返しているか? 3.1. OSSを支えるcontributor 3.2. 何ができるか?何をしているか?

Slide 5

Slide 5 text

Pocket LANcherについて

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

アプリケーションを(概ね)変えずに ハードを移行できる 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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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