カテゴリー
お知らせ

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

カテゴリー
お知らせ

2026年4月公開:新API基盤Autonomous Permissionless Infrastructureとは

API(Application Programming Interface)という言葉は、すでに一般的なものになりました。システム同士をつなぐための仕組み、という意味で使われることが多い言葉です。
しかし実際に何かを作ろうとすると、その裏にある「制約」に気づく場面も少なくありません。

本記事では、そうした前提を少しだけ見直し、
「最初から自由に動かせる状態」を前提とした新しい設計について紹介します。

それが、hoscmが提案する
Autonomous Permissionless Infrastructure です。

一見すると少し極端な考え方に見えるかもしれませんが、
すでに一部は実際に動作しています。

図とあわせて、その構造と考え方を順に解説していきます。まずは、シンAPIの概念そのものを少しだけ整理してみます。


■ APIとは何か?接続から「環境」への変化

API(Application Programming Interface)は、一般的にシステム同士を接続するための仕組みです。

しかし実際の開発現場では、APIは単なる接続手段ではなく、
利用制限や管理ルールを含む「環境」そのものとして機能しています。


■ なぜAPIは「許可」が必要なのか

一般的なAPIやプラットフォームでは、利用前に次のような手続きが必要です。

  • APIキーの発行
  • 利用申請や審査
  • 利用制限(レート制限)
  • 規約への同意

これらは安全性・安定性を担保するために必要な仕組みです。

一方で、

「APIを使う前に許可が必要」

という構造を生み出しています。


■ 許可不要(Permissionless)な設計という考え方

ここで重要になるのが「Permissionless(許可不要)」という概念です。

ただしこれは、

  • 無制限に使える
  • 制約がない

という意味ではありません。

あらかじめ公開された範囲において、誰でも自由に利用できる設計

を指します。


■ 新しいAPIの定義:Autonomous Permissionless Infrastructure

hoscmでは、この考え方を次のように定義しています。

Autonomous Permissionless Infrastructure

これは、従来のAPIとは異なり、

「接続の仕組み」ではなく「自由に動かせる環境」

としてのAPIです。


■ 分散システムとしての構造(図解のポイント)

New API Concept: Autonomous Permissionless Infrastructure
New API Concept: Autonomous Permissionless Infrastructure

この仕組みは、中央集権的なシステムではなく、
分散型の構造を持っています。

主な構成要素は次の通りです。


freeBox Ecosystem(機能の配布・共有)

機能やモジュールを共有するエコシステムです。
IoT機器を制御するロジックなどがここで流通します。


hsBox / freeBox(実行基盤)

実際の処理を実行するコア部分です。

  • 軽量
  • 高速
  • 再現性のある動作

を特徴とし、安定した実行環境を提供します。


HSA(ユーザーインターフェース / エージェント)

ユーザーが操作するためのUIであり、
将来的には自律的に動作するエージェントとして機能します。


Claude Code AI(生成・補助)

AIはコード生成や構成の補助、操作の一部代替を担います。
ただし、実行主体ではありません。


● Storage / IoT Devices(ストレージ・IoT機器)

センサーやデバイスなど、最終的に制御対象となる実体です。


■ 中央集権ではないが「主体」は存在する

この構造は分散型システムですが、
「中心が存在しない」という意味ではありません。

単一の管理主体による集中制御を行わない

という設計です。


■ 主体は人間であり、AIではない

このシステムにおいて、最終的な主体は人間です。

  • 何を作るか
  • どの機能を使うか
  • どこまで接続するか

これらの判断は常に人間が行います。

AIはあくまで補助的な役割にとどまり、

  • 操作の支援
  • 構成の提案
  • 一部の自動化

を担当します。


■ 実行はhsBoxが担う(信頼性の担保)

AIとは別に、

実行の責任はhsBox / freeBoxが担います

これにより、

  • 高速処理
  • 安定動作
  • 再現性

が確保されます。


■ なぜこの分散構造が成立するのか

この仕組みが成立する理由はシンプルです。

公開する範囲をあらかじめ制御しているため

  • 無制限ではない
  • しかし、許可された範囲では自由

このバランスによって、

自由と制御が両立します


■ 従来の開発との違い(API利用の変化)

従来の開発フロー:

  1. APIの利用申請
  2. 設定・準備
  3. 実行

この構造では:

  1. まず動かす
  2. 試す
  3. 必要に応じて拡張する

という流れになります。


■ まとめ:APIは「使うもの」から「動かせる環境」へ

これまでAPIは「利用するもの」でした。

これからは、

自由に動かせる環境としてのAPI

へと変化していきます。


■ 今後の展開(コラボレーション)

現在、この仕組みは一部で動作しています。

2026年4月後半より、

製品コラボレーションの受付を開始予定です。


✔関連記事


Loading