はじめに
AIアプリケーション開発プラットフォーム「Dify」をローカル環境で試そうと思い立ち、Dockerを使った環境構築に取り組みました。結果として、数時間の試行錯誤の末に得た教訓は「まず公式リポジトリを確認すべし」という、至ってシンプルなものでした。
本記事では、その試行錯誤のプロセスと、遠回りから得られた学びを共有します。
環境情報
- OS: macOS
- Docker: Docker Desktop
- Node.js: 22.11.0 (nvm管理)
- Python: uv環境
試行錯誤の記録
Phase 1: バックエンド環境の構築
まず、dify-myselfというディレクトリを作成し、APIサーバーから構築を開始しました。
make api-worker
当然のようにエラー。Python環境が整っていないためです。
cd api && uv sync
make api-worker
再度エラー。仮想環境が破損している可能性を疑い、クリーンインストールを試みます。
cd api && rm -rf .venv && uv sync
さらにapi/app.pyを直接編集し、GunicornとCeleryの設定を調整。この時点で、公式のセットアップ手順を確認していれば…という後悔は後の話です。
結果として、uv syncとmake api-workerを繰り返すこと十数回。バックエンドとの格闘が続きました。
Phase 2: フロントエンド環境の構築
バックエンドで疲弊した後は、フロントエンド環境の準備です。
Node.jsバージョン管理
まずnvmをインストールし、適切なNode.jsバージョンをセットアップしました。
curl -o- <https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh> | bash
source ~/.zshrc
nvm install 22.11.0
nvm use 22.11.0
nvm alias default 22.11.0
パッケージマネージャーのセットアップ
pnpmをインストールし、依存関係を解決します。
npm install -g pnpm
cd /Users/ryusei/dev-environment/dify-myself/web
pnpm install
そして開発サーバーを起動…
make web-dev
またエラー。pnpm installとmake web-devの繰り返し。
この時点で数時間が経過していました。
転機:公式リポジトリの発見
ふと、基本に立ち返ることにしました。
「公式リポジトリのセットアップ手順を確認してみよう」
Difyの公式GitHubリポジトリからソースコードをダウンロードし、dockerディレクトリに移動。
cd dify-main/docker
docker-compose up -d
実行結果:
Creating dify-postgres ... done
Creating dify-redis ... done
Creating dify-weaviate ... done
全てのコンテナが正常に起動。PostgreSQL、Redis、Weaviate、全てhealthyステータスです。
今までの数時間は一体何だったのか…
技術的な学び
1. 公式ドキュメントの重要性
車輪の再発明は不要です。公式が提供するセットアップ手順は、多くのユースケースを考慮して設計されています。
2. Docker Composeの有効活用
公式のDocker Compose設定には以下が含まれていました:
- PostgreSQL(データベース)
- Redis(キャッシュ・メッセージブローカー)
- Weaviate(ベクトルデータベース)
- 環境変数の適切な設定
- ネットワーク構成
- ボリューム管理
これらを手動で設定しようとしたことが、遠回りの原因でした。
3. 習得したツールとスキル
遠回りは決して無駄ではありませんでした。以下のスキルを実践的に学ぶことができました:
uv(Python環境管理)
- 仮想環境の作成と削除
- 依存関係の同期
- トラブルシューティング手法
nvm(Node.jsバージョン管理)
- 複数バージョンの管理
- プロジェクト別のバージョン切り替え
pnpm(パッケージマネージャー)
- モノレポ構成での依存関係管理
- npmやyarnとの違い
Makefile
- タスク自動化の仕組み
- 開発ワークフローの標準化
ベストプラクティス
今回の経験から、以下の開発フローを推奨します:
- 公式ドキュメントを最初に確認
- README.md
- CONTRIBUTING.md
- セットアップガイド
- 公式のセットアップ手順に従う
- Docker Composeが提供されている場合は活用
- 推奨される環境・バージョンを使用
- 動作確認後にカスタマイズ
- まずデフォルト設定で動作させる
- 必要に応じて段階的に変更
- トラブルシューティングの記録
- コマンド履歴を保存
- エラーメッセージをメモ
- 解決策を文書化
まとめ
Difyのローカル環境構築において、「公式リポジトリをダウンロードしてdocker-compose up -dを実行するだけ」で完了する作業に、数時間を費やしてしまいました。
しかし、この遠回りによって以下を得ることができました:
- 各種開発ツールの実践的な知識
- トラブルシューティングのスキル
- 公式設定の完成度への理解
- 「基本に立ち返る」ことの重要性
教訓:技術的な探求心は大切ですが、まずは公式ドキュメントから始めましょう。
遠回りの経験も貴重ですが、この記事を読んでいる方は、ぜひ最短ルートでDifyの素晴らしいAI開発体験を始めてください。
参考リンク
※ dify-myselfフォルダは、学びの証として大切に保管しています(多分もう開かない)