💧

Drupalを「知らない」から「ナニモワカラナイ」までの感想

2024/06/14に公開

はじめに

こんにちは!フロントエンドエンジニアのかこなーるです!
私は最近、Drupalを用いた複数サイトの管理を行うプロジェクトに参画する機会がありました。今日は、その際に感じたDrupalの特徴や、学んだことについて共有したいと思います。

DrupalとはどういったCMSなのか

Drupalは、高機能で柔軟性がありスケーラブルなCMSとして、多くの大規模なウェブサイトやアプリケーションで採用されています。高いカスタマイズ性とセキュリティ、豊富なモジュールとテーマによって様々なニーズに応じたウェブサイトを構築することができるということを特徴としたCMSです。


Drupal システムのレイヤー構成
出典:https://www.drupal.org/docs/understanding-drupal/overview-of-drupal

利用用途のよく似たものとしてWordpressがありますが、Drupalには多言語対応のための機能が標準としてある・高いセキュリティ標準を持っているなどといった点が大きく異なります。

学習曲線の急勾配

高機能で柔軟性が高い分、学習しなければいけない点が多いです。特に初めて触れるエンジニアにとっては、どこから手を付けていいのか迷ってしまうのではないかと思います。サイトごとに異なる装いを持たせるための「テーマ」、ページ内に設置するコンポーネントや表示などを定義するための「パラグラフ」、コンテンツ一覧ページを作成するための概念「ビュー」といったような新たな概念を覚える必要があります。また、今までPHPに触れたことがなければPHPの基礎もキャッチアップが必要ですし、テンプレートエンジンとしてTwigなども用いるため触れたことがなければ学習が必要です。

良かったポイント:
ビューの設定などは管理画面上で完結するため、ITリテラシーのあるお客様であれば画面設計などをどうするかについてビューの設定を元に話したり実際に設定を変更しつつ画面を見ながら話せる点は良かったと感じました。

辛かったポイント:
公式のドキュメントが多いのはありがたいのですが、その分情報が分散していて、必要な情報を見つけるのに時間がかかりました。設定や構成が複雑で、最初は手探り状態になりました。Wordpressの経験があったため、CMSの概ねの理解は早かったのですがビューの設定などが複雑で未だにビューのリレーションの設定などは手探りになってしまうことがあります。

開発環境の構築について

Drupalのプロジェクトにアサインされるまで、直近はNext.js + ヘッドレスCMSといった構成のサイト構築のプロジェクトが多かったため。モダンなフロントエンドFW + ヘッドレスCMSという環境と比べると開発環境を整えるのに時間がかかってしまったという印象があります。特にテーマの変更などではDrupal側のキャッシュのクリアや設定のリフレッシュが頻繁に必要で、作業時間を取られることが多かったです。

良かったポイント:
ここについては正直良かったと感じる点を思いつきませんでした・・・。

辛かったポイント:
開発のサイクルが長く感じられ、変更の反映に時間がかかることが多かったです。特にキャッシュの管理に苦労し、変更を反映させるために毎回キャッシュクリアを行うのが手間でした。また、チームでの開発を行なっていたためGithubでソースコードの管理を行なってはいましたが連携してローカル環境を揃えて作業を行うのに難しさを感じてはいました。
上記についてはDDEVを用いることで管理画面上の設定をソースコードとして出力・共有出来るようにしていたのですが、設定の上書きが発生することがあったためその点も辛かったです。
https://www.mochiya.ad.jp/blog/drupal_knowledge/detail/ddev-environment
また、権限周りがマルチサイトで共有されてしまう点ので権限の管理を厳格に出来ないので気になりました。

コンポーネント指向 vs. コンテンツ管理指向

これは主にモダンなJSフレームワークと比較しての開発体験の違いになってしまいますが開発中下記のような違いを感じていました。

Next.js:
コンポーネント指向で、UIの構築が非常に直感的です。Reactの再利用可能なコンポーネントを使って、簡単にUIを構築できます。

Drupal:
コンテンツ管理に重点を置いており、フィールドやコンテンツタイプの設定が中心です。ビューやタクソノミーの設定など、UI構築とは異なる概念が多く登場します。

良かったポイント:
先にビューの設定が管理画面上で完結するという話をしましたが、パラグラフなども同様に管理画面上で完結するため必要な情報などを管理画面上でクライアントと確認しつつ定義して進められる点などは良いと思いました。

辛かったポイント:
フロントエンド側だけではなくバックエンド側の設定も必要になってきますのでその点はDrupalを扱うためのハードルが高いと感じ人によって辛いポイントになるかもしれません。

デバッグとトラブルシューティング

デバッグツールはあるものの、エラーメッセージが分かりにくい場合が多いです。また、問題の原因を特定するのに時間がかかることが多いです。

良かったポイント:
とはいえ管理画面上でエラーを出してくれるので他のメンバーが書いているコードでエラーが発生している場合などにすぐ気づける点は良いなと思いました。

辛かったポイント:
エラーの原因を特定するのに多くの時間を費やしました。特にカスタムモジュールやテーマの開発中に発生するエラーは、ドキュメントやコミュニティのサポートに頼ることが多かったです。

コミュニティとリソース

Drupalには専任のセキュリティチームがあり、コアと拡張モジュールのセキュリティ問題を監視し、対応しているなどがありWordpress等と比較してセキュリティ面での信頼性は高いように感じました。またコミュニティのポータルサイトなどでのコメントも活発な点も拡張モジュールや設定の方法などに際して悩んだ際に閲覧した際に感じられました。

良かったポイント:
拡張モジュールなどのセキュリティ問題に関する監視などセキュリティ面で手厚い

辛かったポイント:
ここについては特別に辛く感じたポイントはなかったです。

結論

今までDrupalを使った開発経験がなかったため今回は貴重な経験をすることができました。Drupal自体は強力なツールであり、強みを理解した上で選択することが重要です。

皆さんも新しいツールや技術に挑戦することで、自分のスキルをさらに磨いていきましょう!

参考

https://www.drupal.org/docs/getting-started/understanding-drupal/overview-of-drupal

chot Inc. tech blog

Discussion