対象読者
- HTML、JavaScript、PHPなどWeb開発の基礎理解がある方
- Webサイト、アプリケーション開発の経験者
Drupal開発の流れ
Drupalでサイト構築を行う際の流れは、他のWebアプリケーションと同様に、1. ローカル開発環境の構築、2. 開発(テーマ、モジュール開発)、3. テスト、4. リリース(本番デプロイ、ホスティング)です。Drupalにはこれらのプロセスをサポートする多くのツールが用意されているので、以下に紹介します。
ローカル開発環境
ローカル環境でDrupalを動作させるためには、いくつかの選択肢があります。1つはこの連載で使用したAcquia Dev Desktopですが、その他にもDockerや仮想マシンを利用したローカル開発環境を構築するツールがあります。
Lando
Drupalの開発環境をDocker上に展開するツールです。簡単なコマンドラインの操作で、コンテナ上にLAMP環境を構築でき、設定項目のカスタマイズも可能です。
Landoのインストール方法
GitHubにインストール用ファイルが公開されています。Macならdmg、Windowsならexeファイルをダウンロードし、実行すればインストール完了です。
Landoの実行方法
新しいDrupalプロジェクトを作成し、Landoで起動する方法をご紹介します。まずComposerでDrupalプロジェクトを作成し、プロジェクトのルートディレクトリに移動します。
$ composer create-project drupal/recommended-project marucha_with_lando && cd marucha_with_lando
Landoの初期設定を行うには、Drupalのプロジェクトがあるディレクトリでlando initコマンドを利用します。
$ lando init
いくつかプロンプトが表示されるので、以下を選択してください。
1. From where should we get your app's codebase?(コードベースの場所)
→ current working directory(現在のディレクトリ)
2. What recipe do you want to use?(利用するレシピ=構築した環境で動作させるアプリケーション)
→ drupal9
3. Where is your webroot relative to the init destination?(Webのルートディレクトリの場所)
→ web
4. What do you want to call this app?(アプリケーションの名称)
→ my-lando-drupal9
以上でLando環境の初期設定が完了です。コンテナを起動するにはlando startコマンドを使用します。
$ lando start
起動が成功すると、ローカルサーバーのアクセス先URLがコンソールに出力されます。ブラウザでアクセスするとDrupalの初期インストールが行えます。
データベースの接続情報などはlando infoコマンドで確認できます。
$ lando info
もしPHPのバージョンやWebサーバーソフト(Apache、nginxなど)、データベースの種類(mysql、 mariadb、 postgres)を変更したい場合は、ルートディレクトリ内にある.lando.ymlを編集します。具体的な設定方法については、Landoのドキュメントを参照してください。
Drupal VM
Drupal VMはLandoのようなDocker上ではなく、VagrantとAnsibleをベースとした仮想マシン上にローカル開発環境を構築するツールです。LandoはPHPやMySQLのバージョン切り替えなどが容易にできるのですが、特にMac OS上で利用する際にはディスクの書き込みが遅く、Drupal管理画面の遷移に時間がかかるという欠点があります。仮想マシンの方がリソースの消費は大きいですが、上記の理由から一定のシェアがあります。
Drupal VMの実行方法
VagrantとVirtual Boxはあらかじめインストールが必要ですが、Drupal VMはVagrantの設定ファイルであるため、その他特別なソフトのインストールは必要ありません。公式サイトからZipファイルをダウンロードし、展開したディレクトリでvagrant upコマンドを実行するだけで、Drupalの初期インストールまでが完了します。
PHPのバージョンやWebサーバーソフトの切り替えは、ルートディレクトリにあるdefault.config.ymlをconfig.ymlのファイル名でコピーし、内容を変更することで設定できます。設定できる内容はファイル内コメントに記載されていますが、より細かい設定についてはドキュメントを参照してください。