structure-extensions.md 31.2 KB
Newer Older
Nobuo Kihara committed
1 2 3
エクステンション
================

4 5 6
エクステンションは、Yii のアプリケーションで使われることに限定して設計され、そのまますぐに使える機能を提供する再配布可能なソフトウェアパッケージです。
例えば、[yiisoft/yii2-debug](tool-debugger.md) エクステンションは、あなたのアプリケーションにおいて、全てのページの末尾に便利なデバッグツールバーを追加して、ページが生成される過程をより容易に把握できるように手助けしてくれます。
エクステンションを使うと、あなたの開発プロセスを加速することが出来ます。
Nobuo Kihara committed
7 8 9 10 11 12 13
また、あなたのコードをエクステンションとしてパッケージ化すると、あなたの優れた仕事を他の人たちと共有することが出来ます。

> Info|情報: 「エクステンション」という用語は Yii に限定されたソフトウェアパッケージを指すものとして使用します。
  Yii がなくても使用できる汎用のソフトウェアパッケージを指すためには、「パッケージ」または「ライブラリ」という用語を使うことにします。

## エクステンションを使う <a name="using-extensions"></a>

14 15
エクステンションを使うためには、先ずはそれをインストールする必要があります。
ほとんどのエクステンションは [Composer](https://getcomposer.org/) のパッケージとして配布されていて、次の二つの簡単なステップをふめばインストールすることが出来ます。
Nobuo Kihara committed
16 17 18 19 20 21

1. アプリケーションの `composer.json` ファイルを修正して、どのエクステンション (Composer パッケージ) をインストールしたいかを指定する。
2. `composer install` コマンドを走らせて指定したエクステンションをインストールする。

[Composer](https://getcomposer.org/) を持っていない場合は、それをインストールする必要があることに注意してください。

22 23 24 25
既定では、Composer は [Packagist](https://packagist.org/) に登録されたパッケージをインストールします。
Packagist はオープンソース Composer パッケージの最大のレポジトリであり、そこでエクステンションを探すことが出来ます。
また、[自分自身のレポジトリを作成](https://getcomposer.org/doc/05-repositories.md#repository) して、それを使うように Composer を構成することも出来ます。
これは、あなたがプライベートなエクステンションを開発していて、それを自分のプロジェクト間でのみ共有したい場合に役に立つ方法です。
Nobuo Kihara committed
26

27 28 29
Composer によってインストールされるエクステンションは `BasePath/vendor` ディレクトリに保存されます。
ここで `BasePath` は、アプリケーションの [ベースパス](structure-applications.md#basePath) を指します。
Composer は依存関係を管理するものですから、あるパッケージをインストールするときには、それが依存する全てのパッケージも同時にインストールします。
Nobuo Kihara committed
30

31
例えば、`yiisoft/yii2-imagine` エクステンションをインストールするためには、あなたの `composer.json` を次のように修正します。
Nobuo Kihara committed
32 33 34 35 36 37 38 39 40 41 42 43 44

```json
{
    // ...

    "require": {
        // ... 他の依存パッケージ

        "yiisoft/yii2-imagine": "*"
    }
}
```

45 46
インストール完了後には、`BasePath/vendor` の下に `yiisoft/yii2-imagine` ディレクトリが作られている筈です。
それと同時に、`imagine/imagine` という別のディレクトリも作られて、依存するパッケージがそこにインストールされている筈です。
Nobuo Kihara committed
47 48 49 50 51 52 53

> Info|情報: `yiisoft/yii2-imagine` は Yii 開発チームによって開発され保守されるコアエクステンションの一つです。
  全てのコアエクステンションは [Packagist](https://packagist.org/) でホストされ、`yiisoft/yii2-xyz` のように名付けられます。
  ここで `xyz` はエクステンションによってさまざまに変ります。

これであなたはインストールされたエクステンションをあなたのアプリケーションの一部であるかのように使うことが出来ます。
次の例は、`yiisoft/yii2-imagine` エクステンションによって提供される `yii\imagine\Image` クラスをどのようにして使うことが
54
出来るかを示すものです。
Nobuo Kihara committed
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70

```php
use Yii;
use yii\imagine\Image;

// サムネール画像を生成する
Image::thumbnail('@webroot/img/test-image.jpg', 120, 120)
    ->save(Yii::getAlias('@runtime/thumb-test-image.jpg'), ['quality' => 50]);
```

> Info|情報: エクステンションのクラスは [Yii クラスオートローダ](concept-autoloading.md) によってオートロードされます。


### エクステンションを手作業でインストールする <a name="installing-extensions-manually"></a>

あまり無いことですが、いくつかまたは全てのエクステンションを Composer に頼らずに手作業でインストールしたい場合があるかもしれません。
71
そうするためには、次のようにしなければなりません。
Nobuo Kihara committed
72 73 74 75 76

1. エクステンションのアーカイブファイルをダウンロードして、`vendor` ディレクトリに解凍する。
2. もし有れば、エクステンションによって提供されているクラスオートローダをインストールする。
3. 指示に従って、依存するエクステンションを全てダウンロードしインストールする。

77 78 79 80 81 82
エクステンションがクラスオートローダを持っていなくても、[PSR-4 標準](http://www.php-fig.org/psr/psr-4/)
に従っている場合は、Yii によって提供されているクラスオートローダを使ってエクステンションのクラスをオートロードすることが出来ます。
必要なことは、エクステンションのルートディレクトリのための [ルートエイリアス](concept-aliases.md#defining-aliases) を宣言することだけです。
例えば、エクステンションを `vendor/mycompany/myext` というディレクトリにインストールしたと仮定します。
そして、エクステンションのクラスは `myext` 名前空間の下にあるとします。
その場合、アプリケーションのコンフィギュレーションに下記のコードを含めれば良いのです。
Nobuo Kihara committed
83 84 85 86 87 88 89 90 91 92 93 94 95

```php
[
    'aliases' => [
        '@myext' => '@vendor/mycompany/myext',
    ],
]
```


## エクステンションを作成する <a name="creating-extensions"></a>

あなたの優れたコードを他の人々と共有する必要があると感じたときは、エクステンションを作成することを考慮するのが良いでしょう。
96
エクステンションは、ヘルパクラス、ウィジェット、モジュールなど、どのようなコードでも含むことが出来ます。
Nobuo Kihara committed
97

98 99
エクステンションは、[Composer パッケージ](https://getcomposer.org/) の形式で作成することが推奨されます。
そうすれば、直前の項で説明したように、いっそう容易に他のユーザによってインストールされ、使用されることが出来ます。
Nobuo Kihara committed
100 101 102

以下は、エクステンションを Composer のパッケージとして作成するために踏む基本的なステップです。

103
1. エクステンションのためのプロジェクトを作成して、[github.com](https://github.com) などの VCS レポジトリ上でホストします。
Nobuo Kihara committed
104
   エクステンションに関する開発と保守の作業はこのレポジトリ上でなされなければならない。
105 106 107 108
2. プロジェクトのルートディレクトリに、Composer によって要求される `composer.json` という名前のファイルを作成します。
   詳細については、次の項を参照してください。
3. エクステンションを [Packagist](https://packagist.org/) などの Composer レポジトリに登録します。
   そうすると、他のユーザがエクステンションを見つけて Composer を使ってインストールすることが出来るようになります。
Nobuo Kihara committed
109 110 111 112


### `composer.json` <a name="composer-json"></a>

113 114 115 116
全ての Composer パッケージは、ルートディレクトリに `composer.json` というファイルを持たなければなりません。
このファイルはパッケージに関するメタデータを含むものです。
このファイルに関する完全な仕様は [Composer Manual](https://getcomposer.org/doc/01-basic-usage.md#composer-json-project-setup) に記載されています。
次の例は、`yiisoft/yii2-imagine` エクステンションのための `composer.json` ファイルを示すものです。
Nobuo Kihara committed
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161

```json
{
    // パッケージ名
    "name": "yiisoft/yii2-imagine",

    // パッケージタイプ
    "type": "yii2-extension",

    "description": "The Imagine integration for the Yii framework",
    "keywords": ["yii2", "imagine", "image", "helper"],
    "license": "BSD-3-Clause",
    "support": {
        "issues": "https://github.com/yiisoft/yii2/issues?labels=ext%3Aimagine",
        "forum": "http://www.yiiframework.com/forum/",
        "wiki": "http://www.yiiframework.com/wiki/",
        "irc": "irc://irc.freenode.net/yii",
        "source": "https://github.com/yiisoft/yii2"
    },
    "authors": [
        {
            "name": "Antonio Ramirez",
            "email": "amigo.cobos@gmail.com"
        }
    ],

    // 依存パッケージ
    "require": {
        "yiisoft/yii2": "*",
        "imagine/imagine": "v0.5.0"
    },

    // クラスのオートロードの仕様
    "autoload": {
        "psr-4": {
            "yii\\imagine\\": ""
        }
    }
}
```


#### パッケージ名 <a name="package-name"></a>

全ての Composer パッケージは、他の全てパッケージに対して唯一のものとして特定できるような名前を持たなければなりません。
162 163
パッケージ名の形式は `vendorName/projectName` です。
例えば、`yiisoft/yii2-imagine` というパッケージ名の中では、ベンダー名とプロジェクト名は、それぞれ、`yiisoft``yii2-imagine` です。
Nobuo Kihara committed
164 165 166 167 168 169 170 171 172

ベンダー名として `yiisoft` を使ってはいけません。これは Yii のコアコードに使うために予約されています。

プロジェクト名には、Yii 2 エクステンションを表す `yii2-` を前置することを推奨します。例えば、`myname/yii2-mywidget` です。
このようにすると、ユーザはパッケージが Yii 2 エクステンションであることをより容易に知ることが出来ます。


#### パッケージタイプ <a name="package-type"></a>

173
パッケージがインストールされたときに Yii のエクステンションとして認識されるように、エクステンションのパッケージタイプを `yii2-extension` と指定することは重要なことです。
Nobuo Kihara committed
174

175 176 177
ユーザが `composer install` を走らせてエクステンションをインストールすると、`vendor/yiisoft/extensions.php` というファイルが自動的に更新されて、新しいエクステンションに関する情報を含むようになります。
このファイルから、Yii のアプリケーションはどんなエクステンションがインストールされているかを知ることが出来ます
(その情報には、[[yii\base\Application::extensions]] を通じてアクセス出来ます)。
Nobuo Kihara committed
178 179 180 181


#### 依存パッケージ <a name="dependencies"></a>

182 183 184 185 186
あなたのエクステンションは Yii に依存します (当然ですね)。
ですから、`composer.json``require` エントリのリストにそれ (`yiisoft/yii2`) を挙げなければなりません。
あなたのエクステンションがその他のエクステンションやサードパーティのライブラリに依存する場合は、それらもリストに挙げなければなりません。
それぞれの依存パッケージについて、適切なバージョン制約 (例えば `1.*``@stable`) を指定することも忘れてはなりません。
あなたのエクステンションを安定バージョンとしてリリースする場合は、安定した依存パッケージを使ってください。
Nobuo Kihara committed
187

188 189 190
たいていの JavaScript/CSS パッケージは、Composer ではなく、[Bower](http://bower.io/) および/または [NPM](https://www.npmjs.org/) を使って管理されています。
Yii は [Composer アセットプラグイン](https://github.com/francoispluchino/composer-asset-plugin) を使って、この種のパッケージを Composer によって管理することを可能にしています。
あなたのエクステンションが Bower パッケージに依存している場合でも、次のように、`composer.json` に依存パッケージをリストアップすることが簡単に出来ます。
Nobuo Kihara committed
191 192 193 194 195 196 197 198 199 200

```json
{
    // 依存パッケージ
    "require": {
        "bower-asset/jquery": ">=1.11.*"
    }
}
```

201 202 203 204
上記のコードは、エクステンションが `jquery` Bower パッケージに依存することを述べています。
一般に、`composer.json` の中でBower パッケージを指すためには `bower-asset/PackageName` を使うことが出来ます。
そして、NPM パッケージを指すためには `npm-asset/PackageName` を使うことが出来ます。
Composer が Bower または NPM のパッケージをインストールする場合は、既定では、それぞれ、`@vendor/bower/PackageName` および `@vendor/npm/Packages` というディレクトリの下にパッケージの内容がインストールされます。
Nobuo Kihara committed
205 206
この二つのディレクトリは、`@bower/PackageName` および `@npm/PackageName` という短いエイリアスを使って参照することも可能です。

207
アセット管理に関する詳細については、[アセット](structure-assets.md#bower-npm-assets) の節を参照してください。
Nobuo Kihara committed
208 209 210 211


#### クラスのオートロード <a name="class-autoloading"></a>

212
エクステンションのクラスが Yii のクラスオートローダまたは Composer のクラスオートローダによってオートロードされるように、下記に示すように、`composer.json` ファイルの `autoload` エントリを指定しなければなりません。
Nobuo Kihara committed
213 214 215 216 217 218 219 220 221 222 223 224 225 226 227

```json
{
    // ....

    "autoload": {
        "psr-4": {
            "yii\\imagine\\": ""
        }
    }
}
```

一つまたは複数のルート名前空間と、それに対応するファイルパスをリストに挙げることが出来ます。

228
エクステンションがアプリケーションにインストールされると、Yii は列挙されたルート名前空間の一つ一つに対して、名前空間に対応するディレクトリを指す [エイリアス](concept-aliases.md#extension-aliases) を作成します。
Nobuo Kihara committed
229 230 231
例えば、上記の `autoload` の宣言は、`@yii/imagine` という名前のエイリアスに対応することになります。


232
### 推奨されるプラクティス <a name="recommended-practices"></a>
Nobuo Kihara committed
233 234

エクステンションは他の人々によって使われることを意図したものですから、多くの場合、追加の開発努力が必要になります。
235
以下に、高品質のエクステンションを作成するときによく用いられ、また推奨されるプラクティスのいくつかを紹介します。
Nobuo Kihara committed
236 237 238 239


#### 名前空間 <a name="namespaces"></a>

240 241
名前の衝突を避けて、エクステンションの中のクラスをオートロード可能にするために、名前空間を使うべきであり、エクステンションの中のクラスに
[PSR-4 標準](http://www.php-fig.org/psr/psr-4/) または [PSR-0 標準](http://www.php-fig.org/psr/psr-0/) に従った名前を付けるべきです。
Nobuo Kihara committed
242

243 244 245
あなたのクラスの名前空間は `vendorName\extensionName` で始まるべきです。
ここで `extensionName` は、`yii2-` という接頭辞を含むべきでないことを除けば、パッケージ名におけるプロジェクト名と同じものです。
例えば、`yiisoft/yii2-imagine` エクステンションでは、`yii\imagine` をエクステンションのクラスの名前空間として使っています。
Nobuo Kihara committed
246 247 248 249 250 251

`yii``yii2` または `yiisoft` をベンダー名として使ってはいけません。これらの名前は、Yii のコアコードに使うために予約されています。


#### ブートストラップクラス <a name="bootstrapping-classes"></a>

252 253 254
場合によっては、アプリケーションが [ブートストラップ](runtime-bootstrapping.md) の段階にある間に、エクステンションに何らかのコードを実行させたい場合があるでしょう。
例えば、エクステンションをアプリケーションの `beginRequest` イベントに反応させて、何らかの環境設定を調整したいことがあります。
エクステンションのユーザに対して、エクステンションの中にあるイベントハンドラを `beginRequest` イベントに明示的にアタッチするように指示することも出来ますが、より良い方法は、それを自動的に行うことです。
Nobuo Kihara committed
255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287

この目的を達するためには、[[yii\base\BootstrapInterface]] を実装する、いわゆる *ブートストラップクラス* を作成します。
例えば、

```php
namespace myname\mywidget;

use yii\base\BootstrapInterface;
use yii\base\Application;

class MyBootstrapClass implements BootstrapInterface
{
    public function bootstrap($app)
    {
        $app->on(Application::EVENT_BEFORE_REQUEST, function () {
             // ここで何かをする
        });
    }
}
```

そして、次のように、このクラスを `composer.json` ファイルのリストに挙げます。

```json
{
    // ...

    "extra": {
        "bootstrap": "myname\\mywidget\\MyBootstrapClass"
    }
}
```

288 289
このエクステンションがアプリケーションにインストールされると、すべてのリクエストのブートストラップの過程において、毎回、Yii
が自動的にブートストラップクラスのインスタンスを作成し、その [[yii\base\BootstrapInterface::bootstrap()|bootstrap()]] メソッドを呼びます。
Nobuo Kihara committed
290 291 292 293


#### データベースを扱う <a name="working-with-databases"></a>

294 295 296 297 298
あなたのエクステンションはデータベースにアクセスする必要があるかも知れません。
エクステンションを使うアプリケーションが常に `Yii::$db` を DB 接続として使用すると仮定してはいけません。
その代りに、DB アクセスを必要とするクラスのために `db` プロパティを宣言すべきです。
このプロパティによって、エクステンションのユーザは、エクステンションにどの DB 接続を使わせるかをカスタマイズすることが出来るようになります。
その一例として、[[yii\caching\DbCache]] クラスを参照して、それがどのように `db` プロパティを宣言して使っているかを見ることが出来ます。
Nobuo Kihara committed
299 300 301 302 303 304 305 306 307 308

あなたのエクステンションが特定の DB テーブルを作成したり、DB スキーマを変更したりする必要がある場合は、次のようにするべきです。

- DB スキーマを操作するために、平文の SQL ファイルを使うのではなく、[マイグレーション](db-migrations.md) を提供する。
- マイグレーションをさまざまな DBMS に適用可能なものするように努める。
- マイグレーションの中では [アクティブレコード](db-active-record.md) の使用を避ける。


#### アセットを使う <a name="using-assets"></a>

309 310 311 312
あなたのエクステンションがウィジェットかモジュールである場合は、動作するために何らかの [アセット](structure-assets.md) が必要である可能性が高いでしょう。
例えば、モジュールは、画像、JavaScript、そして CSS を含むページをいくつか表示するでしょう。
エクステンションのファイルは、全て、アプリケーションにインストールされるときに、ウェブからアクセス出来ない同じディレクトリの下に配置されます。
そのため、次のどちらかの方法を使って、アセットファイルをウェブから直接アクセス出来るようにしなければなりません。
Nobuo Kihara committed
313 314

- アセットファイルをウェブからアクセス出来る特定のフォルダに手作業でコピーするように、エクステンションのユーザにお願いする。
315
- [アセットバンドル](structure-assets.md) を宣言し、アセット発行メカニズムに頼って、アセットバンドルにリストされているファイルをウェブからアクセス出来るフォルダに自動的にコピーする。
Nobuo Kihara committed
316 317

あなたのエクステンションが他の人々にとってより一層使いやすいものになるように、第二の方法をとることを推奨します。
318
アセットの取り扱い一般に関する詳細は [アセット](structure-assets.md) の節を参照してください。
Nobuo Kihara committed
319 320 321 322


#### 国際化と地域化 <a name="i18n-l10n"></a>

323 324 325
あなたのエクステンションは、さまざまな言語をサポートするアプリケーションによって使われるかもしれません。
従って、あなたのエクステンションがエンドユーザにコンテンツを表示するものである場合は、それを [国際化](tutorial-i18n.md) するように努めるべきです。
具体的には、
Nobuo Kihara committed
326

327 328
- エクステンションがエンドユーザに向けたメッセージを表示する場合は、翻訳することが出来るようにメッセージを `Yii::t()` で包むべきです。
  開発者に向けられたメッセージ (内部的な例外のメッセージなど) は翻訳される必要はありません。
Nobuo Kihara committed
329 330
- エクステンションが数値や日付などを表示する場合は、[[yii\i18n\Formatter]] を適切な書式化の規則とともに使って書式設定すべきです。

331
詳細については、[国際化](tutorial-i18n.md) の節を参照してください。
Nobuo Kihara committed
332 333 334 335


#### テスト <a name="testing"></a>

336 337
あなたは、あなたのエクステンションが他の人々に問題をもたらすことなく完璧に動作することを望むでしょう。
この目的を達するためには、あなたのエクステンションを公開する前にテストすべきです。
Nobuo Kihara committed
338 339

手作業のテストに頼るのではなく、あなたのエクステンションのコードをカバーするさまざまなテストケースを作成することが推奨されます。
340 341 342
あなたのエクステンションの新しいバージョンを公開する前には、毎回、単にそれらのテストケースを走らせれば、全てが良い状態にあることを確認することが出来ます。
Yii はテストのサポートを提供しており、それよって、ユニットテスト、機能テスト、承認テストを書くことが一層簡単に出来るようになっています。
詳細については、[テスト](test-overview.md) の節を参照してください。
Nobuo Kihara committed
343 344 345 346 347


#### バージョン管理 <a name="versioning"></a>

エクステンションのリリースごとにバージョン番号 (例えば `1.0.1`) を付けるべきです。
348
どのようなバージョン番号を付けるべきかを決定するときは、[セマンティックバージョニング](http://semver.org) のプラクティスに従うことを推奨します。
Nobuo Kihara committed
349 350 351 352 353 354


#### リリース(公開) <a name="releasing"></a>

他の人々にあなたのエクステンションを知ってもらうためには、それをリリース(公開)する必要があります。

355 356 357
エクステンションをリリースするのが初めての場合は、[Packagist](https://packagist.org/) などの Composer レポジトリにエクステンションを登録するべきです。
その後は、あなたがしなければならない仕事は、エクステンションの VCS レポジトリでリリースタグ (例えば `v1.0.1`) を作成することと、Composer レポジトリに新しいリリースについて通知するだけのことになります。
そうすれば、人々が新しいリリースを見出すことが出来るようになり、Composer レポジトリを通じてエクステンションをインストールしたりアップデートしたりするようになります。
Nobuo Kihara committed
358

359
エクステンションのリリースには、コードファイル以外に、人々があなたのエクステンションについて知ったり、エクステンションを使ったりするのを助けるために、下記のものを含めることを考慮すべきです。
Nobuo Kihara committed
360

361 362
* パッケージのルートディレクトリに readme ファイル: あなたのエクステンションが何をするものか、そして、どのようにインストールして使うものかを説明するものです。
  [Markdown](http://daringfireball.net/projects/markdown/) 形式で書いて、`readme.md` という名前にすることを推奨します。
Nobuo Kihara committed
363 364 365 366
* パッケージのルートディレクトリに changelog ファイル: それぞれのリリースで何が変ったかを一覧表示するものです。
  このファイルは Markdown 形式で書いて `changelog.md` と名付けることが出来ます。
* パッケージのルートディレクトリに upgrade ファイル: エクステンションの古いリリースからのアップグレード方法について説明するものです。
  このファイルは Markdown 形式で書いて `upgrade.md` と名付けることが出来ます。
367
* チュートリアル、デモ、スクリーンショットなど: あなたのエクステンションが readme ファイルでは十分にカバーできないほど多くの機能を提供するものである場合は、これらが必要になります。
Nobuo Kihara committed
368
* API ドキュメント: あなたのコードは、他の人々が読んで理解することがより一層容易に出来るように、十分な解説を含むべきです。
369
  [Object のクラスファイル](https://github.com/yiisoft/yii2/blob/master/framework/base/Object.php) を参照すると、コードに解説を加える方法を学ぶことが出来ます。
Nobuo Kihara committed
370

371
> Info|情報: コードのコメントを Markdown 形式で書くことが出来ます。`yiisoft/yii2-apidoc` エクステンションは、コードのコメントに基づいて綺麗な API ドキュメントを生成するツールを提供しています。
Nobuo Kihara committed
372 373 374 375 376 377 378 379

> Info|情報: これは要求ではありませんが、あなたのエクステンションも一定のコーディングスタイルを守るのが良いと思います。
  [コアフレームワークコードスタイル](https://github.com/yiisoft/yii2/wiki/Core-framework-code-style) を参照してください。


## コアエクステンション <a name="core-extensions"></a>

Yii は下記のコアエクステンションを提供しています。これらは Yii 開発チームによって開発され保守されているものです。
380
全て [Packagist](https://packagist.org/) に登録され、[エクステンションを使う](#using-extensions) の項で説明したように、簡単にインストールすることが出来ます。
Nobuo Kihara committed
381 382 383 384 385 386 387 388 389 390

- [yiisoft/yii2-apidoc](https://github.com/yiisoft/yii2-apidoc):
  拡張可能で高性能な API ドキュメント生成機能を提供します。コアフレームワークの API ドキュメントを生成するためにも使われています。
- [yiisoft/yii2-authclient](https://github.com/yiisoft/yii2-authclient):
  Facebook OAuth2 クライアント、GitHub OAuth2 クライアントなど、よく使われる一連の auth クライアントを提供します。
- [yiisoft/yii2-bootstrap](https://github.com/yiisoft/yii2-bootstrap):
  [Bootstrap](http://getbootstrap.com/) のコンポーネントとプラグインをカプセル化した一連のウィジェットを提供します。
- [yiisoft/yii2-codeception](https://github.com/yiisoft/yii2-codeception):
  [Codeception](http://codeception.com/) に基づくテストのサポートを提供します。
- [yiisoft/yii2-debug](https://github.com/yiisoft/yii2-debug):
391 392 393
  Yii アプリケーションのデバッグのサポートを提供します。
  このエクステンションが使われると、全てのページの末尾にデバッガツールバーが表示されます。
  このエクステンションは、より詳細なデバッグ情報を表示する一連のスタンドアロンページも提供します。
Nobuo Kihara committed
394
- [yiisoft/yii2-elasticsearch](https://github.com/yiisoft/yii2-elasticsearch):
395 396
  [Elasticsearch](http://www.elasticsearch.org/) の使用に対するサポートを提供します。
  基本的なクエリ/サーチのサポートを含むだけでなく、Elasticsearch にアクティブレコードを保存することを可能にする [アクティブレコード](db-active-record.md) パターンをも実装しています。
Nobuo Kihara committed
397 398 399
- [yiisoft/yii2-faker](https://github.com/yiisoft/yii2-faker):
  ダミーデータを作る [Faker](https://github.com/fzaninotto/Faker) を使うためのサポートを提供します。
- [yiisoft/yii2-gii](https://github.com/yiisoft/yii2-gii):
400
  拡張性が非常に高いウェブベースのコードジェネレータを提供します。これを使って、モデル、フォーム、モジュール、CRUD などを迅速に生成することが出来ます。
Nobuo Kihara committed
401 402 403 404 405
- [yiisoft/yii2-imagine](https://github.com/yiisoft/yii2-imagine):
  [Imagine](http://imagine.readthedocs.org/) に基づいて、使われることの多い画像操作機能を提供します。
- [yiisoft/yii2-jui](https://github.com/yiisoft/yii2-jui):
  [JQuery UI](http://jqueryui.com/) のインタラクションとウィジェットをカプセル化した一連のウィジェットを提供します。
- [yiisoft/yii2-mongodb](https://github.com/yiisoft/yii2-mongodb):
406 407
  [MongoDB](http://www.mongodb.org/) の使用に対するサポートを提供します。
  基本的なクエリ、アクティブレコード、マイグレーション、キャッシュ、コード生成などの機能を含みます。
Nobuo Kihara committed
408
- [yiisoft/yii2-redis](https://github.com/yiisoft/yii2-redis):
409 410
  [redis](http://redis.io/) の使用に対するサポートを提供します。
  基本的なクエリ、アクティブレコード、キャッシュなどの機能を含みます。
Nobuo Kihara committed
411 412 413
- [yiisoft/yii2-smarty](https://github.com/yiisoft/yii2-smarty):
  [Smarty](http://www.smarty.net/) に基づいたテンプレートエンジンを提供します。
- [yiisoft/yii2-sphinx](https://github.com/yiisoft/yii2-sphinx):
414 415
  [Sphinx](http://sphinxsearch.com) の使用に対するサポートを提供します。
  基本的なクエリ、アクティブレコード、コード生成などの機能を含みます。
Nobuo Kihara committed
416 417 418 419
- [yiisoft/yii2-swiftmailer](https://github.com/yiisoft/yii2-swiftmailer):
  [swiftmailer](http://swiftmailer.org/) に基づいたメール送信機能を提供します。
- [yiisoft/yii2-twig](https://github.com/yiisoft/yii2-twig):
  [Twig](http://twig.sensiolabs.org/) に基づいたテンプレートエンジンを提供します。