> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wyrly.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 概要

> Wyrly DI とは何か、どんなときに使うべきか。

Wyrly DI は、モダンな TypeScript アプリ向けの小さな依存性注入ツールキットです。

実行時の型推測ではなく、明示的な依存の組み立てを重視します。アプリケーションは必要な
依存関係を宣言し、composition root で具体的なプロバイダーを登録し、コンテナまたは
リクエストスコープから use case を解決します。

## Wyrly を選ぶとき

次のものが必要なら Wyrly を選んでください。

* 標準デコレーターで動く TypeScript DI
* インターフェースベースの依存関係のための型付きトークン
* Web アプリ向けリクエストスコープ
* フレームワークに依存しないコアパッケージ
* CI 向けの依存グラフ検査と検証
* DDD や Clean Architecture と相性のよい設計スタイル

## Wyrly を選ばないとき

Wyrly は full application framework や NestJS clone を目指していません。

意図的に避けているもの:

* コンストラクタ型メタデータの自動取得
* legacy decorators
* parameter decorators
* グローバルコンテナの自動設定
* 自動スキャンや glob 登録
* コアパッケージにおけるフレームワーク密結合

## アーキテクチャとの相性

Wyrly はドメインとアプリケーションコードをフレームワークの詳細から独立させます。

```ts theme={null}
interface UserRepository {
  findById(id: string): Promise<User | null>;
}

const UserRepositoryToken = token<UserRepository>("UserRepository");
```

ドメイン側の契約はアプリケーション層に残し、具体的な実装はインフラのコードに置いて、アプリの外側で組み合わせられます。

## 次のステップ

* [Installation](/ja/getting-started/installation) で core package をインストールする
* [Quickstart](/ja/getting-started/quickstart) で最初の container を作る
* [Core model](/ja/concepts/core-model) の考え方を学ぶ
