メインコンテンツへスキップ

Media Kitとの連携

@blocklet/uploaderパッケージは、Media Kit blockletとのシームレスでゼロコンフィギュレーションの連携を実現するために設計されています。Media Kitは、メディアの保存、管理、処理のための一元化されたサービスを提供します。Uploaderコンポーネントが同じ環境に

@blocklet/uploaderパッケージは、Media Kit blockletとのシームレスでゼロコンフィギュレーションの連携を実現するために設計されています。Media Kitは、メディアの保存、管理、処理のための一元化されたサービスを提供します。Uploaderコンポーネントが同じ環境にMedia Kitがインストールされていることを検出すると、開発者による追加の設定なしに自動的にその機能を強化します。

この自動連携により、ファイルストレージが一元化され、すべてのblockletで一貫したアップロードルールが適用され、AI画像生成のような高度な機能が動的に有効になります。この動作は、効率的な体験のためにデフォルトで有効になっていますが、独自のblockletのバックエンド内でアップロードを処理する必要がある場合は、オプトアウトすることもできます。

仕組み:自動検出と設定

連携プロセスは完全に自動化されており、コンポーネントの初期化時に簡単な2段階のプロセスに従います:

  1. 検出: Uploaderコンポーネントは、Media Kitの固有DID(z8ia1mAXo8ZE7ytGF36L5uBf9kD2kenhqFGp9)を持つインストール済みのblockletを環境内でスキャンします。
  2. 設定: Media Kitが見つかると、Uploaderはその/api/uploader/statusエンドポイントにAPIリクエストを送信します。このエンドポイントは、以下の情報を含む設定オブジェクトを返します:
  • アップロード制限: Media Kitで一元管理されるmaxFileSizeallowedFileTypesなどのグローバルルール。
  • 利用可能なプラグイン: どの高度なプラグイン(例:AIImageResourcesUploaded)が有効で、UploaderのUIに表示されるべきかを示すマップ。
  • APIエンドポイント: Uploaderは、すべてのファイルアップロードと関連APIコールをMedia Kitのサービスにルーティングするように自動設定し、すべてのメディアが一元的に保存されるようにします。

以下の図は、この自動設定フローを示しています:

主な利点

Media Kitとの連携は、追加の開発作業なしにいくつかの強力な利点を提供します。

一元化されたメディア管理

アップロードされたすべてのファイルはMedia Kit内で保存・管理され、複数のblockletにまたがるメディア資産の単一の情報源を構築します。`Resources`および`Uploaded`プラグインにより、ユーザーは既存の資産を簡単に閲覧し、再利用できます。

動的な機能プラグイン

AI画像生成プラグインのような高度な機能は、Media Kitでその機能がオンになっている場合に自動的に有効になります。これにより、アプリケーションはコードの変更なしに新機能を追加できます。

一貫したアップロードルール

アップロード制限はMedia Kitで一度定義され、Uploaderのすべてのインスタンスに自動的に適用されるため、一貫性が確保され、ポリシー管理が簡素化されます。

バックエンド設定不要

Media Kitはファイル処理と保存に必要なバックエンドサービスを提供するため、独自のblockletに`@blocklet/uploader-server`をインストールしたり設定したりする必要がなく、複雑さを軽減します。

オプトアウト:連携の無効化

独自のバックエンドロジックとストレージ(@blocklet/uploader-serverを使用)でアップロードを管理する必要があるシナリオでは、Media Kitとの自動連携を無効にできます。これは、UploaderコンポーネントのapiPathPropsオブジェクトに特定のpropsを渡すことで行います。

  • disableMediaKitStatus: trueに設定すると、UploaderがMedia Kitから設定(制限とプラグイン)を取得するのを防ぎます。
  • disableMediaKitPrefix: trueに設定すると、UploaderがAPIリクエストをMedia Kitのエンドポイントにルーティングするのを防ぎます。代わりに、現在のblockletのプレフィックスを使用します。

Uploader with Media Kit Integration Disabled

jsx
import { Uploader } from '@blocklet/uploader/react';

export default function MyComponent() {
  return (
    <Uploader
      popup
      apiPathProps={{
        // Media Kitからのリモート設定の取得を防止
        disableMediaKitStatus: true,
        // Media KitへのAPIコールのルーティングを防止
        disableMediaKitPrefix: true,
      }}
      // ここで独自の制限を提供する必要があります
      // そして@blocklet/uploader-serverで独自のバックエンドを設定します。
      coreProps={{
        restrictions: {
          maxFileSize: 1024 * 1024 * 5, // 5MB
          allowedFileTypes: ['image/jpeg', 'image/png'],
        },
      }}
    />
  );
}

これらのプロパティを設定することで、Uploaderコンポーネントはスタンドアロンモードで動作し、自身のpropsとアプリケーション内で設定されたバックエンドサービスに完全に依存します。詳細については、バックエンド設定ガイドをご覧ください。