Drupal Consoleを使った開発環境構築

Drupal Advent Calendar 2016の12/8担当です。
Drupal Consoleを使った開発環境構築について書きたいと思います。


## Drupal Consoleとは
[Drupal Console](https://drupalconsole.com)とはざっくりいうと、コマンドラインでDrupalを操作するツールです。WordPressでいうところのwp-cliといったところでしょうか。
Drupalのインストールやモジュールの開発、ファイルの生成などをコマンドラインで行うことができます。
[日本語ドキュメント](https://docs.drupalconsole.com/ja/)も用意されているので導入しやすいと思います。

### How to install Drupal Console
インストールはComposerを使えば簡単です。以下の通りです。

```
composer global require drupal/console:@stable
```

### Generate Project

```
drupal init
```

ファイルがたくさん生成されたと思います。とりあえず事前準備は完了です。
続いてプロジェクトを作っていきましょう。対話式でプロジェクトを作っていきます。

```
drupal site:new
```

```

 Enter the directory name where to install Drupal:
 > {{ディレクトリ名}}

 Getting releases for Drupal

 Select a core release:
  [0 ] 8.2.3
  [1 ] 8.2.2
  [2 ] 8.2.1
  [3 ] 8.2.0
  [4 ] 8.2.0-rc2
  [5 ] 8.2.0-rc1
  [6 ] 8.2.0-beta3
  [7 ] 8.2.0-beta2
  [8 ] 8.2.0-beta1
  [9 ] 8.1.10
  [10] 8.1.9
  [11] 8.1.8
  [12] 8.1.7
  [13] 8.1.6
  [14] 8.1.5
 > {{バージョン}}

```

これで、指定のディレクトリに指定のバージョンのDrupalがダウンロードされました。引き続きインストールしていきましょう。こちらも対話式です。

```
cd <DOWNLOADED-DIRECTORY>
drupal site:install
```

```
 Select Drupal profile to be installed:
  [0] Minimal
  [1] Standard
 > {{どちらか}}

 Select language for your Drupal installation [English]:
 > {{言語、日本語であればJapanese}}
 Drupal Database type:
  [0] MySQL, MariaDB, Percona Server, or equivalent
  [1] SQLite
 > {{どちらか、今回はSQLite}}

 Database File [sites/default/files/.ht.sqlite]:
 > {{DBファイル保存先}}

 Database Prefix [ ]:
 > {{DBのプレフィックス}}


 Provide your Drupal site name [Drupal 8 Site Install]:
 > {{サイト名}}

 Provide your Drupal site mail [admin@example.com]:
 > {{メールアドレス}}

 Provide your Drupal administrator account name [admin]:
 > {{Administratorのアカウント名}}

 Provide your Drupal administrator account mail [admin@example.com]:
 > {{Administratorのメールアドレス}}

 Provide your Drupal administrator account password:
 > {{Administratorのパスワード}}

 Starting Drupal 8 install process

                                                                                
 [OK] Your Drupal 8 installation was completed successfully                     
                                                                                
```


インストール完了です。ではサーバ起動してみましょう。

```
drupal server
```

起動したら[http://localhot:8088](http://localhost:8088)でアクセスできます。

![起動後の画面](https://qiita-image-store.s3.amazonaws.com/0/9882/903e1a83-41ec-6d3b-c357-9a103a897eb9.png "起動後の画面")

おめでとうございます。開発環境の構築ができました。と言いたいですが、めんどくさいですよね。
このダウンロード〜サーバ起動までの流れ対話せずに実行できます。
chainコマンドというものを使って、指定したymlファイルの内容を一括実行します。まずは、ymlファイルの中身から確認しましょう。

```drupal8.yml
commands:
  - command: site:new
    arguments:
      directory: drupal8-yml.dev
      version: 8.2.3

  - command: site:install
    options:
      langcode: ja
      db-type: sqlite
      db-file: sites/default/files/.ht.sqlite
      site-name: 'Drupal 8 using yml'
      site-mail: admin@example.com
      account-name: admin
      account-mail: admin@example.com
      account-pass: admin
      generate-inline: true
    arguments:
      profile: standard
      
  - command: server
```

１つ目のコマンドでDrupalのインストールを行い、２つ目のコマンドでインストール、３つ目のコマンドでサーバを起動します。実行コマンドは

```
drupal chain --file=./drupal8.yml
```

です。では実行すると、

```
 site:new
 Downloading drupal 8.2.3

                                                                                
 [OK] Drupal 8.2.3 was downloaded in directory                                  
      /path/to/project/drupal8-yml.dev  
                                                                                

 site:install
 Starting Drupal 8 install process

                                                                                
 [OK] Your Drupal 8 installation was completed successfully                     
                                                                                

 server

                                                                                
 /usr/local/Cellar/php56/5.6.27_4/bin/php -S 127.0.0.1:8088                     
 /Users/user/.console/router.php                                               
                                                                                

                                                                                
 [OK] Executing php from /usr/local/Cellar/php56/5.6.27_4/bin/php.              
                                                                                

PHP 5.6.27 Development Server started at Wed Nov 30 11:55:27 2016
Listening on http://127.0.0.1:8088
Document root is /path/to/project/drupal8-yml.dev
```


先ほどと同じ開発環境ができました。

### なにがよいのか？
ymlを用意することで、チーム内の全員が、全く同様の環境を構築することができます。またCIツールと連携して継続的に自動テストを行うことができます。


今回は環境構築まででしたが、モジュール・プラグイン作成やDrupal Console自体のオリジナルコマンドもDrupal Consoleで作成できます。サクッと開発環境構築以外にも色々と使い道はあると思いますので一度触ってみてはどうでしょうか？