Blocklet SDKは、アプリケーションの設定と環境変数を管理するための堅牢で統一された方法を提供します。複数のソースからの設定を単一の使いやすいインターフェースに集約し、Blockletが必要なすべての情報(アプリケーションのメタデータからコンポーネント固有の設定まで)にアクセスできるようにします。
このセクションでは、この情報にアクセスするための2つの主要なエクスポート、envオブジェクトとcomponentsストアについて説明します。
envオブジェクト
envオブジェクトは、実行時にコンポーネントで利用可能なすべての設定変数を格納する、中央集権的で読み取り専用のコンテナです。SDKは、デフォルト値、アプリケーションレベルの設定、コンポーネント固有の環境ファイルなど、複数のソースからの設定をマージして、このオブジェクトを自動的に作成します。
SDKからenvをインポートするだけで、任意の設定プロパティにアクセスできます。
import { env } from '@blocklet/sdk';
console.log(`Running in app: ${env.appName}`);
console.log(`My data directory is at: ${env.dataDir}`);
// Blockletの設定ページからユーザー定義の設定にアクセス
const userApiKey = env.preferences.apiKey;主要な環境プロパティ
envオブジェクトには多くのプロパティが含まれていますが、ここでは最も一般的に使用されるものをいくつか紹介します。
- appName
string— 親アプリケーションの名前。 - appUrl
string— アプリケーションの完全な公開URL。 - componentDid
string— 現在のコンポーネントの分散型ID(DID)。 - isComponent
boolean— コードがコンポーネントのコンテキスト内で実行されている場合にtrueになるフラグ。 - dataDir
string— コンポーネント専用のデータストレージディレクトリへの絶対パス。 - cacheDir
string— コンポーネント専用のキャッシュディレクトリへの絶対パス。 - serverVersion
string— アプリケーションが実行されているBlocklet Serverのバージョン。 - preferences
Record<string, any>— Blockletの設定ページからユーザーが設定したカスタム設定値を含むオブジェクト。
componentsストア
componentsストアは、同じアプリケーションインスタンス内で実行されている他のすべてのコンポーネントに関するリアルタイム情報を提供する配列です。これはコンポーネント間の通信に不可欠であり、あるコンポーネントが別のコンポーネントのエンドポイントとステータスを発見できるようにします。
import { components } from '@blocklet/sdk';
// リクエストを行うために実行中のAPIサービスコンポーネントを検索
const apiService = components.find(c => c.name === 'api-service' && c.status === 1);
if (apiService) {
const apiUrl = apiService.webEndpoint;
console.log(`Found API service at: ${apiUrl}`);
// これで、このURLにリクエストを送信できます
}コンポーネントのプロパティ
components配列内の各オブジェクトには、コンポーネントに関する詳細情報が含まれています。
- did
string— コンポーネントの分散型ID(DID)。 - name
string—blocklet.ymlで定義されたコンポーネントの名前。 - mountPoint
string— コンポーネントがマウントされているURLパス(例:/admin、/api)。 - webEndpoint
string— コンポーネントの完全な公開アクセス可能なURL。 - status
number— コンポーネントの現在のステータス(例:実行中は1、停止中は0)。
設定の読み込みフロー
SDKは、さまざまなソースからの設定を階層化してenvオブジェクトを構築します。後続の各ソースは前のソースの値を上書きでき、明確で予測可能な優先順位を提供します。

この階層化されたアプローチは柔軟性を提供し、開発者や管理者がさまざまなレベルでBlockletを設定できるようにします。
動的更新
設定は静的なだけではありません。Blocklet SDKは、Blocklet Serverからプッシュされるランタイムの変更をリッスンします。たとえば、ユーザーがBlockletの設定ページで設定を更新すると、SDKは自動的にenvオブジェクトを更新し、イベントを発行します。
エクスポートされたeventsエミッターを使用して、これらの変更をリッスンできます。
import { events, Events } from '@blocklet/sdk';
// 環境や設定の更新をリッスン
events.on(Events.envUpdate, (updatedValues) => {
console.log('Configuration was updated:', updatedValues);
// これで変更に対応できます。例:サービスを再初期化する
});これにより、再起動を必要とせずに設定の変更に対応できるアプリケーションを構築できます。
設定と環境変数へのアクセス方法を理解したところで、より具体的なタスクにそれらを使用する方法を探求できます。一般的なユースケースは、暗号キーとウォレットの管理であり、これについては次のセクションで説明します。