Skip to content

[Epic] JavaScriptレンダリング機能の実装 #46

@aoshimash

Description

@aoshimash

🎭 JavaScriptレンダリング機能実装 Epic

概要

現在のurlmapは静的HTMLのみを取得するため、SPA(Single Page Application)や動的コンテンツを含むWebサイトから完全なリンクを発見できません。JavaScriptレンダリング機能を追加して、JavaScript実行後の完全なHTMLを取得できるようにします。

背景・課題

現在の制限

  • 静的HTMLのみ: Restyクライアントによる従来のHTTP取得
  • SPA未対応: React、Vue、Angular等で動的生成されるリンクを発見できない
  • 具体例: HashiCorp Developer サイトでメインページから6個のリンクのみ発見(実際は50+個存在)

期待される効果

現在: https://developer.hashicorp.com/terraform/cloud-docs/
├─ /agents (発見済み)
└─ /vcs/github-enterprise (未発見 ❌)

JS後: https://developer.hashicorp.com/terraform/cloud-docs/
├─ /agents (発見済み)
├─ /vcs/github-enterprise (発見 ✅)
├─ /api/
├─ /workspaces/
└─ 50+個のナビゲーションリンク

実装方針

配布方法

  1. Dockerコンテナ配布(メイン): 依存関係を完全に解決
  2. オプション機能として提供: --js-renderフラグで有効化

技術スタック

  • ライブラリ: github.com/playwright-community/playwright-go
  • ブラウザ: Chromium (デフォルト)
  • 配布: Docker multi-stage build

関連Issue

Phase 1: 基本実装 (2週間)

Phase 2: Docker化 (1週間)

Phase 3: 最適化 (2週間)

Phase 4: 完成 (1週間)

成功指標

機能指標

  • HashiCorp Developer サイトで50+個のリンク発見
  • React/Vue/Angularサイトでの正常動作
  • 既存の静的サイトでの性能劣化なし

パフォーマンス指標

  • 静的サイト: ~100ms/page (変更なし)
  • JSサイト: ~2-5s/page (初回ブラウザ起動込み)
  • メモリ使用量: <500MB (ブラウザ込み)

実装スケジュール

Phase 1: 基本実装 ✅ 完了

基本的なJavaScriptレンダリング機能とCLI統合

Phase 2: Docker化 🔄 進行中

本格的な配布環境の構築

Phase 3: 最適化 📋 計画中

自動検出機能とパフォーマンス改善

Phase 4: 完成 📋 計画中

ドキュメント作成とテスト完了

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions