😎

機密情報や個人情報を流出させずに生成AIのアウトプットのコピペ判定ができる簡易チェックツールのMVPをVibeCodingして用意してみる

に公開

機密情報や個人情報を流出させずに生成AIのアウトプットのコピペ判定ができる簡易チェックツールのMVPをVibeCodingして用意してみる

ClaudeCode、Codex、GeminiCLIなどで社内向けコピペチェックツールを開発するためのプロンプト準備してみました。
このプロンプトで、機密情報を外部に送信しない安全な社内コピペチェックツールを開発できるかも知れないです。
後ほど各ツール毎で生成されたコードの使用感などを確認してGitHubでの公開を目指したいと思います
デモ環境も用意できれば要検討

主な機能

1. ElasticSearch統合

  • 日本語形態素解析(kuromoji)によるキーワード抽出
  • ファジー検索・類似文書検索
  • 高速インデックス検索とスコアリング

2. 将来のRAG対応準備

  • ベクトル化対応インターフェース
  • sentence-transformers統合準備
  • セマンティック検索基盤

3. MCP対応アーキテクチャ

  • プラグイン可能な判定エンジン
  • 外部LLM統合インターフェース
  • 拡張可能な分析機能

主なセキュリティ対策のポイント

1. 完全内製化

  • 入力されたテキストは一切外部APIに送信しない
  • 社内サーバーでの完結処理

2. ITリテラシー対応

  • 直感的なUI/UX設計
  • わかりやすい結果表示
  • 詳しいヘルプ機能

3. 段階的開発

  • まずMVP(最小機能版)で開始
  • 運用しながら機能を拡張

補足提案

外部検索の代替案

  • 社内の過去文書データベース構築
  • 業界標準文書・テンプレートのローカルデータベース
  • 段階的にデータを蓄積し精度向上

運用フェーズ

  1. 小規模部署でのテスト運用
  2. フィードバック収集・改善
  3. 全社展開

このアプローチで、セキュリティを保ちながら実用的なツールが構築できます。

開発開始方法

ClaudeCodeを利用する場合は以下のコマンドをターミナルで実行してください:

claude-code "ElasticSearchを統合した高度な社内コピペチェックツールを開発してください。Docker Compose環境、kuromoji日本語解析、キーワード自動抽出機能を含めて実装してください。まずは基本環境のセットアップから開始してください。"

技術的メリット

  • セキュリティ: 完全社内完結
  • 精度: ElasticSearchによる高速・高精度検索
  • 拡張性: RAG/MCP対応の将来性
  • 運用性: Docker環境による簡単デプロイ

将来の発展可能性

  1. 6ヶ月後: RAG統合でセマンティック検索
  2. 1年後: MCP統合で高度な自然言語判定
  3. 継続: 社内文書蓄積による精度向上

この構成により、現在の機密性要件を満たしつつ、最新のAI技術との統合も可能な、長期的に価値のあるシステムが構築できます。ElasticSearchによるキーワード検索は即座に大きな価値を提供し、RAG/MCP統合により将来的にはより高度な判定が可能になります。

【注意】 ここから先はClaude.mdなどのpromptです

強制的にMarkdownが閉じられてしまうので、後ほどVibeCodingの成果公開を含めた提供方法の見直し更新を行います(週末以降になりそう…)

# 社内コピペチェックツール開発用ClaudeCodeプロンプト

## 概要
機密情報を外部に送信せずに済む、社内向けコピペチェックツールを開発してください。

## 基本要件

### 1. アプリケーション構成
- **フロントエンド**: React + TypeScript
- **バックエンド**: Node.js + Express
- **データベース**: SQLite(メタデータ管理)
- **検索エンジン**: ElasticSearch + Kibana(キーワード検索・分析)
- **コンテナ**: Docker Compose(アプリ + ElasticSearch環境)
- **将来拡張**: RAG/MCP対応アーキテクチャ

### 2. セキュリティ要件
- **データの外部送信禁止**: 入力されたテキストは一切外部APIに送信しない
- **ログ管理**: チェック履歴の適切な管理(必要に応じて削除機能)
- **アクセス制御**: 社内ネットワークからのみアクセス可能
- **データ暗号化**: データベース内のテキストは暗号化保存

### 3. 機能要件

#### 3.1 基本機能
- テキスト入力フォーム(最大20,000文字)
- リアルタイム文字数カウント
- 文章の自動分割(句読点ベース、80文字以内)
- 手動分割指定(カンマ区切り)
- ファイルアップロード対応(.txt, .docx, .pdf)

#### 3.2 チェック機能
- **社内文書データベースとの照合**
- **以前にチェックされた文書との照合**
- **ElasticSearch による高速キーワード検索**
- **類似度判定アルゴリズム**(Levenshtein距離、N-gramベース)
- **結果の色分け表示**(完全一致:赤、高類似:オレンジ、中程度:黄色)

#### 3.3 キーワード抽出・検索機能
- **自動キーワード抽出**(TF-IDF、固有名詞、専門用語)
- **ElasticSearch インデックス作成**
- **ファジー検索**(誤字・表記ゆれ対応)
- **類似文書検索**(セマンティック検索準備)
- **検索結果スコアリング**

#### 3.4 管理機能
- 文書履歴管理
- 類似度しきい値設定
- 除外辞書設定(定型文、テンプレート除外)
- 統計レポート(月次、部署別)

### 4. UI/UX要件
- **直感的操作**: ITリテラシーが低くても使いやすい
- **レスポンシブデザイン**: PC・タブレット対応
- **処理状況表示**: プログレスバーと推定完了時間
- **結果の見やすさ**: 問題箇所のハイライト表示

## 実装指示

### Phase 1: 基本機能開発
```bash
# プロジェクト構成を作成してください
# - フロントエンド(React + TypeScript)
# - バックエンドAPI(Node.js + Express)
# - データベース設計(SQLite)
# - 基本的なUI/UX実装

Phase 2: ElasticSearch・キーワード抽出機能

# 高度な検索・分析機能を実装してください
# - ElasticSearch クラスター設定
# - 日本語形態素解析(kuromoji)
# - キーワード自動抽出エンジン
# - ファジー検索・類似文書検索
# - 検索結果スコアリング・ランキング

Phase 3: コピペチェック機能強化

# 文字列比較アルゴリズムを実装してください
# - 文章分割ロジック
# - 類似度計算(複数アルゴリズム対応)
# - データベース検索最適化
# - 結果表示ロジック

Phase 3: コピペチェック機能強化

# 複数アルゴリズムによる高精度チェックを実装してください
# - 文章分割ロジック(改良版)
# - ハイブリッド類似度計算
# - ElasticSearch統合検索
# - 結果統合・重み付けロジック

Phase 4: RAG/MCP対応準備

# 将来拡張のための基盤を実装してください
# - プラグインアーキテクチャ設計
# - ベクトル化準備(sentence-transformers対応)
# - MCP プロトコル対応インターフェース
# - 拡張可能な判定エンジン設計

Phase 5: セキュリティ・管理機能

# セキュリティ機能を実装してください
# - データ暗号化
# - アクセスログ
# - 管理画面
# - データ保持ポリシー設定

技術仕様

ElasticSearchスキーマ設計

// documents インデックス
{
  "mappings": {
    "properties": {
      "id": {"type": "keyword"},
      "title": {"type": "text", "analyzer": "kuromoji"},
      "content": {"type": "text", "analyzer": "kuromoji"},
      "keywords": {"type": "text", "analyzer": "kuromoji"},
      "extracted_terms": {"type": "keyword"},
      "department": {"type": "keyword"},
      "created_at": {"type": "date"},
      "document_hash": {"type": "keyword"},
      "content_vector": {"type": "dense_vector", "dims": 384}  // 将来のRAG対応
    }
  },
  "settings": {
    "analysis": {
      "analyzer": {
        "kuromoji": {
          "tokenizer": "kuromoji_tokenizer",
          "filter": ["kuromoji_baseform", "kuromoji_part_of_speech"]
        }
      }
    }
  }
}

データベーススキーマ

-- 文書テーブル
CREATE TABLE documents (
    id INTEGER PRIMARY KEY,
    title TEXT,
    content_hash TEXT,
    encrypted_content BLOB,
    created_at DATETIME,
    user_id TEXT,
    department TEXT
);

-- チェック履歴テーブル
CREATE TABLE check_history (
    id INTEGER PRIMARY KEY,
    document_id INTEGER,
    similarity_results JSON,
    created_at DATETIME,
    FOREIGN KEY (document_id) REFERENCES documents(id)
);

類似度判定アルゴリズム

# 実装すべきアルゴリズム例
1. 完全一致チェック
2. Levenshtein距離による類似度
3. Jaccard係数(N-gramベース)
4. コサイン類似度(TF-IDF)
5. ElasticSearch BM25スコア
6. ベクトル類似度(将来のRAG対応)

RAG/MCP対応アーキテクチャ設計

// 拡張可能なプラグインアーキテクチャ
interface DocumentProcessor {
  extract(content: string): ExtractedData;
  vectorize?(content: string): number[];  // RAG対応
  analyze(content: string, context?: MCPContext): AnalysisResult;
}

interface MCPContext {
  modelEndpoint?: string;
  contextWindow?: number;
  retrievalStrategy?: 'similarity' | 'keyword' | 'hybrid';
}

// 将来の拡張ポイント
class AdvancedCopyChecker {
  async checkWithRAG(content: string): Promise<RAGResult> {
    // 1. ベクトル化
    // 2. 類似文書取得
    // 3. LLM による判定
  }
  
  async checkWithMCP(content: string, mcpConfig: MCPContext): Promise<MCPResult> {
    // MCP プロトコルによる高度な判定
  }
}

キーワード抽出エンジン

// 実装すべき機能
class KeywordExtractor {
  // 1. 形態素解析(kuromoji.js)
  extractMorphemes(text: string): MorphemeResult[];
  
  // 2. TF-IDF計算
  calculateTFIDF(documents: Document[]): TFIDFResult[];
  
  // 3. 固有名詞抽出
  extractNamedEntities(text: string): NamedEntity[];
  
  // 4. 専門用語抽出
  extractTechnicalTerms(text: string, domain?: string): TechnicalTerm[];
  
  // 5. ElasticSearchへの登録
  async indexToElasticsearch(document: ProcessedDocument): Promise<void>;
}

設定可能なパラメータ

  • 類似度判定しきい値(デフォルト:0.8)
  • 文章分割の最大文字数(デフォルト:80)
  • データ保持期間(デフォルト:1年)
  • 除外する定型文パターン

デプロイメント要件

Docker構成

# docker-compose.yml
version: '3.8'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - ELASTICSEARCH_URL=http://elasticsearch:9200
      - DATABASE_PATH=/data/app.db
    volumes:
      - ./data:/data
    depends_on:
      - elasticsearch
  
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0
    environment:
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms2g -Xmx2g"
      - xpack.security.enabled=false  # 社内環境用
    ports:
      - "9200:9200"
    volumes:
      - es_data:/usr/share/elasticsearch/data
  
  kibana:
    image: docker.elastic.co/kibana/kibana:8.11.0
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    depends_on:
      - elasticsearch

  # 将来のRAG対応
  vector-db:
    image: qdrant/qdrant:latest
    ports:
      - "6333:6333"
    volumes:
      - qdrant_data:/qdrant/storage
    # コメントアウトしておき、RAG実装時に有効化

volumes:
  es_data:
  qdrant_data:

本番環境向けセキュリティ設定

# マルチステージビルドでの最適化
# ElasticSearch セキュリティ設定
# 環境変数による設定管理

運用要件

  • バックアップ: 日次自動バックアップ
  • ログローテーション: 月次ログアーカイブ
  • モニタリング: システム使用状況監視
  • アップデート: 段階的デプロイ機能

追加考慮事項

1. パフォーマンス最適化

  • 大量文書検索の高速化
  • インデックス最適化
  • キャッシュ機能

2. 拡張性

  • 部署別権限管理
  • 外部システム連携API
  • プラグイン機能
  • RAG統合準備(ベクトルDB、エンベッディング)
  • MCP対応(Model Context Protocol)
  • LLM統合インターフェース

3. 高度な検索・分析

  • ElasticSearch アナリティクス
  • キーワードトレンド分析
  • 文書類似性ネットワーク
  • セマンティック検索準備

3. ユーザビリティ

  • ヘルプ機能
  • チュートリアル
  • ショートカットキー対応

開発の進め方

  1. 要件確認: 上記仕様で開発開始してよいか確認
  2. MVP開発: 基本機能のみで最小viable product作成
  3. 段階的機能追加: フィードバックを受けて機能拡張
  4. セキュリティ監査: 外部専門家による安全性確認
  5. 本番デプロイ: 段階的ロールアウト

想定される課題と対策

課題1: 外部検索なしでの精度

対策: 社内文書データベースの充実、継続的な学習機能

課題2: 大量データの処理速度

対策: 分散処理、インデックス最適化、キューイングシステム

課題3: ElasticSearchのリソース管理

対策: 適切なインデックス設計、定期的なメンテナンス、クラスター監視

課題4: 将来のRAG/MCP統合

対策: プラグインアーキテクチャ、疎結合設計、段階的機能追加

課題5: 日本語処理精度

対策: kuromoji形態素解析器、専門用語辞書、継続的チューニング

課題6: ユーザー教育

対策: 直感的UI、ヘルプ機能、定期的な使い方説明会


開始コマンド例:

# ClaudeCodeでの実行例
claude-code "ElasticSearchを統合した高度な社内コピペチェックツールを開発してください。キーワード自動抽出、ファジー検索、将来のRAG/MCP対応を見据えたプラグインアーキテクチャで実装してください。まずはDocker Compose環境とElasticSearchクラスターのセットアップから始めてください。"

# 段階的開発の場合
claude-code "Phase 1: Docker Compose + ElasticSearch + 基本UIの環境構築から開始してください。日本語対応のkuromoji設定も含めてください。"

将来のRAG/MCP統合ロードマップ

Phase A: RAG統合(6ヶ月後)

# 実装予定機能
- sentence-transformers による文書ベクトル化
- Qdrant/Weaviate ベクトルデータベース
- セマンティック類似検索
- 類似文書自動検出・分類

Phase B: MCP統合(1年後)

# 実装予定機能
- Claude/GPT との MCP接続
- 高度なコンテキスト理解による判定
- 自然言語による検索・分析
- インテリジェントな重複判定

Discussion