カテゴリー
お知らせ リリース

「hoscm コラボレーションプログラム」公開のお知らせ —— freeBox サードパーティ開発をオープンに

本日、hoscm はサードパーティとの協業形態を体系化した制度文書「hoscm コラボレーションプログラム Rev.1.0」を公開しました。初版(Rev.1.0)の対象は freeBox です。あわせて、freeBox Loader v1.0.2 として、サードパーティ Plugin 開発者向けドキュメント5本の大規模改訂もリリース済みです。

本記事では、コラボレーションプログラムの主要なポイントをご紹介します。詳細は記事末尾よりプログラム仕様書(PDF)をご参照ください。


公開の背景

freeBox はオープン仕様を基本とする freeBox Loader を中核とし、サードパーティによる Plugin 開発・連携機能の実装を歓迎してきました。一方で、これまでは協業形態や参加条件を制度として明文化しておらず、参加意思のある開発者・事業者に対して、参加方法や役割分担、知的財産の取扱いなどを十分に提示できていませんでした。

近年、海外を中心に hoscm への提携・売り込みの問い合わせが増加していること、また freeBox エコシステムの拡大を健全に進めていく必要があることから、参加者にとって透明かつ予見可能な参加条件を提供する制度として、本プログラムを整備しました。

本プログラムは初版において freeBox を対象としますが、将来的には hoscm が扱う他の製品およびサービスへも順次拡張する予定です。


プログラムの概要

5つのコラボレーションパターン

freeBox に関するコラボレーションは、hoscm の関与度に応じて次の5つのパターンに分類されます。

区分内容hoscm の関与費用
提供元単独実装公開仕様に基づき、参加者が単独で実装なし無料
技術情報提供個別の技術情報を提供し、参加者が実装情報提供有償サポート
技術支援設計・実装支援を提供し、参加者が実装設計・実装支援有償技術支援
共同開発双方向の機能強化を伴う開発双方向個別見積
受託開発個別仕様の hoscm による実装hoscm が実装業務委託

参加者は自社の体制や目的に応じて、いずれのパターンも選択できます。「受託開発」は厳密にはコラボレーションではなく業務委託に該当しますが、参加者からの問い合わせ範囲の明確化を目的として明示しています。

collaboration_matrix_diagram
collaboration_matrix_diagram

プラグイン公開ステータスは独立した軸

実装結果として公開されるプラグインの公開ステータス(public/restricted/private)は、いずれのコラボパターンであっても適用される独立した軸として扱います。これは freeBox Loader が現に認識する状態と一致します。

  • public:動作確認済みプラグイン(公開済み)
  • restricted:限定公開
  • private:非公開・ローカル

将来的には、hoscm 公式提供を示す official ステータスや、提供を終了した archived ステータスの追加も検討しています。


主要な方針

オープン仕様と GPLv3

freeBox プロジェクトで提供されるコードは、原則として GNU General Public License v3.0(GPLv3)の下で提供されます。参加者が公開するプラグインについても、原則として GPLv3 の採用を推奨します。

NDA は原則不要

freeBox はオープン仕様を基本としているため、原則として NDA(秘密保持契約)の締結は不要です。ただし、hsBox の内部情報や非公開仕様が含まれる場合、未公開の脆弱性情報を共有する場合などは、必要に応じて NDA を締結します。

参加費は無料

本プログラムへの参加自体は無料です。Web フォームによる申請、公開仕様の利用、GitHub リポジトリの参照、公式ドキュメントの利用、プラグインの公開申請までを無料の範囲とします。技術相談・実装支援・受託開発などの個別支援は、内容に応じた個別見積で対応します。

利用者ファースト・運用コスト最小化

審査プロセスは「利用者ファースト」と「運用コストの最小化」を両立する方針で設計しています。プラグインの公開ステータスに応じて必要な審査範囲を変え、private 利用は審査不要、restricted は書類審査+セルフテストログ提出、public はサンドボックス評価+実機検証+複数ユーザーによる評価結果に基づく総合判断とします。

ブランド・ロゴの利用についても、本ガイドラインに従う場合に限り事前申請なく使用できる「事後是正型」とすることで、参加者および hoscm 双方の運用負荷を軽減します。


あわせて:freeBox Loader v1.0.2 のドキュメント改訂

本プログラムの公開と並行して、サードパーティ Plugin 開発者の足場を整えるべく、freeBox Loader v1.0.2 でドキュメント5本(ビルドツールガイド/モジュール開発ガイド/Plugin 開発ガイド/保守ガイド/run.sh ガイド)の大規模改訂をリリース済みです。

主な改訂ポイントは以下の通りです。

  • 予約コンテキスト(/loader/api/status/manager など)の明文化
  • run.sh の役割・必須性をモジュール毎に整理
  • ビルドコマンド・API 仕様の精度向上
  • ドキュメント間の参照リンク整備
  • 開発内部用語の除去(公開ドキュメント化)

v1.0.2 はドキュメント更新のみのリリースで、実装に変更はありません。v1.0.1 と完全に後方互換のため、既存ユーザーは入れ替え不要です。これから freeBox Plugin の開発を検討される方には、最新ドキュメントが格段に読みやすくなっています。


参加方法と関連リンク

本プログラムへの参加申請は、既設の Web フォームよりお受けします。

技術的な詳細をご確認いただくには、以下をご参照ください。

ご質問・ご相談は hoscm 公式 Web サイトのお問い合わせフォームよりお寄せください。


今後について

本プログラムは初版(Rev.1.0)として freeBox を対象に開始しますが、市場動向および参加者からの要望に基づき、対象範囲・優先順位を順次見直していきます。本プログラムを通じて、freeBox エコシステムを参加者の皆様とともに育てていけることを楽しみにしています。

引き続き、freeBox および hoscm の各プロダクトをよろしくお願いいたします。


コラボプログラムPDFダウンロード

hoscm コラボレーションプログラム.pdf


freeBox / hsBox に関するお問い合わせ・ご意見は お問い合わせページ からお寄せください。

関連記事:

freeBox Loader 開発の舞台裏(4/22)
freeBox Loader で、スマートホーム連携はここが変わる(4/15)

Loading

カテゴリー
お知らせ システム リリース

スマートホームを、自由に。freeBox 1.0.0 リリース——ローカルファースト×プラグイン拡張のオープン基盤、始動。

スマートホームは進化している。でも、「自分が作ったデバイスを繋ぎたい」「このカメラに独自の処理を入れたい」「既存のシステムと連携するプラグインを作りたい」——そう思ったとき、既存のプラットフォームはどれも壁になる。

それらの仕様は非公開。APIは制限付き。クラウド経由でないと動かない。

freeBoxは、その壁をなくすために作りました。

プラグインを作れば、それがそのままスマートホームの新しい機能になる。あなたのアイデアが、基盤そのものを育てていく——そういう仕組みです。


freeBoxとは何か

freeBoxは、それ自体がオープンな、スマートホーム向けプラグイン基盤です。

特定メーカーのエコシステムに依存せず、クラウドに縛られず、仕様を公開した状態で誰でも実装・参加・拡張できる。各機能はローカル環境での動作を基本としており、用途に応じてクラウド連携も活用できる設計です。プラグインを追加するだけで機能を自由にデザインできます。

今回、そのコアとなる仕組みをfreeBox 1.0.0としてオープンソース公開しました。

👉 GitHub: https://github.com/hoscm/freebox


3つの設計コンセプト

① ローカルファースト——各機能はローカルで動く

freeBoxの各機能はローカル環境での動作を基本に設計されています。ローカルに閉じた運用も可能であり、必要に応じてクラウド連携も選択できます。クラウドへの依存を強制しない設計が、安定性とプライバシー保護の両方を支えています。

② オープン——仕様を公開、誰でも参加できる

仕様を公開し、実装を誰でも確認・改変・貢献できます。「使う側」だけでなく、「作る側」にも完全に開かれた基盤です。atomcam2対応モジュールをサンプルとして収録しており、すぐに動く実装例として参照できます。

③ プラグインエコシステム——1つの実装が、全体を豊かにする

freeBoxのLoaderは、プラグイン方式で機能を拡張する仕組みです。あなたが作ったプラグイン1つが、世界中のfreeBoxユーザーが使える機能になる。対応デバイスが増えるほど、エコシステム全体が育っていく——そういう構造を意図して設計しています。


AI×ハイスキルアーキテクトによる協働開発

freeBox 1.0.0の全実装は、Claude AI(Sonnet 4.6およびOpus 4.7)が担っています。設計・コーディング・ドキュメント整備にいたるまで、AIが実装の主体です。

そこに、10年以上にわたり大規模システム開発にテックリードマネージャーとして携わってきたハイスキルなシステムアーキテクトが監修・レビューを行いました。

AIの実装力と、人間の設計眼。その協働が、freeBox 1.0.0です。


freeBoxで実現できること

  • 監視カメラの映像をローカルで処理し、クラウドに依存せず通知・録画(atomcam2モジュールで実装済み)
  • 自作IoTデバイスをプラグインとして接続し、既存システムと柔軟に連携
  • 複数デバイスをまたいだ自動化ルールを、オープンな基盤の上で自由に設計
  • プラグインを公開・共有することで、コミュニティの共有資産として積み上げる

これはまだ1.0.0です。でも、基盤はできました。


コラボ募集について

現在、情報発信コラボを募集しています。freeBox・スマートホーム・OSS開発に関心のある方、一緒に発信していきませんか。

来週(5/13)は、プラグイン開発者・サードパーティ向けコラボ募集の詳細を公開予定です。「このデバイスに対応させたい」「プラグインを作ってビジネスに繋げたい」という方も、ぜひ次回の投稿をお待ちください。


さいごに

これまで、スマートホーム市場は各社の囲い込みによって分断されてきました。ローカル環境で動く、真にオープンな基盤は存在しなかった。

freeBoxは、それを初めて実現しようとしています。

コードを書ける開発者も、プラグインでビジネスを広げたいサードパーティも、発信で貢献したい方も——関わり方は一つじゃない。この基盤を、一緒に育てていきませんか。

👉 https://github.com/hoscm/freebox


関連記事:

AIはどこへ向かうのか(4/29)
freeBox Loader 開発の舞台裏(4/22)
freeBox Loader 開発進行状況(4/8)

Loading

カテゴリー
お知らせ

freeBox Loader 開発の舞台裏:ここまでの経緯と、AIと人が一緒に開発して見えてきたもの

これまで、freeBox Loader については 4月8日の進捗報告4月15日の活用イメージ紹介と、計画的な発信を続けてきました。

当初は、このタイミング(4月22日)で「サードパーティ向けコラボ・プラグイン参加募集」のご案内を予定していました。しかし、freeBox Loader v1 のリリースがもう少し時間を要する状況となり、その準備が整ってからご案内することとしました。

その代わりに今回は、「なぜ時間がかかっているのか」という舞台裏の話を、正直にお伝えしたいと思います。

ただ「遅れました」と報告するのではなく、その過程で見えてきた学びを共有することが、このOSSプロジェクトの価値につながると考えているからです。

特に今回は、AIと人が一緒に開発を進める中で見えてきた、これまでにない種類の気づきがありました。これは同じようにAIを活用して何かを作ろうとしている方々にとっても、参考になる内容ではないかと思います。


1. まず、率直な現状のご報告

リリース目標は「目標」であり、最優先は品質

freeBox Loader v1 のリリース見通しは、5月上旬〜中旬を射程に置いています。当初の想定からは後ろ倒しとなりましたが、ここで一つお伝えしておきたいことがあります。

このOSSプロジェクトでは、品質を最も大切にしています

リリース時期は大切な目標ではありますが、品質を犠牲にして急ぐものではありません。むしろ、「なぜ想定通りに進まなかったのか」を丁寧に振り返り、次の開発に活かせるのであれば、時間をかけることは健全なプロセスだと考えています。

今回の記事は、その振り返りの一部を皆さんに共有するものです。


2. 何が起きていたのか — 「暗黙の境界線」という落とし穴

テストの最終段階で見つかった作業漏れ

freeBox Loader v1 は、大小合わせて複数段階のテストを積み上げる計画で進めてきました。内部状態の確認から、APIの動作確認、UIの操作確認、そして本番環境での統合テストへと、徐々に粒度を上げていく構成です。

このうち最終段階である本番統合テストに入ったところで、ある事実に気づきました。

「この次に控えているシステムテストに進むためには、サンプルモジュール(atomcam2)も準備できていないといけない。でも、atomcam2 のパッケージはまだ完成していない」

具体的には、サンプルモジュールを組み立てるのに必要なファイルの一部が未作成で、公開用のパッケージがビルドできない状態だったのです。

なぜこれが見過ごされていたのか

振り返ると、原因ははっきりしています。

テスト計画と成果物計画の間に、「暗黙の境界線」があったのです。

  • 本体のテストは最初から「freeBox Loader 本体のテスト」として設計されていました
  • システムテストは「Loader + サンプルモジュール」で実施する前提でした
  • ところが、その間にあるべき 「サンプルモジュール側のテスト」というフェーズが、スケジュールに明記されていなかったのです
AIも人と同じ扱いで考える、という発想を象徴するイメージ図
AIも人と同じ扱いで考える、という発想を象徴するイメージ図

「Loader 本体の実装は進んでいる → テストも進んでいる → だからシステムテストも大丈夫」という感覚のまま、サンプル側の準備が手薄になっていました。

含める範囲だけを書いて、除外される範囲を書いていなかった — これが落とし穴でした。「何を作るか」のリストは丁寧に作っていたのに、「このリストに含まれていないものは、誰がいつ作るのか」が決まっていなかったわけです。

これは開発プロジェクトでは 「あるある」の失敗パターンです。でも、あるあるだからこそ、次に活かせる学びがたくさんあります。

気づけたのは、なぜか

救いだったのは、システムテストを逆算して準備を始めたタイミングで気づけたことです。

本番統合テストに入り、「次はシステムテスト。ではサンプルモジュールのパッケージはどこだ?」と問いを立てた瞬間に、空白が見えました。

もしこの問いを立てる機会がなければ、もっと後の段階で「動くはずなのに動かない」という形で発覚していたかもしれません。早めに気づけたこと自体は、プロセスが機能した結果でもあります。


3. AIと人が一緒に開発して見えてきたもの

ここからは、この開発を通じて気づいた、AIと人が一緒に開発を進める際の独特の視点をお話しします。

freeBox Loader の開発では、AIを開発のパートナーとして活用しています。仕様書の照合、コードの修正、テストの実施、そして引き継ぎメモの作成まで、人間とAIが分担しながら進めています。

そこで浮かび上がってきたのが、「AIも人と同じ扱いで考える」という発想の大切さです。

AIにも「勤務時間」がある

人に勤務時間があるように、AIにも使用量の上限があります。わかりやすく言えば、AIにも「残業制限」があるのです。

この制限に達すると、AIの作業セッションは終了します。人間であれば「続きは明日」と言えますが、AIは「明日のAI」は今日のAIの記憶を持っていません。毎回、ゼロから始まります。

このため、セッションの終わりに「次の担当者(次のAI、あるいは次の人)が困らないように引き継ぎメモを残す」という運用を取り入れてきました。人間同士の引き継ぎと同じ考え方です。

しかし、そこに新しい落とし穴があった

運用ルールは「使用量が一定水準に達した時点で引き継ぎメモを書き始める」というものでした。一見、理にかなっています。

ところが、今回の開発の振り返りの中で、特定のセッションの引き継ぎメモが残っていない事象が見つかりました。

原因として考えられるのは、引き継ぎメモを書く前に、何らかの理由でセッションが終了してしまったケースです。そうなると、引き継ぎメモを書く間もなくセッションが終わり、そのセッションで何をしたかの記録が、次のセッションに伝わらないことになります。

幸い、実際のコードは仕様通りに実装されていることを別途確認できたため、実害はありませんでした。けれども、「作業プロセスの記録」と「作業結果の記録」を同じファイルにまとめていた運用が、記録消失のリスクを構造的に高めていたことが明らかになりました。

そこから得た学び

人間同士の開発で、長年当たり前だった「セッション終わり(引継ぎ時)にまとめて議事録(引継ぎ資料)を書く」という習慣は、AIと一緒に働く場合には、むしろリスクになることがある。

これは、とても興味深い気づきでした。

AIとの協働では、「記録を1箇所にまとめるよりも、細かく分けて、そのつど残しておく」方が、セッション制限という構造に合っているのです。

この発想の転換は、freeBox Loader に限らず、AIを開発パートナーとして活用するあらゆるプロジェクトに応用できる考え方だと思います。
※プロダクトマネージャーコメント:振り返るとこの運用は人間にも言えます。 私は、作業をDB上で行い常に記録する手順を25年まえから運用しています。これにより引継ぎの作業が殆どいりません。


4. 次に活かす改善

以上の振り返りから、以下の改善を進めています。

① 成果物の定義を、プロセスまで含めて明確化する

「作ったファイルがあればOK」ではなく、「そのファイルを生成する仕組みまで含めてゴール」と定義します。

たとえばサンプルモジュールの場合、ソースコードだけでなく、それをパッケージ化して公開する仕組みまでが揃って初めて「完成」と見なす、というふうに基準を引き上げます。

② タスクを「機能名」ではなく「ファイル名」で管理する

「機能Aは実装完了」ではなく、「ファイルXは生成完了」で追跡します。

機能の名前だけを見ていると「進んでいるように見える」けれど、実際には必要なファイルが揃っていない、という状態を構造的に防ぎます。

③ フェーズ間の「除外範囲」も明記する

「このテストに含まれるもの」だけでなく、「このテストに含まれないもの」も明記する運用に変えます。

「本体テストには含めない、サンプルモジュールは別フェーズで対応する」のような、除外を最初に書く。これだけで、暗黙の境界線が可視化されます。

④ 引き継ぎの「ゼロ知識検証」

引き継ぎメモを作った後に、「これを初めて見る人が、これだけで作業を再開できるか」を検証するステップを入れます。

「書いた本人にはわかる」資料と、「誰にでもわかる」資料は別物です。後者を目指します。

⑤ 記録の連続性を確保する(AIと人が一緒に働く開発に特化した改善)

  • 引き継ぎメモは早めのタイミングで中間版を書く(ギリギリまで待たない)
  • テスト結果の記録は、引き継ぎメモとは別のファイルで管理する
  • 項目が1つ終わるたびに、即時に記録する(まとめて書かない)

この改善は、AIの動作特性(セッションが突然終わることがある)を前提にした運用設計です。


5. これからのこと

リリース見通し

freeBox Loader v1 のリリースは、5月上旬〜中旬を射程に置いています。サンプルモジュールの準備とシステムテストを経て、品質が確認できたタイミングで公開します。

hsBox との関係

freeBox Loader は、hsBox の次期バージョン(1.4 以降)での運用を想定して開発しています。hsBox 1.4 では、freeBox Loader を標準同梱する方向で検討中です(最終的な構成は、freeBox Loader のリリース時点で改めてご案内します)。

サードパーティ向けコラボ・プラグイン参加募集

当初このタイミングでご案内する予定だった「コラボ・プラグイン参加募集」は、freeBox Loader v1 の正式リリース後に、改めて詳しくご案内します。

モジュールの作り方、公開の手順、コラボの仕組みなど、参加していただくための情報を整えた上でお届けする予定です。


おわりに

今回は、freeBox Loader 開発の現状について、「遅れました」で終わらせずに、その背景と学びまで共有するスタイルでご報告しました。

開発プロジェクトにおいて、計画通りに進まない場面は必ず訪れます。大切なのは、なぜそうなったのかを振り返り、次に活かすことです。

そしてこれからの時代、AIと人が一緒に開発を進める場面がますます増えていきます。AIも人と同じ扱いで — 引き継ぎの大切さ、記録の取り方、勤務時間の配慮 — こうした視点が、新しい開発プロセスの基盤になっていくのではないかと感じています。

freeBox Loader の次のご報告は、リリース準備が整ったタイミング、または コラボ・プラグイン参加募集のご案内になる予定です。引き続き、ご期待ください。


freeBox Loader / hsBox に関するお問い合わせ・ご意見は お問い合わせページ からお寄せください。

過去の関連記事:freeBox Loader で、スマートホーム連携はここが変わる(4/15)freeBox Loader 開発進行状況|現在どこまで来ているか(4/8)

Loading

カテゴリー
お知らせ システム

freeBox Loader 開発進行状況|現在どこまで来ているか


これはリリース告知ではない。現時点でどこまで作れているか、何が動いて何がまだ入っていないか、それを共有するための記事だ。

freeBoxの開発は現在、「Loader本体の設計完了+サンプルプラグイン実装着手」という段階にある。実機環境(hsBox)はすでに起動済みで、動作確認も可能な状態だ。この記事では、その現在地をそのまま書く。

freeBox Loader、いまどこまで来ているか

Loaderとは、freeBox上でプラグインを管理するための実行基盤だ。GitHubに置いたindex.jsonを参照し、利用可能なモジュールを一覧表示・deployできるWebUIとして機能する。Apache2のリバースプロキシ経由でPythonサーバー(ポート9009)が動く構成で、設計と仕様はほぼ固まっている。

サンプルプラグインとして、ATOMCAM2(監視カメラ)を使ったキャプチャ機能の実装も進めている。「こういうプラグインが作れる」という具体例を示す位置づけだ。

完成版の話ではない。いま見えているのはLoaderのコアと、動作確認用のサンプルが1本あるという状態だ。

freeBox Loader image
freeBox Loader image

いま動いている範囲(できること・できないこと)

現時点で動作しているもの

設計・仕様レベルでは、以下が確定している。

Loaderコア(box_webserver.py)の動作仕様、Apache2プロキシ設定、systemdサービス定義、REST APIの全エンドポイント仕様(v1確定版)。UIのモックは複数バージョンが存在し、画面遷移・ダイアログの挙動は確認できる状態だ。

サンプルプラグインのATOMCAM2は、RTSPでフレームキャプチャしNASへ保存する処理のベース実装が存在する。内蔵スケジューラで10分間隔の定期実行を想定している。

まだ入っていない機能

現時点で意図的に実装しないと決めているものがある。

プラグインのEnable/Disable(ホットロード非対応のためv2以降)、モジュール詳細画面、Status画面、Settings画面。これらはUIモックには存在するが、v1の実装対象ではない。「モックに画面があるから動く」ではないので注意してほしい。モック上でも「この機能はv2以降で実装予定です」と明示している。

freeBoxとは何か(全体像)

目指しているもの

freeBoxは「USB起動のLive環境に、誰でも機能を追加できるプラットフォーム」を目指して作っている。

ベースとなるhsBox(Ubuntu Live+パーシステンス機能)の上に、Loaderと各種プラグインが乗る構造だ。専門知識がなくても、GitHubで公開されているモジュールを選んでdeployするだけで機能が増える──そういう世界を作りたいというのが根っこにある。スマートホーム、エッジコンピューティング、スモールオフィスなど、用途は使う人次第で広げられる設計にしている。

Loaderの役割

Loaderは、その拡張のための「受け口」だ。GitHubのindex.jsonを参照してモジュール一覧を取得し、インストール・アンインストール・状態管理を行う。サーバー側はPythonで実装し、Apache2のリバースプロキシ経由でUIに公開する。モジュールにはpublic / restricted / privateの区分があり、管理の粒度も設計済みだ。

以下に構成図を示す。

freeBox_Loader_ARCH
freeBox Loader ARCHITECTURE

プラグイン構造

Pluginクラスを実装した.pyファイルをplugins/フォルダに置くだけで、Loaderが自動認識して動作に組み込む。スケジューラへの登録もregister_schedule()メソッドを実装するだけでいい。シンプルに保つことを意識した設計で、サードパーティが独自プラグインを作れる余地を最初から確保している。

サンプルプラグインで見えること

現在実装中のATOMCAM2プラグインは、「こういうプラグインが書ける」という参照実装の意味合いが強い。

処理の中身はシンプルだ。ARPテーブルからカメラのIPを動的に解決し、RTSPでffmpegを使って1フレームをキャプチャ、NASの指定パスに保存する。10分間隔での定期実行は、Loader内蔵のスケジューラに登録して動かす。NASが未接続の状態でもLoaderは止まらず、保存処理だけスキップする縮退動作も設計済みだ。

「カメラ映像をどう扱うか」という具体的なユースケースが一本あることで、プラグイン構造の実用イメージが伝わりやすくなると考えている。ATOMCAMを持っていない人でも、「こういう形で拡張できるんだ」という参考になるはずだ。

以下に処理フロー図を示す。

freeBox request flow
freeBox request flow

Claude Codeでどう開発しているか

分割実装の進め方

この開発はClaude Codeを中心に進めている。当初は構想をもとに一気に作り上げる方向で進めていたが、進捗に伴い想定以上に複雑化しこのままではバグ収束しそうにないので、慣れ親しんだV型開発に立ち戻った。工程見直しまでに作成した仕様書と実装をもとに「Step分割」で進行管理しており、現在はStep1(認識合わせ:基本仕様書)→Step2(設計・機能仕様書など策定)が完了し、Step3(実装・コーディング)に入るフェーズだ。

各ステップで成果物ドキュメントを作り、次のステップの入力として渡す形を取っている。設計書・API仕様・UIモック仕様をそれぞれ独立したドキュメントとして整理し、「この仕様書を元に実装してください」という形でClaude Codeに渡す想定だ。

やってみて見えたこと

設計フェーズでは、Claude Codeとのやり取りの中でAPI仕様の矛盾や未定義エンドポイントが複数浮き上がってきた。「モックに画面があるのにAPIが定義されていない」という不整合を、実装前に発見できたのは助かった。

一方で、複数ドキュメントをまたぐ整合の判断は人間側がやる必要がある。「どの設計書が正しいか」の判断はAIには委ねられない。Claude Codeは実装の速度を上げるツールだが、設計の意思決定はあくまで自分たちで行っている。本開発は数KL規模の開発に過ぎないが、過去の数ML規模の開発での苦労を思い出すこととなった。AI活用での開発では、効率的な開発ルールの順守が人間での開発以上に重要なのだろう。

触れるもの(UIモックあり)

現時点でUIの動作確認ができるHTMLモックが複数存在する。Loaderのメイン画面、各種ダイアログ(public/restricted/privateそれぞれのインストール確認)、ステータス表示など、画面遷移のパターンは一通り作ってある。モックなのでAPIとはつながっていないが、「どういう操作感になるか」は触って確認できる。

 UIモックを触ってみる(Module Manager v2.8)

実装前にUIを固めておくことで、「作ってみたら使いにくかった」を減らす狙いがある。

現在詰まっているポイント

正直に書いておく。

実機環境はすでに立ち上がっており、hsBox上での動作確認も可能な状態にある。機材の問題ではない。

現在のボトルネックは、実装の整合性調整にある。設計・仕様フェーズで複数のドキュメントを積み上げてきた分、「どこを正とするか」の判断が実装フェーズに持ち越されている部分がある。APIの定義、モックの挙動、設計書の記述──それぞれが微妙にずれているところを、一つひとつ潰しながら進めている段階だ。

一気に書き上げるより、精度を確認しながら進めることを選んでいる。スピードより整合性を優先している、というのが現在の進め方だ。Step3(コーディング)の着手は済んでいる。「設計は終わった、書きながら検証する」という段階にある。

これからの進め方(ロードマップ)

まずLoaderコア(box_webserver.py)の実装を完成させ、ATOMCAM2プラグインとセットでベース部分を公開する。その後、サードパーティ向けのプラグイン開発ドキュメントを整備し、外部の開発者が独自プラグインを作れる環境を用意する予定だ。

v2以降では、現在スコープ外としているEnable/Disable機能やモジュール詳細画面なども順次追加していく。完成してから公開するのではなく、現在の状態を共有しながら作っていくスタイルで進めている。

詳細はGitHubで確認できる(近日整備予定):github.com/hoscm/freebox

一緒に作れる人を探しています

プラグインを作ってみたい開発者、または連携の可能性を探りたい事業者と話したいと思っている。

カメラ・センサー・スマートホームデバイスのメーカーや開発者、あるいはfreeBoxの拡張先として面白そうなユースケースを持っている人。現時点でできることは限られているが、プラグイン構造の仕様は固まっているので、「こういうプラグインは作れそうか」という技術的な会話はできる状態だ。

まずはモックを触って意見をもらえるだけでもいい。完成を待たずに関わってもらえる形を探している。

 UIモックを触ってみる / GitHub(hoscm/freebox)

Loading