プロジェクトディレクトリの構成

actdk initによって作成されるディレクトリについて説明します。

  • app
  • model
  • include
  • manifesto
  • .actdk
  • .actdk/cache
  • .actdk/long_descriptions

app

appディレクトリは Actcast アプリケーション内で動作させるスクリプト・実行ファイルを配置するディレクトリです。 appディレクトリに含まれるファイルはすべてアプリケーションイメージの中に転送されます。

model

modelディレクトリは nnoir ファイルを置くためのディレクトリです。 このディレクトリに置かれた nnoir ファイルは深層学習モデルからスタブ C ランタイムを生成するactdk compile において変換の対象になります。

include

上記のactdk compileにおいて生成されるスタブ C ランタイムを利用するためのヘッダーファイルが置かれるディレクトリです。

manifesto

実行時に必要となるリソースを記述するためのマニフェストが置かれるディレクトリです。 初期化時には以下のファイルが含まれます。

  • default.json
  • pi4_or_later.json

ファイル名は任意で、複数のファイルを置けます。 サポートするボードとそのボード上で動作する際に必要なデバイスを記述します。

.actdk

Actcast アプリケーションのプロジェクトの設定を記述するためのディレクトリです。 次のファイルが含まれます。

  • dependencies.json
  • files.json
  • setting.json

dependencies.json

dependencies.jsonは作成する Actcast アプリケーションが利用するパッケージを記述します。

詳細については依存パッケージの追加を参照してください。

files.json

files.jsonはプロジェクトの構成についての設定を記述します。 エントリポイントやイメージの死活監視のためのファイル名などの設定を変更することができますが、通常変更する必要はありません。

{
  "main": "main",
  "healthchecker": "healthchecker",
  "act_setting": "act_settings.json"
}

setting.json

setting.jsonはプロジェクトの基本設定が記述されるファイルです。 actdk initコマンドにより自動生成されますが、必要に応じて手動で編集もできます。 ただし編集後にactdk init --deriveを実行すると上書きされてしまうので、注意してください。

{
  "app_id": "example",
  "app_server_id": 48,
  "short_description": "A test application",
  "short_descriptions": {
    "ja": "テストアプリケーション",
    "eo": "Una testa aplikaĵo"
  },
  "target_types": [
    "raspberrypi-buster"
  ],
  "apt_repository": "http://one.of/raspbian/mirror"
}
  • "app_id"
    • アプリケーション名
  • "app_server_id"
    • アプリケーション ID
  • "short_description"
    • 1 行説明
  • "short_descriptions"
  • "target_types"
    • "raspberrypi-buster", "raspberrypi" のいずれかのリストです。ここの記述は dependencies.jsonmanifesto/*.json と一致している必要があります。 "raspberrypi" は古いターゲットタイプなので非推奨であり、 Manifesto V2 では利用できません。
  • "apt_repository"
    Deprecated
    • ビルド時に特定の apt ミラーを利用したい場合に指定。デフォルトではmirror redirection systemが利用されます。
    • この設定は ActcastOS 4 以降では動作しません。非推奨であり、将来のバージョンで削除される予定です。

.actdk/cache

actdk がプロジェクトに関するキャッシュの情報を保存しておくディレクトリです。ユーザが直接編集してはいけません。 プロジェクトを git で管理している場合、このディレクトリを .gitignore に記述することを推奨します。

actdk の version 1.7.0 より前では代わりに .actdklastremote.actdkbuildid が用いられていましたが、 version 1.7.0 でこれらの古い形式は廃止されました。 .actdk/cache/project_state.json が存在せずかつこれらのファイルが存在するとき、actdk のいくつかのコマンドはこれらを新しい形式に自動的に変換します。

.actdk/long_descriptions

アプリケーションの説明を英語以外の言語でも用意する場合、このディレクトリに説明を書いたファイルを置きます。ファイル名はISO 639-1 で指定された言語コードにします。拡張子として.mdが使用できます

root.tar(任意)

概要

root.tar は、アプリに直接追加したいディレクトリツリーをまとめた tar アーカイブです。 プロジェクトのルートディレクトリに root.tar を配置しておくことで、アプリケーションイメージに含めるファイルとして利用できます。

使う場面

root.tar は、apt、pip、カスタム base_image 経由ではない形で、直接同梱したいファイルをアプリケーションイメージに含める場合に使います。 ユースケースとしては以下が考えられます。

  • apt や pip で提供されていない配布物を同梱したい場合(例: zip や tar.gz で配布されるランタイム一式)
  • ベンダー提供のファイルをそのまま配置したい場合(例: 特定デバイス向けのヘッダ、共有ライブラリ、実行ファイル)
  • actdk build 中では生成しにくい成果物を事前に用意して同梱したい場合(例: 別環境でビルドしたネイティブバイナリ)
  • app ディレクトリ外の決まったパスに配置したい場合(例: /usr/local/bin の実行ファイル、/opt/<name> のランタイム一式、/usr/lib の共有ライブラリ)

メモ

apt や pip でインストールできる依存関係は、通常は .actdk/dependencies.json に記述してください。 複数のアプリで再利用したいパッケージやファイルを追加する場合は、カスタム base_image も検討してください。カスタムイメージの詳細は 依存パッケージの追加 を参照してください。 root.tar に含めたファイルは apt や pip の管理対象ではないため、パッケージの依存関係解決や更新は自動では管理されません。

作成方法

展開先に追加したいファイルをディレクトリに配置し、そのディレクトリを root.tar としてアーカイブします。

例えば、アプリケーションイメージ内の /opt/example/usr/local/bin/example-command にファイルを配置したい場合は、次のように作成します。

mkdir -p rootfs/opt/example rootfs/usr/local/bin
cp -R example-files/. rootfs/opt/example/
cp example-command rootfs/usr/local/bin/example-command
chmod 755 rootfs/usr/local/bin/example-command
tar --owner=0 --group=0 -C rootfs -cf root.tar opt usr

アーカイブ内のパスは、展開先ディレクトリからの相対パスとして扱われます。 例えば、アプリケーションイメージのルートに展開される場合、アーカイブ内の usr/local/bin/example-command/usr/local/bin/example-command に配置されます。 tar -tf root.tar を実行すると、アーカイブに含まれるパスを確認できます。

作成した root.tar は、actdk buildactdk upload を実行する前に ActDK プロジェクトのルートディレクトリに配置してください。


アプリケーション開発 トップへ

最終更新日