本日のテーマは「 Drush コマンド入門」です。 本日は「 Drupal は知っているけれど Drush には馴染みのない」という方を対象に Drush コマンドの使い方をいちからお伝えしてみたいと思います。

Drush については他の投稿でも何度か取り上げていますが、ここで改めてまず最初に Drush とは何ぞやというところをご説明した後に Drush のインストール方法や定番的な使い方について順を追ってご説明していきたいと思います。

Drush とは

Drush とは Drupal の管理操作をターミナル上で行うことができるコマンドラインツールです。 名前の由来は「 DRupal + SHell 」で Drush 。 読み方は「ドラッシュ」と読む方が多いように思います。

公式サイトには次のように紹介されています。

Drush is a command line shell and Unix scripting interface for Drupal. Drush core ships with lots of useful commands for interacting with code like modules/themes/profiles. Similarly, it runs update.php, executes sql queries and DB migrations, and misc utilities like run cron or clear cache. Drush can be extended by 3rd party commandfiles.

以下意訳です。

Drush とは Drupal 用のコマンドラインシェル、 Unix スクリプティングインタフェースです。 Drush のコアには、モジュールやテーマ、プロファイルなどのコードとのインタラクションのための有用なコマンドがたくさん同梱されています。 また、 update.php を走らせたり、 sql クエリや DB マイグレーションを実行したり、その他、クロンの実行やキャッシュのクリアといったさまざまなユーティリティを利用することができます。 Drush はサードパーティのコマンドファイルで拡張することもできます。

意訳終わり。

Drush を利用するには、同名のコマンド drush を使用します。 Drush が一度インストールされれば、 OS のターミナルを開いて drush と打ち込むだけですぐに使用することができます。

$ drush

ただし Drush は OS にプリインストールされているコマンドではないため Drush を使ったことがない場合は自分でインストールする必要があります。 インストールといっても、ターミナルに慣れた方にとってはかんたんな数コマンドの作業です。 視覚的なイメージがないため、ふだん GUI をお使いの方には少しわかりづらいところがあるかもかもしれません。

ここから定番のインストール方法についてご紹介していきます。

Drush のインストール方法

Drush にはさまざまなインストール方法が用意されています。

そのときどきで主流のインストール方法は変わってきているようですが、本記事執筆時点( 2015 年 11 月)で最もメジャーなインストール方法は Composer を使ったインストール方法かと思います。

Composer を使った Drush のインストール方法については以前に記事を書いていますので今回は割愛します。 興味のある方は次の記事をご参照ください。

Composer を使わないインストール方法でいうと、最もシンプルかつかんたんなのは公式ドキュメントに載っている次の方法です。

# Download latest stable release using the code below or browse to github.com/drush-ops/drush/releases.
wget http://files.drush.org/drush.phar

# Test your install.
php drush.phar core-status

# Rename to `drush` instead of `php drush.phar`. Destination can be anywhere on $PATH.
chmod +x drush.phar
sudo mv drush.phar /usr/local/bin/drush

# Enrich the bash startup file with completion and aliases.
drush init

コメントの部分を日本語に翻訳して読んでみましょう。

# (1) 最新の安定リリースをダウンロードします。次のコマンドを使うか github.com/drush-ops/drush/releases を確認しましょう。
wget http://files.drush.org/drush.phar

# (2) インストール結果をテストします。
php drush.phar core-status

# (3) `php drush.phar` のかわりに `drush` を使うようにリネームします。移動先は $PATH 上のどこでもかまいません。
chmod +x drush.phar
sudo mv drush.phar /usr/local/bin/drush

# (4) bash のスタートアップファイルに補完とエイリアス機能を追加します。
drush init

この方法について 1 点注意点があります。 この方法でインストールする場合、 drush とリネームしたファイルが $PATH に含まれている必要があります。 例えば上記コードの場合は /usr/local/bin/drush に drush ファイルが配置される形となります。 この場合は /usr/local/bin が $PATH に含まれてなければなりません。

ここで $PATH と言われてそれが何のことを指すのかパッとわかる方は $PATH に /usr/local/bin が含まれているか確認し含まれていない場合は追加してください。 $PATH が何のことかわからない方は以下のコマンドを一度実行しましょう( Bash の場合)。

$ echo 'PATH="$PATH:/usr/local/bin"' >> ~/.bashrc

実行後にターミナルを再起動し、以下のコマンドを入力してその出力結果に /usr/local/bin が含まれていれば OK です。

$ echo $PATH

この方法(公式ドキュメントに書かれている方法)のよいところは、発生するファイルがひとつだけなので途中で失敗した場合や Drush を入れ替えたいときの作業がかんたんなところです。 ステップ (2) まででうまくいかなかった場合はカレントディレクトリの drush.phar を削除するだけですし、ステップ (3) 以降がうまくいかない場合は /usr/local/bin/drush ファイルを削除(それがもしあれば)するだけでかんたんに元通りの状態に戻すことができます。

ちなみにこの方法は UNIX 系の OS のみが対象です。 Windows の場合は Drush の利用そのものが非推奨とされているため VirtualBox や Acquia Dev Desktop などを使う形がよろしいかと思います。

Drush の使い方

Drush をインストールしたら実際に使い始めてみましょう。

Drush はコマンドラインツールなので最初の一歩はターミナルを立ち上げるところから始まります。 Mac の場合はスポットライトで「 Terminal 」と打ち込んで return キーを押しましょう(日本語環境の場合は「ターミナル」でも OK です)。 Mac にデフォルトで用意されているターミナルソフトが立ち上がるはずです。 ターミナルが立ち上がったら早速 drush と打ち込んでみましょう。

$ drush

インストールがうまくいっている場合は Drush のヘルプ文が表示されるはずです。 ヘルプが表示されず drush というコマンドが存在しない旨のメッセージが表示される場合は Drush のインストールが正しく行われていません。 インストールの手順に戻って再度インストールを試みてみましょう。

インストールが問題なく完了している場合は drush コマンドそのものはどこでも実行することができますが、 drush コマンドが活用できるのはカレントディレクトリが Drupal サイトのルート以下にある場合です。 つづいて実際によく利用する定番コマンドをご紹介していきます。

おすすめの定番コマンド

Drush はサイト開発とサイト運用の両面で役に立つ機能を豊富に提供してくれます。 無数のコマンドがあるので一気に全部を覚えようとするのは大変です。 まずはよく使うコマンドをいくつか覚えるのがよいでしょう。

私が実際によく使う(と感じる)コマンドを以下にいくつかご紹介してみます。

drush cc all

drush cc all は管理画面の「すべてのキャッシュをクリアー」をターミナルから実行できるコマンドです。 開発中にキャッシュをリセットしたいときに管理画面の「パフォーマンス」のページを都度開く手間が省けます。 drush cc allall の部分を css-jstheme-registry に変えると一部のキャッシュのみをクリアすることもできます。

$ drush cc all

drush cron

drush cron は Drupal の cron 処理をコマンドラインから起動することができるコマンドです。 cron を利用したモジュールの動作確認を行う際にはとても重宝します。

$ drush cron

drush dl [プロジェクト名]

こちらはプロジェクトのコードをダウンロードするコマンドです。 モジュールをサイトに追加したいときに活躍してくれます。

カレントディレクトリが Drupal のプロジェクトルートの下にある場合にはそのプロジェクトのモジュールディレクトリ( sites/all/modules )に、そうでない場合にはカレントディレクトリにプロジェクトの最新のコードが一式ダウンロードされます。

$ drush dl pathauto
$ # pathauto モジュールが現在の Drupal プロジェクトのモジュールディレクトリもしくはカレントディレクトリにダウンロードされます

Drupal のコアそのものもこのコマンドでダウンロードできるので Drupal プロジェクトを新しく立ち上げるときもサッとワンコマンドで済ますことができます。

$ drush dl drupal-7.x
$ # カレントディレクトリに Drupal 7 がダウンロードされます

drush en [プロジェクト名]

drush en はモジュールを有効化するためのコマンドです。 ワンコマンドでモジュールを有効化することができます。

$ drush en admin_views
$ # Admin Views モジュールが有効化されます

drush en のすごいところは、モジュールのファイルが存在しない場合には自動でダウンロードまで行ってくれるという点です。 さらに依存するプロジェクトやモジュールがある場合にはそれらもあわせてダウンロード、有効化してくれます。 まさに至れり尽くせりです。

drush sql-cli

こちらのコマンドは Drupal が利用しているデータベースにターミナルから接続するためのコマンドです。 例えば、このコマンドがない場合に Drupal が利用しているデータベースにつなぐには次の作業が必要になってきます。

  1. settings.php を開いて DB 接続情報を確認
  2. settings.php の接続情報を見て mysql コマンドを手書き

Drush を使うことでこの面倒な作業がワンコマンドで済んでしまいます。

$ drush sql-cli

drush php

drush php は対話型のセッション機能を提供してくれるコマンドです。 Drupal のブートストラップフェーズ、モジュール読み込みフェーズが終わった状態で PHP の高機能インタラクティブシェルを開いてくれます。 php -a で立ち上がる PHP デフォルトのインタラクティブシェルとは異なり、見やすいシンタックスハイライター、評価結果の自動出力機能などが備わっており、開発中の関数や API のチェックを快適に行うことができます。

drush php については以前の記事でもご紹介しているので興味のある方はこちらもご覧になってみてください。

drush upwd [ユーザ名] --password=[新しいパスワード]

drush upwd は Drupal サイトの特定のユーザのパスワードをリセットするためのコマンドです。 対象となるユーザのユーザ名とパスワードを指定するとそのユーザのパスワードを変更することができます。 現在のパスワードを入力する必要はなく、実行に成功したらパスワードがすぐさま変更されます。

$ drush upwd hgoto --password=hgotolovesdrupal

・・・定番コマンドのご紹介は以上です。

ここでご紹介したのは Drush が提供する機能のごくごく一部です。 他にも無数の機能が提供されておりここではとても紹介しきれないぐらいなので、興味のある方は drush help コマンドで確認してみてください。 コマンドにあまりなじみのない方にはサクサク使えてわかりやすい Drush Commands サイトがおすすめです。 ぜひぜひ。

以上です。 いかがだったでしょうか?

今回は「 Drush コマンド入門」ということで Drupal は使っているけれど Drush にはまだ馴染みがないといった方を対象に Drush を使いはじめるときに有用と思う情報をまとめてみました。

これまでにも Drush の情報はあちこちで出ていますが、ターミナルに馴染みのない方にとってわかりやすいまとまったチュートリアルというのがいまいちないようでしたので今回このテーマで書いてみました。

時間がかかってもほんの数十分、数時間で導入できて、その後の効率化の恩恵は大きなものがあるので、まだ利用していないという方はぜひこの機会に導入してみていただければと思います。


共に働く新しい仲間を
募集しています

スタジオ・ウミは「Drupal」に特化したサービスを提供する Drupal のエキスパートチーム。
フルリモート&フレックス制だから、働く場所を選ばず時間の使い方も自由です。
そんなワークライフバランスの整った環境で、当ブログに書かれているような
様々な技術を共に学びながら、Drupalサイト開発に携わってみたい方を募集しています。
まずはお話だけでも大歓迎!ぜひお気軽にご連絡ください。