Ryuz's tech blog

FPGAなどの技術ブログ

オープンハードウェアの壁

はじめに

ハードウェアの一言でくくってしまうと広すぎますが、個人でも作れる規模の電子基板とかのハードウェアガジェットを想定したお話です。

ここ数十年を経てオープンソースソフトウェア(OSS)というものはだいぶ世間の認知度が上がってきております。特に最近などでは AI の分野での新しい学習モデルであったり、学習データに学習済みパラメータなど、いろいろなものがオープンに公開されるようになってきております。おかげでモデルの改良版の研究や、異なるモデル同士の差分から新しいものを生み出したりなど関連研究がどんどん発展しているのが現状かと思います。

そんな中、FPGAプログラミングはソフトウェアだ、などといきがっている当サイトとしては、もうファブレスでつくれるものは全部ソフトウェア扱いでいいんじゃないか? などと乱暴なことも妄想してみたりもします。

実際、KiCAD で設計したデータを GitHub に上げていたら誰かがクローンを作成して試してみて issue が飛んできたなんてことは私自身も体験しています。

大学などでの研究開発成果を公開する場合も、ちょっと特殊なハードウェア装置を自作した場合、ソースコードだけではなくハードウェアの情報も公開されていないと論文を読んだ人が再現実験しようと思ってもできないわけです。

このソフトウェアでは簡単にできる再現実験であったり、成果の共有であったりを、もっとハードウェア的なところまで広げられればと常々思っていた次第です。

昨今、「3Dプリンタや製造サービスに図面を出せば製造してもらえる」、「基板設計データをアップロードしてクレジットカード決済すれば実装済み基板が送られてくる」といった時代になっているので、これらのものももっとOSS化して、オープンハードウェアにしたいなと思う次第です。

オープンでないハードウェアたち

昔の家電やパソコンは配線図や回路図がついており、町の電気屋さんが修理をしたり、拡張ボードを自分で作ったり自在にできていたそうです。

一方で、昨今はスマホやパソコンはもちろん、カメラやテレビなどの黒物家電も、エアコンや冷蔵庫のような白物家電もそんなものは公開されておらず、ちょっとした修理であれ、自力で分解解析するしかありません。

同様に研究に使うような、産業用カメラなどの機材も内部の回路図など公開されているわけもなく、「製品はブラックボックスとして説明書通りにのみ使ってください」というようになっています。

こういうものがそのまま使える研究なら良いのですが、特殊撮影や特殊センシングがしたい場合、そうもいかないので、公開されているスペックでやりたいことができない場合、自力で分解解析して改造するか、自分で新規に作るかしか選択肢がなくなってしまというなかなか残念なことになってしまいます。

見渡すと我々の周りはクローズなハードウェアだらけであり、買ってきたものをそのまま使い、壊れたらメーカー修理に出すか、買い換えるしかないという、エンジニア的には何とも面白みのないハードウェアが溢れているわけです。

オープンハードウェアをどう定義するか

これがオープンハードウェアだという明確な定義もないかとは思いますので、私なりに下記のように考えてみます。

  • 誰でも買える部品だけで作られていること
  • 設計図やソースコードが一般に公開されていること
  • 公知の情報だけで設計図やソースコードを読みながら理解や改善を行えること
  • 誰でも比較的容易に同じものを作成する方法がある事
  • 改造したものを再公開できるライセンスであること

などでしょうか、例えば電子基板で言えば

  • DigiKey, Mouser, マルツ, RS などで買える部品だけで設計
  • KiCAD の設計や、制御ソフトウェアは GitHub で公開
  • すべての部品はデータシートなり、解析情報なりが公知になっている
  • P版.com、JLCPCB、PCBGOGOなど、個人でも使えるサービスで製造できる事
  • MIT, Apache 2.0, GPL, CC などいろいろなソフトウェアライセンスを参考に適用すればよいように思います

なお、OSS 同様に、商用/非商用とか公開義務の有無とか、いろいろあってよいかとは思います。 ソースがオープンであることが重要で オープンソースハードウェアで OSH とでも呼べばいいのでしょうか(笑)

オープンハードウェアの壁

そこで冒頭のように、「じゃあ、そういうものを自分で作ればいいじゃないか」、となるわけですが、ここにも壁があります。

機密保持契約(NDA)の壁

自作する場合、自分で部品を買い集めて装置を構成していくわけですが、中には「機密保持契約(NDA)を結んだら仕様を教えてあげるよ」なんて部品があったりします。当サイトは画像処理研究が多いのですがイメージセンサーにこの手のものが多いです。

NDAを結ぼうにも大規模な需要が期待できるところじゃないと結んでもらえなかったりもするのですが、それ以前の問題として、NDAを結んでしまうとその情報を使って行った内部設計を容易に公開できなくなってしまいます。

有名大学などが企業との共同研究で凄いセンサーを使った研究論文なんか出したりすることもありますが、多くの場合、共同研究契約の中に機密保持条項が含まれていたりなんかして、どういう効果が得られるかの結果などは華々しく論文書かれていますが、どうやればそれと同じことをできるのかとか、設計図面とかソースコードとかは公開されていなかったりします。想像も含みますが、裏にそういう事情があるケースも結構あるかと思いますので、研究者視点で見ると、研究が広がりを持たないことになり大変もったいなく感じます。

そもそも売ってもらえない壁

バイスを研究開発して販売している側もビジネスですので、当然ながらある程度の需要が見込めるところ以外は相手にできないのです。 実際、零細だと数売れないのにサポート工数的なところで振り回されると死活問題となります。

お問い合わせ段階で、「月産何万個の予定ですか?」なんて確認があったりして、「研究用に5個だけ欲しいんですが」で撃沈したりする話も聞きます。お互い不幸です。

そもそも仮に自分は調達できたとして他の人が容易に手に入れられない部品を使っていると、オープンハードとしては意味をなさなくなってしまいます。

サポートの壁

部品を買うだけなら DigiKey などから買えたりしても、大企業が正規代理店のFAEさんのサポートを受けながら設計するのとは全く違い、公開情報だけからサンプルコードもない中で自力で試行錯誤しながら開発することになりがちです。 もちろん親切に個人事業主や趣味な人のQAに答えてくださるようなところもありますが、そうでないところもあります。

こういう時にとても役立つのがいわゆる製品の分解解析というものです。ネットを探してもいろんな製品を分解したり分析したりしているサイトは多数あるかと思います。

メーカーさんも販売しているものが競合他社に分解解析されることぐらいは織り込み済みなので、本当に隠しておきたいことは製品解析程度では解析できないようにはなっていますが、そうではなくて公開されてる情報だけでは理解が追いつかないのでサンプルが欲しい時って多いのです。 ソフトウェア開発でも「API仕様書だけあっても理解に困るので、サンプルコード欲しい!」ってときありますがまさにそんな感じで、実際の製品を分解解析したりするととても捗るのです。

余談ですがFPGAボードはこういう解析時の計測器としてもとても役立ちます。

お金の壁

これも結構重要でして、ソフトウェアと違って、ハードウェアを開発して公開する側も、それをダウンロードして活用するユーザー側も、どうしても作るのにお金がかかっちゃうのですよね。

これはいくつかOSSと異なる特性を生み出していて

  • 設計が不完全な状態で公開すると、ユーザー側の金銭的損害を発生させてしまう
  • 開発側はなんだかんだでバグが取れるまで試作の繰り返しで浪費してしまう
  • 基板などは各ユーザーが1枚作るより、ある程度まとまった数製造して配布したほうが単価が下がる

などです。

最初の方の話は、「とりあえず何かしら出来たら公開して、ユーザーからバグレポ貰いながら仕上げていく」と言うのがやりにくくなるという、わりと致命的な課題に繋がります。

初期開発費もある程度は寄付とかクラファンみたいなのとかに期待したいところはりますが、まだまだ開発者と受益者でうまく負担分担する仕組みはOSSほど発展していないようには思います。

あとは最後の奴とかは、薄い本を売られている方々が何冊刷るか悩むみたいな話を聞いたことがありますが、それに近い話になりそうです。

これらを緩和するにはとにかく安く作れるよう設計することも重要な気がしております。

オープンハードウェアの事例

世の中にはすでにいろいろなオープンハードウェアはあるのだと思いますが、個人的にはBrilliant Monocleというものを教えて頂いた時が一番衝撃でした。

思わず1つ買ってしまったのですが、これ、ハードウェアの機構の図面も回路図もソフトウェアも全部公開されているんですね。

丁度 GOWIN でカメラやってるときに知って、おんなじチップとカメラが載っていて面食らったのですが、回路図わかっていて JTAG繋いで書き換えできるならなんでもできちゃいそうですよね。

とても素敵なプロジェクトだと思いました。

仕様オープンなハードウェアを開発しつつ、ちゃんと費用回収して次のオープンハードウェアを開発するサイクルが回せれば本当に理想的だと思います。

おわりに

いろいろ書いてしまいましたが、何のことない今取り込んでいるグローバルシャッターMIPIカメラの宣伝記事だったりします(まだ完成してないし、完成するのかも不明なので宣伝もなにもないのですが)。

一応ここに書いたようなことをに挑戦したいなと、なんとか DigiKey や Mouser で買える部品だけで PCBGOGOさんとかに試作してもらいながら、FPGA (KV260) に直結できるグローバルシャッターの高速度撮影カメラ作ろうと頑張っております。

完成したら、BOOTHなどで販売して、開発費の一部でも補填できる程度に回収できると嬉しいなと思いつつ、どうなる事やらと言った感じです。

ただ、副業禁止の会社に勤めていたころはこの「一部でいいから回収して次の開発につぎ込む」すら禁じ手だったので、フリーランスになった今やらずしていつやるのだという感じで頑張っている次第です。

ソフトウェアだけでなく、ハードウェアでも多くの方と成果共有がやりやすいものが作れるといいなと思っております。

今後ともよろしくお願いいたします。