mirror of
https://github.com/DayuanJiang/next-ai-draw-io.git
synced 2026-01-02 22:32:27 +08:00
188 lines
8.8 KiB
Markdown
188 lines
8.8 KiB
Markdown
|
|
# Next AI Draw.io
|
|||
|
|
|
|||
|
|
<div align="center">
|
|||
|
|
|
|||
|
|
**AI搭載のダイアグラム作成ツール - チャット、描画、可視化**
|
|||
|
|
|
|||
|
|
[English](./README.md) | [中文](./README_CN.md) | 日本語
|
|||
|
|
|
|||
|
|
[](https://opensource.org/licenses/MIT)
|
|||
|
|
[](https://nextjs.org/)
|
|||
|
|
[](https://www.typescriptlang.org/)
|
|||
|
|
[](https://github.com/sponsors/DayuanJiang)
|
|||
|
|
|
|||
|
|
[🚀 ライブデモ](https://next-ai-drawio.jiang.jp/)
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
AI機能とdraw.ioダイアグラムを統合したNext.jsウェブアプリケーションです。自然言語コマンドとAI支援の可視化により、ダイアグラムを作成、修正、強化できます。
|
|||
|
|
|
|||
|
|
https://github.com/user-attachments/assets/b2eef5f3-b335-4e71-a755-dc2e80931979
|
|||
|
|
|
|||
|
|
## 機能
|
|||
|
|
|
|||
|
|
- **LLM搭載のダイアグラム作成**:大規模言語モデルを活用して、自然言語コマンドで直接draw.ioダイアグラムを作成・操作
|
|||
|
|
- **画像ベースのダイアグラム複製**:既存のダイアグラムや画像をアップロードし、AIが自動的に複製・強化
|
|||
|
|
- **ダイアグラム履歴**:すべての変更を追跡する包括的なバージョン管理。AI編集前のダイアグラムの以前のバージョンを表示・復元可能
|
|||
|
|
- **インタラクティブなチャットインターフェース**:AIとリアルタイムでコミュニケーションしてダイアグラムを改善
|
|||
|
|
- **AWSアーキテクチャダイアグラムサポート**:AWSアーキテクチャダイアグラムの生成を専門的にサポート
|
|||
|
|
- **アニメーションコネクタ**:より良い可視化のためにダイアグラム要素間に動的でアニメーション化されたコネクタを作成
|
|||
|
|
|
|||
|
|
## **例**
|
|||
|
|
|
|||
|
|
以下はいくつかのプロンプト例と生成されたダイアグラムです:
|
|||
|
|
|
|||
|
|
<div align="center">
|
|||
|
|
<table width="100%">
|
|||
|
|
<tr>
|
|||
|
|
<td colspan="2" valign="top" align="center">
|
|||
|
|
<strong>アニメーションTransformerコネクタ</strong><br />
|
|||
|
|
<p><strong>プロンプト:</strong> **アニメーションコネクタ**付きのTransformerアーキテクチャ図を作成してください。</p>
|
|||
|
|
<img src="./public/animated_connectors.svg" alt="アニメーションコネクタ付きTransformerアーキテクチャ" width="480" />
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="50%" valign="top">
|
|||
|
|
<strong>GCPアーキテクチャ図</strong><br />
|
|||
|
|
<p><strong>プロンプト:</strong> **GCPアイコン**を使用してGCPアーキテクチャ図を生成してください。この図では、ユーザーがインスタンス上でホストされているフロントエンドに接続します。</p>
|
|||
|
|
<img src="./public/gcp_demo.svg" alt="GCPアーキテクチャ図" width="480" />
|
|||
|
|
</td>
|
|||
|
|
<td width="50%" valign="top">
|
|||
|
|
<strong>AWSアーキテクチャ図</strong><br />
|
|||
|
|
<p><strong>プロンプト:</strong> **AWSアイコン**を使用してAWSアーキテクチャ図を生成してください。この図では、ユーザーがインスタンス上でホストされているフロントエンドに接続します。</p>
|
|||
|
|
<img src="./public/aws_demo.svg" alt="AWSアーキテクチャ図" width="480" />
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="50%" valign="top">
|
|||
|
|
<strong>Azureアーキテクチャ図</strong><br />
|
|||
|
|
<p><strong>プロンプト:</strong> **Azureアイコン**を使用してAzureアーキテクチャ図を生成してください。この図では、ユーザーがインスタンス上でホストされているフロントエンドに接続します。</p>
|
|||
|
|
<img src="./public/azure_demo.svg" alt="Azureアーキテクチャ図" width="480" />
|
|||
|
|
</td>
|
|||
|
|
<td width="50%" valign="top">
|
|||
|
|
<strong>猫のスケッチ</strong><br />
|
|||
|
|
<p><strong>プロンプト:</strong> かわいい猫を描いてください。</p>
|
|||
|
|
<img src="./public/cat_demo.svg" alt="猫の絵" width="240" />
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
## 仕組み
|
|||
|
|
|
|||
|
|
本アプリケーションは以下の技術を使用しています:
|
|||
|
|
|
|||
|
|
- **Next.js**:フロントエンドフレームワークとルーティング
|
|||
|
|
- **Vercel AI SDK**(`ai` + `@ai-sdk/*`):ストリーミングAIレスポンスとマルチプロバイダーサポート
|
|||
|
|
- **react-drawio**:ダイアグラムの表現と操作
|
|||
|
|
|
|||
|
|
ダイアグラムはdraw.ioでレンダリングできるXMLとして表現されます。AIがコマンドを処理し、それに応じてこのXMLを生成または変更します。
|
|||
|
|
|
|||
|
|
## マルチプロバイダーサポート
|
|||
|
|
|
|||
|
|
- AWS Bedrock(デフォルト)
|
|||
|
|
- OpenAI / OpenAI互換API(`OPENAI_BASE_URL`経由)
|
|||
|
|
- Anthropic
|
|||
|
|
- Google AI
|
|||
|
|
- Azure OpenAI
|
|||
|
|
- Ollama
|
|||
|
|
- OpenRouter
|
|||
|
|
- DeepSeek
|
|||
|
|
|
|||
|
|
注:`claude-sonnet-4-5`はAWSロゴ付きのdraw.ioダイアグラムで学習されているため、AWSアーキテクチャダイアグラムを作成したい場合は最適な選択です。
|
|||
|
|
|
|||
|
|
## はじめに
|
|||
|
|
|
|||
|
|
### インストール
|
|||
|
|
|
|||
|
|
1. リポジトリをクローン:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git clone https://github.com/DayuanJiang/next-ai-draw-io
|
|||
|
|
cd next-ai-draw-io
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. 依存関係をインストール:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
npm install
|
|||
|
|
# または
|
|||
|
|
yarn install
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. AIプロバイダーを設定:
|
|||
|
|
|
|||
|
|
ルートディレクトリに`.env.local`ファイルを作成:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cp env.example .env.local
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
`.env.local`を編集して選択したプロバイダーを設定:
|
|||
|
|
|
|||
|
|
- `AI_PROVIDER`を選択したプロバイダーに設定(bedrock, openai, anthropic, google, azure, ollama, openrouter, deepseek)
|
|||
|
|
- `AI_MODEL`を使用する特定のモデルに設定
|
|||
|
|
- プロバイダーに必要なAPIキーを追加
|
|||
|
|
|
|||
|
|
プロバイダー固有の設定例については、上記の[マルチプロバイダーサポート](#マルチプロバイダーサポート)セクションを参照してください。
|
|||
|
|
|
|||
|
|
4. 開発サーバーを起動:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
npm run dev
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
5. ブラウザで[http://localhost:3000](http://localhost:3000)を開いてアプリケーションを確認。
|
|||
|
|
|
|||
|
|
## デプロイ
|
|||
|
|
|
|||
|
|
Next.jsアプリをデプロイする最も簡単な方法は、Next.jsの作成者による[Vercelプラットフォーム](https://vercel.com/new)を使用することです。
|
|||
|
|
|
|||
|
|
詳細は[Next.jsデプロイメントドキュメント](https://nextjs.org/docs/app/building-your-application/deploying)をご覧ください。
|
|||
|
|
|
|||
|
|
または、このボタンでデプロイできます:
|
|||
|
|
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FDayuanJiang%2Fnext-ai-draw-io)
|
|||
|
|
|
|||
|
|
ローカルの`.env.local`ファイルと同様に、Vercelダッシュボードで**環境変数を設定**してください。
|
|||
|
|
|
|||
|
|
## プロジェクト構造
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
app/ # Next.js App Router
|
|||
|
|
api/chat/ # AIツール付きチャットAPIエンドポイント
|
|||
|
|
page.tsx # DrawIO埋め込み付きメインページ
|
|||
|
|
components/ # Reactコンポーネント
|
|||
|
|
chat-panel.tsx # ダイアグラム制御付きチャットインターフェース
|
|||
|
|
chat-input.tsx # ファイルアップロード付きユーザー入力コンポーネント
|
|||
|
|
history-dialog.tsx # ダイアグラムバージョン履歴ビューア
|
|||
|
|
ui/ # UIコンポーネント(ボタン、カードなど)
|
|||
|
|
contexts/ # Reactコンテキストプロバイダー
|
|||
|
|
diagram-context.tsx # グローバルダイアグラム状態管理
|
|||
|
|
lib/ # ユーティリティ関数とヘルパー
|
|||
|
|
ai-providers.ts # マルチプロバイダーAI設定
|
|||
|
|
utils.ts # XML処理と変換ユーティリティ
|
|||
|
|
public/ # サンプル画像を含む静的アセット
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## TODO
|
|||
|
|
|
|||
|
|
- [x] LLMが毎回ゼロから生成する代わりにXMLを修正できるようにする
|
|||
|
|
- [x] シェイプストリーミング更新の滑らかさを改善
|
|||
|
|
- [x] 複数のAIプロバイダーサポートを追加(OpenAI, Anthropic, Google, Azure, Ollama)
|
|||
|
|
- [x] 60秒以上のセッションで生成が失敗するバグを解決
|
|||
|
|
- [ ] UIにAPI設定を追加
|
|||
|
|
|
|||
|
|
## サポート&お問い合わせ
|
|||
|
|
|
|||
|
|
このプロジェクトが役に立ったら、ライブデモサイトのホスティングを支援するために[スポンサー](https://github.com/sponsors/DayuanJiang)をご検討ください!
|
|||
|
|
|
|||
|
|
サポートやお問い合わせについては、GitHubリポジトリでissueを開くか、メンテナーにご連絡ください:
|
|||
|
|
|
|||
|
|
- メール:me[at]jiang.jp
|
|||
|
|
|
|||
|
|
## スター履歴
|
|||
|
|
|
|||
|
|
[](https://www.star-history.com/#DayuanJiang/next-ai-draw-io&type=date&legend=top-left)
|
|||
|
|
|
|||
|
|
---
|