はじめまして。ディベロップメントテクノロジーセンターのモコです。
2年半ほど前からDrupalをメインとしたお仕事をしています。
気づいたら開発を共にしていたメンバーは離任されていて、いつの間にかクレスコでDrupalと言ったら…という立場になってしまいました…

コロナの影響でシステム投資が減っていますが、そんな時でもDrupalを利用すれば簡単に低コストでのシステム導入できる可能性があります。
もちろん便利で良いところもあれば、できないことやイマイチなこともありますが、いろいろ踏まえてDrupalについてご紹介したいと思います。

そもそもDrupalって?

DrupalはCMS(コンテンツ マネジメント システム)の一つのプラットフォームです。
簡単に言うとパッケージ的なもので、導入するだけで基本機能(ユーザ登録やコンテンツ管理)などがすぐに使えるようになります。
つまり、導入するだけで簡単なホームページならすぐに運用を開始できます。(実際はそんな要件の案件はありませんが…)
では、Goodポイントとイマイチポイントを挙げながら、もう少し具体的にどんなことができるかをご紹介していきます。

DrupalのGoodなところ

【Goodその①】標準で多機能利用可能

先ほどからお伝えしていますがこれは”Drupalの”というよりは”CMSの”良いところでもあります。
インストールするだけで標準機能がいろいろ入っているので、簡単なホームページなどならすぐに作成・運用できます。
私は他のCMSを利用した開発経験はないので比較した感想などはお伝えできませんが、Drupalに関して言えばインストールしただけでユーザ管理、コンテンツの登録・編集・削除がすぐに可能です。
標準機能のみでも少しのカスタマイズ設定(ノンコーディング)でできることが増えます。
(ちなみに、Drupliconというヤンチャそうなイメージキャラクターがいます。)

【Goodその②】拡張モジュールを導入してよりリッチなサイトを提供可能

インストールするだけでたくさんの機能が利用できますが、公開されている拡張モジュールを導入するだけで必要な機能をどんどん追加することができます。
例えば… 

  • コンテンツに対して「いいね」ボタンを追加
  • TwitterやFacebookなどのSNSとの連携(OAuth認証なども可能)
  • ワークフロー(申請→承認といったフロー)
  • カート機能
  • カレンダー機能
  • Google Analytics連携    などなどなど。

モジュールの導入と少しの設定(もちろんノンコーディング)で利用可能になる機能がたくさんあり、また、一つの機能でも異なるモジュールがいくつか展開されているので、用途や使いやすさによって選ぶこともできます。

【Goodその③】標準機能へのカスタマイズが容易

もちろんDrupalを利用した開発案件では、標準機能のみでは実現が難しい要件があります。
例えば、標準の入力フォームに特定の条件の時だけ項目の表示制御をしたい、一覧表示と詳細表示の見出し文言を変更したい…など。
そんな場合でもhook(物を引掛けるフックのことです)という機能を利用して少しのコーディングで標準機能へのカスタマイズが可能です。
Drupalに初めて触れる開発者はこの概念が難しく感じるかもしれませんが、hookを使いこなせるようになるとカスタマイズの容易さがすぐにわかると思います。

【Goodその④】足りない機能・できないことはスクラッチ開発を組み込める

hookを駆使しても標準機能のみで要件を完全に満たすことはなかなかできません。
そういった時はスクラッチでも機能開発をして組み込むことが可能です。
使える機能はDrupalを利用し、足りない部分のみをスクラッチで開発することでコストダウンを狙えます。

【Goodその⑤】セキュリティ面での担保

Drupalは専門のセキュリティチームがあり、セキュリティを確保するための対策を日々行ってくれています。
また、開発者はDrupalのお作法に則って実装するだけで、SQLインジェクション/クロスサイトスクリプティング/クロスサイトリクエストフォージャリーなど一般的な攻撃の対策がなされます。
実際に以前Drupalで開発したシステムはセキュリティ対策を意識して行っていたわけではありませんが、脆弱性診断でリスクとして上がるものはありませんでした。

【Goodその⑥】オープンソースで完全フリーで利用可能

これだけの多機能サイトを構築できるDrupalですが、オープンソースソフトウェアとして世界中の開発者によってメンテナンス・開発がされており、完全に無料で利用可能です。
日本での導入事例は多いとは言えないようですが、ホワイトハウスやNASAなどでも利用されているようです。

Drupalのイマイチなところ

いいところだけでなく、開発経験者としてイマイチに感じたところもご紹介します。

【イマイチその①】技術的な面で日本語サイトがない

「Drupalとは」的な記載をしてくれている記事やサイトはありますが、開発中にちょっと躓いたときに調べるとまず日本語で書かれているサイトはほぼないです。
それだけ日本での浸透はまだ少ないんだろうな…と思うところ。
でも英語の勉強にはなります。。。(翻訳して見ちゃいますけど)

【イマイチその②】テーブル構成が複雑すぎて外部からDB参照は厳しい…(APIを用意してあげる必要がある)

Drupalでは1フィールド1テーブルというようなテーブル構成になります。
ですので、他サイトと連携する時に「勝手にDBみてSelectかけてデータ取ってってー」みたいなことはまず言えません…
もちろんできなくはないですが、joinや副問合せの嵐です。
なのでAPIを用意してあげてデータ抽出・連携してあげることをお勧めします。。。
(Viewsという標準機能でもjson連携など作成可能です。)

 【イマイチその③】作り方によって高速にも低速にもなる。

Drupalを利用してある機能を作ろうとしたとき、実現方法がいくつか上がります。
標準機能を利用する、0から作りこみをする、どこをどのように利用するなどによって速くも遅くもなります。
これは技術者の腕の見せ所ですね!

【イマイチその④】ある程度の有識者がいないと敷居が高い

やっぱりDrupalの特徴や実装方式を理解している人がプロジェクトに一人はいないとなかなか難しいと思います。
ある機能を作ろうとしたときに実現方式は何通りも思い浮かびますし、実装にもコツが必要だったりします。

まとめ

さて、メリデメを上げてみましたが、いかがでしたしょうか?
Drupalでシステムを構築する際はなるべく標準機能に寄せる形で実現できるとコストダウンが図れます。
完全カスタムで凝ったシステムも作ることができます。(そうするとあまりフルスクラッチと相違ないかもしれません…)
専門性が必要なDrupalですが、クレスコでも技術者育成中です。
フルスクラッチにとらわれず、Drupalを取り入れてみてはいかがでしょうか。