アプリの構成
すべてのIronFlockアプリは、アプリケーションコードとオプションの.ironflock設定ディレクトリを含む、Gitでバージョン管理されたフォルダです。
ディレクトリ構成
my-app/
├── Dockerfile # 必須:コンテナイメージを定義
├── docker-compose.yml # オプション:マルチコンテナ構成
├── main.py # アプリケーションコード(任意の言語)
├── requirements.txt # 依存パッケージ
└── .ironflock/
├── board-template.yml # ダッシュボードレイアウト
├── data-template.yml # テレメトリ用データベーススキーマ
├── env-template.yml # ユーザーが設定可能なパラメータ
├── port-template.yml # リモートアクセスポート定義
└── ai-template.yml # AIエージェント定義アプリの6つの構成要素
1. エッジコード
コアとなるアプリケーションロジックです。このコードはデバイス上のDockerコンテナ内で実行され、センサー、PLC、カメラ、その他の接続されたハードウェアとの通信を処理します。
エッジコードは任意のプログラミング言語で記述できます — Python、JavaScript、Go、Rust、C++、その他Dockerコンテナで実行可能なあらゆる言語が利用可能です。
2. ボード(ユーザーインターフェース)
ノーコードのボードエディタで構築するリアルタイムダッシュボードです。ボードはプロジェクト内でアプリを実行しているすべてのデバイスのデータを表示し、メッセージングシステムを通じて自動的に更新されます。
ボード構成はboard-template.ymlに保存され、エディタによって自動生成されます。
3. データストレージ
各プロジェクトには独自の物理データベース(TimescaleDB搭載)があります。アプリがdata-template.ymlでテーブルを定義すると、ユーザーがアプリをインストールした際にそれらのテーブルが自動的にプロビジョニングされます。データはプロジェクトごとにプライベートです — 開発者はユーザーのデータにアクセスできません。
4. メッセージングレルム
インストールされると、アプリは以下を接続するプライベートメッセージレルムを取得します:
- エッジデバイス上のすべてのアプリインスタンス
- プロジェクトデータベース
- ボードUI
通信にはIronFlock SDK(Python用ironflock-py、JavaScript用ironflock-js)を通じたWAMP(Web Application Messaging Protocol)を使用します。
5. リモートアクセス
port-template.ymlでポートとプロトコルを定義し、デバイスサービスへのセキュアなトンネリングを有効にします。ユーザーはデバイスごとにこれらのトンネルを有効/無効にできます。リモートアクセスを参照してください。
6. AIエージェント
ai-template.ymlを通じてドメイン固有のAIエージェントを公開し、IronFlock AIアシスタントを拡張します。AI機能を参照してください。
デバイス上の永続ストレージ
デフォルトでは、コンテナ内のデータは再起動時に失われます。以下の2つのディレクトリは再起動後も保持されます:
| パス | スコープ |
|---|---|
/data | このアプリ専用 — 他のアプリからはアクセス不可 |
/shared | デバイス上のすべてのアプリ間で共有 |
Docker Composeを使用している場合は、代わりにdocker-compose.ymlで永続ボリュームを設定してください。
ハードウェアアクセス
アプリがローカルハードウェア(センサー、カメラ、シリアルデバイス)と通信する場合、それらのデバイスはコンテナ内の/devにマウントされます。