「CADデータを公開すればOSS」ではない
HalfGrip(スマホ用カメラグリップ)を自作して、自分用には動くものができた。次のステップとしてCADデータを公開してオープンソースにしようとして、これは思ったより大変だと気づいた。 ソフトウェアのOSSはリポジトリをpublicにして、ライセンスを付けて、READMEにビルド手順を書けばとりあえず成立する。ハードウェアはそう簡単ではない。
自分用のグリップは再現できない
最初に作ったHalfGripのグリップは、普段使っているNothing Phone 3専用。ケース込みの寸法でぴったり合わせた筐体を3Dプリントして、PCBは使わず、マイコンやスイッチを接着剤で直接固定している。配線もはんだ付けで最短距離を取った。 これで動く。自分にとっては完成品。 でもこのCADデータを公開しても、他の人は使えない。まず機種が違う。ケースが違う。部品も選ぶ。しかも内部の部品固定が接着剤前提なので、寸法が0.5mmずれると収まらない。組み立て手順は自分の頭にしかない。 「自分が使えるもの」と「他人がデータから再現できるもの」は全く別のものだ、作ったデータをそのまま公開しても誰も使えない。
何を設計し直す必要があるか
マウント部分の設計だ、今は専用なので汎用的な固定方法に改める必要がある。 構想としては筐体をグリップ本体とマウントアダプターに分割し、マウントアダプターを可変できる方式に変更して汎用性を持たせるつもり。 また、内部実装も接着剤前提の設計からスナップフィットとネジ止めの併用に変えて、組み立て・分解ができる構造にする必要ある。 使用したパーツもリスト化して入手先も整理する必要がある。 すべてちゃんとする必要はないかもしれないが、最低限で考えても結構やることがある。
ドキュメントの問題
ソフトウェアのREADMEに相当するものを書くのも、ハードウェアは手間がかかる。
必要な部品のリスト(BOM)、調達先、3Dプリントの推奨設定(素材、積層ピッチ、インフィル率)、組み立て手順、配線図。これらを全部書かないと「再現可能」にならない。ソフトウェアならnpm installで依存関係が解決するが、ハードウェアの依存関係は自分で調達して手で組み立てるしかない。
特に配線図は、回路がシンプルでもKiCadあたりで描き起こす必要がある。手描きのメモでは他人に伝わらない。HalfGripの回路はRP2040 Zeroにスイッチとエンコーダを直結しているだけで、回路設計と呼べるほどのものではないが、それでも図面がないと「どのGPIOに何が繋がっているか」がわからない。
ソフトウェアのOSSとの違い
ここまでやってみて感じた、ソフトウェアとの違いを整理しておく。 フォークの意味が違う。 ソフトウェアのフォークはコピー&修正だが、ハードウェアのフォークは「パラメータを変えて別機種用のマウントを生成する」。パラメータ化されていない設計はフォーク不可能。 CIがない。 ソフトウェアならテストを回せばデグレに気づける。ハードウェアは出力して組み立てて確認するしかない。設計変更のたびに実機検証が必要。 バージョン管理が不完全。 OnShapeにはバージョン機能があるが、Gitほど柔軟ではない。ブランチに相当する概念はあるが、マージは手作業。組み立て手順とかになると記録しておくこと自体が難しい。
それでもやる理由
面倒なのは事実だが、 ソフトウェアのOSSは山ほどある。ハードウェアのOSSで、3Dプリントで作れて、ファームウェアもアプリも込みで公開されているプロジェクトはまだ少ないと思う。 しかも自分の作ったハードウェアで半押しAFロックが使えたときの嬉しさは想像以上だった。 それを少しでも他の人にも体験してほしい、ソフトウェアとは違う感覚がある。