開発
開発についても、多様なツールが公開されています。コーディング中に何度も繰り返す単調な作業を自動化してくれるほか、きちんとベストプラクティスに沿ったコーディングを行うためのサポートをしているツール群です。
Drush
Drupal開発者にとって、必須とも言える開発ツールがDrushです。Drupalの管理画面から行うさまざまな操作をCUIで行えます。Drushで開発者が頻繁に利用する操作をいくつか紹介します。
drush cr
Drupalのキャッシュをクリアします。モジュールやテーマ内のコードを変更した際やサイトの不具合がある際には、まずこのコマンドを利用します。
drush en [モジュール名]
モジュールを有効化します。対象となるモジュールに依存関係がある場合には、依存モジュールも一緒に有効化されます。
drush uli
Drupalに管理者としてログインするためのワンタイムURLを発行します。--name=ユーザー名のオプションを付与することで、管理者以外のユーザーとしてもログインすることができます。
drush si
Drupalのインストールを行います。CI/CDツールでテストやビルドをする際や、開発開始時に多用するコマンドです。
drush cex
Drupalの設定情報をyamlファイルとしてエクスポートします。これにより、Drupalの設定情報がgitでバージョン管理することができるようになります。逆にインポートする際にはdrush cimコマンドを利用します。
Drushのインストール方法
DrushはDrupalモジュールと同様にComposerでインストールするのが最新のベストプラクティスです。Drupalプロジェクトのルートディレクトリへ移動し、次のコマンドでdrushをプロジェクトにダウンロードします。
$ composer require drush/drush
Drushの実行ファイルがプロジェクト直下の vendor/bin ディレクトリに配置されます。次のコマンドでDrushを実行できます。
$ vendor/bin/drush --version
パスを指定せずにDrushコマンドを実行するには、Drush Launcherをインストールします。インストール方法はドキュメントを参照してください。
Drupal Console
キャッシュのクリアなど、Drushと重複している機能がありますが、コードジェネレーターとしての機能が優れており、Drushと共存して活用されます。例えば、新しく自分でモジュールを作成する際に、drupal generate:moduleコマンドを利用することで、必要なファイルやクラスの雛形が自動で生成され、すぐにロジックのコーディングが開始できます。
Drupal Consoleのインストール方法
Drupal ConsoleもComposerでインストールします。Drupalプロジェクトのルートディレクトリで、次のコマンドでダウンロードできます。
$ composer require drupal/console
Drush同様、Drupal Console Launcherと呼ばれるツールがあり、vendor/bin/drupalのようにパスを入力せずコマンドを利用する際はダウンロードが必要です。
テスト
Drupalにおいても、開発を行った際には自動テストを導入するのがベストプラクティスです。ここでは、Drupalにおいて標準的に使われる2つのテストツールを紹介します。インストール方法や利用方法については、ドキュメントを参照してください。
PHPUnit
PHPUnitはPHPアプリケーション用のテストフレームワークで、Drupalに標準搭載されています。名称にUnitとありますが、単体テストだけでなく、Drupalコアシステムを最小限起動させて行うカーネルテスト、ブラウザを起動させて動作を確認するブラウザテスト、JavaScriptが有効化されたブラウザでAjaxなどの動作を検証するWebドライバーテストも行えます。
PHPUnitをDrupalプロジェクトで使用するには、Composerでdrupal/core-dev
パッケージをインストールします。
$ composer require --dev drupal/core-dev
Behat
BehatはBDD(べヘイビア駆動開発)フレームワークであり、英語など人間の言語のようにテストを記述することができます。以下が一例です。
Scenario: Wilson posts to his own blog(Wilsonがブログを投稿するシナリオ) Given I am logged in as Wilson(Wilsonというユーザーでログインする) When I try to post to "Expensive Therapy"(Expensive Therapyという記事を投稿した時) Then I should see "Your article was published."(Your article was published.という表示がされる)
この記述に応じて、システム側が自動でブラウザを起動し、指定された動作を行い、結果を表示します。
このように、エンジニア以外にも理解しやすいテストを記述することで、プロジェクトメンバー内でのテスト記述へのハードルを下げるとともに、そのままドキュメントとするなどしてプロジェクトの効率化を図れます。