ANNAIマガジン
あなたのシステムは大丈夫?低品質Drupalシステムの具体例
この記事の目次

低品質なDrupalシステムが生まれる背景

Drupalは一般的にはCMSとして認知されています。しかし、実際にはCMSとフレームワークの両方の特徴をバランス良く持ち合わせたプラットフォームです。そのため、他のCMSに比べて非常に拡張性が高く、柔軟にシステムを開発する事が可能です。

参考 : Drupalはフレームワークか?CMSか?他のCMSとの比較

その反面、Drupalでシステム開発を行う場合には一般的なWeb制作の範疇とは異なる、システム開発の知識とノウハウも要求されます。しかし、この事実が十分に認知されているとは言えず、十分な技術力を持たない開発者による低品質なDrupalシステムが世の中に多数リリースされている現状があります。特に、多様な機能とデータ管理を担う企業システムとしてのWebサイトでは、保守管理しながら長期にわたって安定運用できることが重要です。

残念ながらANNAIがこれまでに診断してきた多くのシステムでは、「長期的に保守管理しながら運用する」という観点から開発されているものは少数でした。逆に「とりあえず完成させて、納品すれば良い」という、その場しのぎの実装を行っているケースが非常に多いのが現状です。

Drupalシステムの品質とは?

そもそも、何をもって低品質と判断するのでしょうか?そのシステムが正常に稼働しているか否かは、運用体制や業務フローに大きく依存します。そのためANNAIでは運用体制や業務フローに依存しない、普遍的な判断基準として以下の観点からシステムの品質を評価しています。

  • Drupalによる標準的なシステム構築手法を逸脱する実装や設定がされていないか。
  • 将来的にアップデートに対応しやすい構成になっているか。
  • サポート切れや不安定版のモジュールが使用されていないか。
  • セキュリティや権限の設定がDrupalのベストプラクティスに則っているか。

実際にあった低品質Drupalシステムの例

それでは、実際に「KAIZEN システム診断」に寄せられた事例の中から、多く見受けられる典型的な事例をいくつか紹介していきます。

1.管理用ユーザー「admin」(uid=1)が有効になっている

管理用ユーザー「admin」が有効になっているケースです。これはDrupalシステムをお持ちの方なら比較的簡単に確認できる事柄ですので、ぜひ一度ご確認ください。

システム内に存在するユーザー「admin」(uid=1)はDrupalインストール時に自動で生成される特別な権限を持つユーザーです。Drupalの大幅なアップデート時以外の通常の使用においてはセキュリティ上の観点から無効にしておく事が推奨されています。詳細につきましては、以下のリンクをご参照ください。

https://www.drupal.org/node/947312

2.コアやモジュールのコードが改変されている

Drupalのコアやモジュール自体のコードをそのまま、改変しているケースです。このような実装をしていると、モジュールやコアをアップデートした際に改変部分が元の状態に戻り、これまでのように動作しなくなる可能性があります。コアやモジュールの挙動をカスタマイズする際には、コアやモジュールのコードを改変するのではなく、カスタムモジュールを用いたオーバーライドによる対応が必要です。

Never hack core (コアを決してハックするな!)」はDrupalに限らず、日々進化するOSSを利用して開発をする場合の鉄則です。

3.メニューやコンテンツがテンプレート内に実装されているため管理画面から変更不可

本来であればDrupalのメニューやブロックシステムを利用して実装されるべきメニューやコンテンツが、テンプレート内でコードにより実装されているケースです。この実装では、管理画面から設定を変更してもページに反映されないなど、CMSとしての利便性を大きく損なってしまいます。

4.テンプレート上にコンテンツの内容に依存する実装が存在する

Drupalを含めたCMSでは一般的にコンテンツのタイトルや本文、URLなどを編集者が動的に編集する事が可能です。しかし、テンプレート上にURLやコンテンツのIDなど、特定のコンテンツに依存する実装が存在すると、コンテンツ側の情報が変更された際にテンプレート内の実装とコンテンツデータとの間に不整合が生じます。その結果として、コンテンツ側での変更がシステム上に反映されない、実装によってはエラーが表示されるなどの不具合を生じる可能性があります。Drupalの知識が不十分な開発者が静的なHTMLページを作成する感覚で開発した場合によく見られるケースです。

5.CSSやJavaScriptなどのリソースが正しい方法でシステムに組み込まれていない

CSSやJavaScriptなどのリソースがテーマに適切な方法で実装されておらず、Asset Injector等のモジュールを利用して挿入されているケースです。これらのモジュールを利用することで本格的なテーマ作成に踏み込まなくても手軽に特定のページにCSSやJavaScriptを追加することが可能になります。しかし、これらはデータベース上に保存されるため、リソースがソースコードとしてバージョン管理されません。また、これらのリソースの挿入先コンテンツはURLで指定されるため、コンテンツのURLが変更されると不具合を生じる可能性があります。

6.不使用モジュールが有効化されている

使用されていないモジュールが有効化されているケースです。実験のために導入したと思われるモジュールがそのまま有効化されている場合などもあります。システムのパフォーマンスの観点やアップデート時のトラブルのリスクの低減の観点からも、不使用のモジュールは無効化すべきです。

7.安定版でないモジュールが使用されている

安定版ではないモジュール(リリースタイプがdev,alpha,beta)が使用されているケースです。安定版ではないモジュールの使用は思わぬ不具合の原因や、アップデートの失敗につながる可能性があります。また、これらはdrupal.orgのセキュリティメンテナンスの対象外です。モジュールのリリースステータスやモジュールの選定方法については、以下のコンテンツをご参照ください。

参考 : Drupal 8初心者講座 第15回 Drupalの拡張モジュールの選定と使い方

8.セキュリティアップデートが適用されていないモジュールがある

セキュリティアップデートが適用されないまま、モジュールが放置されているケースです。理由は様々ですが、アップデートすると不具合が生じるなどの理由で放置されている事が良くあります。モジュールを選定する際には仕様の安定性やリリース間の互換性を含む長期的なサポートの見通し、将来的にコアに新規で追加される機能との兼ね合いなどを十分に考慮した上で、長期的な運用を視野に入れて実施する必要があります。

一度ご自身でチェックをしてみてください

今回ご紹介させていただきました8つの事例の中には、Drupalシステムにログインして、ご自身で確認して頂ける内容もいくつかございます。1、6、7、8については権限設定によっては管理画面からご自身でチェックが可能です。ぜひ、一度ご自身でシステムをチェックしていただき、その上で、もし不安な点などがございましたらぜひ、「KAIZEN システム診断」の利用をご検討ください。

この記事を書いた人 : Kentaro Inoue

ANNAI株式会社
マーケティングマネージャー
サービスの設計・企画、マーケティング、採用戦略の立案などを担当。普段は新潟で猫と一緒に、時々海外からリモートで働いています。好きなモジュールはRulesとFlagです。

関連コンテンツ