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 - テスト用のモックとスタブフレームワーク
テスト環境
- 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 メソッド(
create
、build
など)を検出
ビルドシステム
コンパイル
- 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 拡張開発に自然にフィット
- 保守性 - 保守とリファクタリングが容易
アーキテクチャパターン
- プロバイダーパターン - 関心の明確な分離
- イベント駆動 - ファイル監視によるリアクティブ更新
- キャッシング戦略 - メモリとパフォーマンスのバランス
- 遅延初期化 - より良い起動パフォーマンス