FlowiseAIのバージョンアップガイド:移行手順と互換性対策

FlowiseAI バージョンアップ対応マニュアル

FlowiseAIは、視覚的にAIワークフローを構築できるオープンソースツールとして広く利用されています。新バージョンではパフォーマンス改善やセキュリティ強化、新たなノード機能が追加されており、継続的なアップデートが推奨されます。本記事では、既存環境から最新バージョンへの移行プロセス、特に互換性の問題点とその解決策について詳しく解説します。

事前準備:環境確認とバックアップ

アップデート前に、開発・運用環境が要件を満たしているかを確認してください。

構成要素 最低条件 推奨設定
Node.js 18.15.0以上 20系最新版
パッケージマネージャ pnpm 9.0+ 最新安定版
メモリ 4GB 8GB以上
ディスク容量 10GB 20GB以上

データのバックアップ手順

アップデート前の完全バックアップは必須です。以下のコマンドで必要なファイルとデータベースを保存してください。

# PostgreSQLデータベースのエクスポート
pg_dump -U flowise_user -h localhost flowise_production > backup_flowise_$(date +%Y%m%d).sql

# 環境設定ファイルのコピー
cp packages/server/.env .env.server.bak
cp packages/ui/.env .env.ui.bak

# カスタムコンポーネントのアーカイブ
tar -czf custom-components-$(date +%m%d).tar.gz packages/components/nodes/

アップデート方法(2通り)

方法1:ソースコードからの更新(開発者向け)

# 最新リビジョンの取得
git fetch origin
git checkout main
git pull origin main

# 依存関係の再構築
pnpm clean
pnpm install --prefer-offline

# メモリ制限の設定(ビルド時)
export NODE_OPTIONS="--max-old-space-size=4096"
pnpm run build

# サービス起動
pnpm run start:prod

方法2:Dockerによる更新(本番環境向け)

# docker-compose.yml の例
version: '3.8'
services:
  flowise:
    image: flowiseai/flowise:v3.1.0
    container_name: flowise-app
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgresql://user:pass@db:5432/flowise
      - FLOWISE_USERNAME=admin
    volumes:
      - ./custom-nodes:/app/packages/components/nodes/custom
docker-compose down
docker-compose pull
docker-compose up -d --remove-orphans

主な破壊的変更と対応策

1. ノードインターフェースの再設計

v3系でノード定義の型構造が変更されました。従来のinputs/outputsはinputSlots/outputSlotsに置き換えられています。

// 古い形式(v2まで)
interface LegacyNode {
    name: string;
    inputs: Array<{ label: string }>;
    outputs: Array<{ name: string }>;
}

// 新しい形式(v3+)
interface FlowiseNode {
    displayName: string;
    inputAnchors: AnchorConfig[];
    outputAnchors: AnchorConfig[];
    nodeSettings: NodeSettings;
}

既存のカスタムノードを修正する場合は、以下のようにラッパー関数で変換を行うのが効果的です。

function migrateLegacyNode(legacy: LegacyNode): FlowiseNode {
    return {
        displayName: legacy.name,
        inputAnchors: legacy.inputs.map(i => ({
            id: generateId(),
            label: i.label,
            type: 'text'
        })),
        outputAnchors: legacy.outputs.map(o => ({
            id: generateId(),
            name: o.name,
            category: 'output'
        })),
        nodeSettings: { version: '3.0' }
    };
}

2. 認証システムの刷新

v3ではJWTトークンの有効期間が短縮され、リフレッシュトークンの導入が必須になりました。フロントエンド側では、自動ログイン処理の見直しが必要です。

async function handleTokenExpiry() {
    const refreshToken = localStorage.getItem('refresh_token');
    const res = await fetch('/api/v1/auth/refresh', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ refreshToken })
    });
    
    if (res.ok) {
        const { accessToken } = await res.json();
        setAuthToken(accessToken);
    } else {
        redirectToLogin();
    }
}

3. データベーススキーマの移行

TypeORMのマイグレーション機能を利用して、テーブル構造の更新を行います。

# マイグレーションファイルの生成
npx typeorm migration:create -n UpdateNodeSchemaV3

# 実行(指定設定ファイルを使用)
npx typeorm migration:run -f packages/server/ormconfig.prod.json

よくあるトラブルシューティング

  • 依存パッケージの競合:
    pnpm install --force を使用してキャッシュを無視して再インストールします。
  • ビルド時のメモリ不足:
    環境変数NODE_OPTIONSに--max-old-space-size=4096を設定してください。
  • カスタムノードが読み込まれない:
    package.jsonのpeerDependenciesに正しいFlowiseバージョンが記載されているか確認し、パスがpackages/components/nodes/custom/内にあることを確認してください。

アップデート後の検証項目

正常に移行できたかを確認するために、以下のチェックリストを使用してください。

確認項目 実施方法 期待される結果
フローの実行 既存のシンプルなワークフローを実行 エラーなしで完了
API連携 cURLまたはPostmanでRESTエンドポイントを呼び出し 200 OKが返る
カスタムノード動作 独自作成したノードを含むフローをテスト 出力値が正しい
ユーザーセッション ログアウト→ログインを確認 認証維持される

緊急時:ロールバック手順

重大な不具合が発生した場合の復旧手順です。

# サービス停止
pnpm stop

# Git履歴に戻す
git checkout HEAD~1 -- .
git reset --hard

# 依存再インストール
pnpm install

# データベース復元
psql -U user flowise_db < backup_flowise_20241201.sql

# 再起動
pnpm run build && pnpm run start:prod

ベストプラクティス

  • ステージング環境で事前にアップデートテストを行う
  • CI/CDパイプラインに自動ビルドと基本テストを組み込む
  • マイグレーションスクリプトはバージョン管理対象とする
  • チーム内で変更点の共有ミーティングを開催する

タグ: FlowiseAI Node.js TypeScript Docker TypeORM

9月25日 15:18 投稿