JA Architecture Technology Stack - hiraishikentaro/rails-factorybot-jump GitHub Wiki

アーキテクチャ: 技術スタック

コア技術

プライマリ言語

  • TypeScript 5.3.3 - 型安全性と最新の JavaScript 機能を提供する主要開発言語
  • ターゲット: 最新のランタイム機能のための ES2020
  • モジュールシステム: CommonJS(VSCode 拡張機能で必須)

ソース: package.json#L89, tsconfig.json#L4

ランタイム環境

  • Node.js 18.x - JavaScript ランタイム環境
  • VSCode Extension Host - VSCode 拡張機能用の特殊ランタイム
  • Electron - VSCode の基盤プラットフォーム

ソース: package.json#L79

VSCode 統合

拡張機能 API

  • VSCode Extension API 1.85.0+ - コアプラットフォーム統合
  • ドキュメントリンクプロバイダー - クリック可能リンク作成のインターフェース
  • ファイルシステムウォッチャー - リアルタイムファイル変更監視
  • コマンド API - カスタムコマンド登録と実行
  • 設定 API - 設定統合

ソース: package.json#L9, src/extension.ts

拡張機能設定

  • アクティベーションイベント: onLanguage:ruby - Ruby ファイルが開かれたときにアクティベート
  • ドキュメントリンクプロバイダー: file スキームと ruby 言語に登録
  • コマンド: カスタムナビゲーションコマンド
  • 設定スキーマ: 設定検証用の JSON スキーマ

ソース: package.json#L35-L66

開発ツール

TypeScript ツールチェーン

  • TypeScript コンパイラー - ソースコードコンパイル
  • ソースマップ - デバッグサポート
  • ストリクトモード - 強化された型チェックと安全性
  • ES モジュール相互運用 - モジュール互換性

ソース: tsconfig.json#L9

コード品質

  • ESLint 8.56.0 - コード品質とスタイル強制
  • @typescript-eslint - TypeScript 固有のリンティングルール
  • パーサー: 正確なコード解析のための TypeScript ESLint パーサー
  • プラグイン: TypeScript 対応ルール用の TypeScript ESLint プラグイン

ソース: package.json#L82-L83

テストインフラストラクチャ

テストフレームワーク

  • Mocha 10.8.2 - JavaScript テストフレームワーク
  • @vscode/test-electron 2.4.1 - VSCode 拡張テスト環境
  • Sinon 17.0.1 - テスト用のモックとスタブフレームワーク

ソース: package.json#L78,L84,L88

テスト環境

  • VSCode テストランナー - 実際の VSCode 環境でテストを実行
  • Electron テスト環境 - 完全な VSCode API での現実的なテスト
  • ヘッドレステスト - GUI なしの自動テスト(CI/CD)

ソース: src/test/runTest.ts

ファイルシステムとパターンマッチング

パターンマッチング

  • Glob 8.1.0 - ファクトリー検出用のファイルパターンマッチング
  • 組み込み正規表現 - ファクトリーとトレイトパターン検出
  • VSCode ワークスペース API - ファイルシステムアクセスと監視

ソース: package.json#L86

パス処理

  • POSIX パス - クロスプラットフォームパス互換性
  • Glob パターン - 柔軟なファイルマッチング(**/*.rb
  • ワークスペース相対 - VSCode ワークスペース相対のパス

ターゲット言語とフレームワーク

サポート言語

  • Ruby - プライマリターゲット言語
  • FactoryBot DSL - 特定の Ruby テストフレームワーク構文
  • RSpec/Minitest - 主要な Ruby テストフレームワークと互換性

Ruby 統合

  • ファクトリー検出 - FactoryBot ファクトリー定義を認識
  • トレイトサポート - ファクトリートレイトとバリエーションをサポート
  • メソッド認識 - 様々な FactoryBot メソッド(createbuild など)を検出

ビルドシステム

コンパイル

  • TypeScript コンパイラー - TypeScript を JavaScript にトランスパイル
  • 出力ディレクトリ: out/ - コンパイル済み JavaScript ファイル
  • ウォッチモード - 開発中の自動再コンパイル
  • ソースマップ - 開発でのデバッグサポート

ビルドスクリプト

npm run compile     # 一回限りのコンパイル
npm run watch       # ファイル監視での開発
npm run pretest     # プリテストコンパイルとリンティング
npm run vscode:prepublish  # プロダクションビルド

ソース: package.json#L68-L76

パッケージ管理

依存関係管理

  • npm - Node.js 依存関係用のパッケージマネージャー
  • package-lock.json - 再現可能なビルドのための正確なバージョンロック
  • セマンティックバージョニング - バージョン互換性管理

開発依存関係

  • すべての依存関係は開発専用(ランタイム依存関係なし)
  • テストフレームワークとツール
  • TypeScript コンパイルツール
  • コード品質ツール

ソース: package.json#L77-L90

デプロイ技術

拡張機能配布

  • VSCode Marketplace - プライマリ配布チャンネル
  • VSIX パッケージ - 拡張機能パッケージング形式
  • 拡張機能マニフェスト - package.json 設定

バージョン管理

  • セマンティックバージョニング - バージョン番号体系
  • 拡張機能ギャラリー - VSCode 拡張機能マーケットプレイス統合
  • パブリッシャー ID - マーケットプレイスでの hir4ken パブリッシャー

ソース: package.json#L7

プラットフォーム互換性

オペレーティングシステム

  • Windows - Windows 固有のパス処理での完全互換性
  • macOS - ネイティブ macOS サポート
  • Linux - ヘッドレステストサポート付きの Linux 互換性

クロスプラットフォーム考慮事項

  • パス正規化 - 一貫性のための POSIX パス
  • ファイルシステム API - クロスプラットフォーム互換性のための VSCode 抽象化レイヤー
  • CI/CD テスト - マルチプラットフォーム自動テスト

パフォーマンス技術

最適化戦略

  • 遅延読み込み - オンデマンドでファクトリーファイルを読み込み
  • インメモリキャッシング - 高速 Map ベース検索
  • 増分更新 - ファイル変更時の対象を絞ったキャッシュ更新
  • コンパイル済み正規表現 - パフォーマンス用のプリコンパイルパターン

メモリ管理

  • Map データ構造 - キャッシュ用の効率的なキー値ストレージ
  • 弱参照 - 適用可能な場合のメモリ効率
  • クリーンアップハンドラー - 非アクティベーション時の適切なリソース破棄

セキュリティ考慮事項

ファイルシステムセキュリティ

  • ワークスペース境界 - VSCode ワークスペースに制限
  • 読み取り専用アクセス - ファクトリーファイルの読み取りのみ、変更なし
  • ネットワークアクセスなし - 純粋にローカルファイルシステム操作
  • VSCode セキュリティモデル - VSCode のセキュリティ制限を継承

将来の技術考慮事項

潜在的な拡張

  • Language Server Protocol - より高度な Ruby 言語機能用
  • Tree Sitter - より堅牢な Ruby 解析
  • WebAssembly - パフォーマンス重要な操作
  • マルチ言語サポート - 他のファクトリーフレームワークへの拡張

スケーラビリティ

  • 大規模コードベース - 多くのファクトリーファイルを持つプロジェクトを処理するよう設計
  • メモリ効率 - プロジェクトサイズに応じてスケール
  • パフォーマンス監視 - 組み込みパフォーマンス考慮事項

技術決定の根拠

TypeScript 選択

  • 型安全性 - ランタイムエラーを削減
  • 開発者体験 - より良いツールと IDE サポート
  • VSCode エコシステム - VSCode 拡張開発に自然にフィット
  • 保守性 - 保守とリファクタリングが容易

アーキテクチャパターン

  • プロバイダーパターン - 関心の明確な分離
  • イベント駆動 - ファイル監視によるリアクティブ更新
  • キャッシング戦略 - メモリとパフォーマンスのバランス
  • 遅延初期化 - より良い起動パフォーマンス