ANNAIマガジン
Drupal 8 の旗が建てられたたくさんのカップケーキ
この記事は「 24 things about Drupal 8 every CTO should know 」の翻訳です。
この記事の目次

Drupal 8 への移行について

1. なぜ Drupal 8 にはそんなに時間がかかったのですか?

Drupal ができてから15年、Drupal 8 の開発には5年がかかっています。リリースまでに時間がかかっているように感じられます。内部では Drupal 8 にはDrupal 7から見てたくさんの大きな変化がありました。新しいプログラミングのコンセプトやパラダイムが適用され、Drupalはこれまでよりもさらに標準に準拠するようになりました。古く、Drupal特有の作法を排除し、標準的であると広く知られるテクノロジーを受け入れました。Drupal Communityの計画では、今後はDrupal 8のような、大きなメジャーリリースを待つのではなく、徐々に段階的なリリースを行うことでブランチを分けて開発や機能追加ができるようにしようとしています。

2. Drupal 8 の構築を始めるとしたらいつですか?

すべてのプロジェクトにとって、Drupal 8 を検討するなら今すぐです。ただし、いつ Drupal 8 に移行すべきかはリスクへの関心度、プロジェクトの機能や複雑さによります。Drupal8用にはまだ安定したリリースではありませんが、Contribute Moduleがたくさんあります。プロジェクトは最終的にはDrupal7で無料で使えたツールの Drupal 8 版を使って構築できるようになるでしょう。しかしながら、長い目で見たら Drupal 8 を選択することはそんなことを圧倒するくらいに有利です。我々は、ここ半年後から一年の間にローンチを計画されているプロジェクトに関しては、Drupal 7 より 8 を使用することをおすすめします。Drupal 8 の多言語システムは、根本的なところでオーバーホールされました。すべての多言語サイトでは Drupal 8 を選ぶべきでしょう。近日中の、動かせないリリース日が決まっているプロジェクトでは、Drupal 8 導入による予期せぬバグやリリース後の問題発生などのリスクがあるでしょう。これらの問題は新しいバージョンが発表されて広く使われるようになる前にはつきものと言えましょう。

3. 一般的な Contributed Module が使えるようになるまでにどれくらいかかりますか?

Deeson は、自分たちのプロジェクトで使用している 52 のモジュールについてメンテナンスを行っています。そのうち11のモジュールは Drupal 8 のコアに含まれているため完全にサポートされており、9 のモジュールがアルファ版、ベータ版としてコミュニティによりリリースされています。残り 32 のモジュールはテスト段階ですらありません。もっとも重要なコンテンツ管理ツールがコアプラットフォームに内蔵されているため、Drupal 8 は機能を限定した単純なサイトであればすぐに使用することができます。しかしながら、PathautoTokensのように、自動でメールのタグを生成したり、コンテンツのタイトルに自動でリンクを設定したりするような重要なモジュールが未対応だったりもします。経験上、Drupal 7 ではリリースからContributed moduleが使用できるようになるまでに1年かかりました。今回は、Drupal 8 のコアがそういったモジュールの多くを組み入れているためもっと早く使用できるようになり、重要な Contributed module は2016 年 6 月には使用できるようになると見られます。

4. Drupal 7 の開発者はどれくらい学習が必要でしょうか?

Drupal 8 での大きな変化は、テーマレイヤーでのTwigテンプレートシステムの導入、コアへの Symfony フレームワークコンポーネントの導入、プラグインシステムの導入、以前の手続き型プログラミングからオブジェクト志向のプログラミングスタイルに全般的に移行したことなどがあります。そのためDrupal 7開発者が Drupal 8 で開発するにはかなりの学習が必要です。Drupal 8 は来年にかけて更に注目をあつめるようになり、多くの開発者が Drupal 8 で開発をするために必要なスキルについて学習を始めるとみられます。Drupal コミュニティはこの学習に必要な素材の提供についてとても良い活動をしており、Drupal.org にて Drupal の以前のバージョンよりも優れたドキュメントを提供しています。開発チームは今後半年内に始まるプロジェクトをサポートするために開発者トレーニングを準備する必要があり、そうしなければリスクが残ることになるでしょう。

5. Drupal 8 を使うと Drupal の構築コストは減りますか?

以前のバージョンと同じように、Drupal 8 はライセンス料無しで使用できます。それとは異なり、プロジェクト構築の費用は以前のバージョンの Drupal 使用時と比較してまったく違ったものになるでしょう。しかし、Drupal 8 の内部の改善により、サイトを管理・保守する長期間のトータルコストを削減できると我々は信じています。新しいプラグインシステムを含む開発の効率のよい手法が導入されたことで、Drupal 8 の拡張を以前のバージョンよりも容易にしています。

6. Drupal 8 ではサイト構築が早くなりますか?

DX(Developer Experience)として知られる開発者向けの環境において大きな進歩がありました。そのことにより、開発チームの問題解決能力にも進化があるでしょう。コーディングの原則がオブジェクト指向へ変わったことにより、より論理的で開発者寄りの構成になりました。IDE のようなコード編集ツールによって自動でコード生成されることもあります。他にも、Twig テンプレートレイヤーが Drupal のテーマシステムをより良く構成しているため、乱雑なコードは書かれにくくなっています。

Drupal 7 との関連

7. Drupal 7 からのアップグレード方法はありますか?

Drupal 8 にはMigrateモジュールがあります。Migrate は Drupal 6 や 7 で作成された web サイトのコンテンツを Drupal 8 向けにマッピングできる一連のツールを提供します。シンプルなプロセスではありませんが、以前のバージョンからの移行は可能だと言えましょう。

8. Drupal 8 リリース後の Drupal 7 へのサポートはいつまで続きますか?

Drupal コミュニティは Drupal のひとつ前のバージョンをサポートしています。ですので Drupal 7 は Drupal 9 のリリースまではサポート対象です。いまのところ Drupal 9 の公式リリース日は決定していないので、Drupal 7 のサポート終了期限も決まっていません。

Drupal 8 の新機能

9. Drupal 8 には Drupal Commerce がフィーチャーされていますか?

Drupal Commerce は Drupal コアチームではなく、企業― Commerce Guys によりメンテナンスされています。彼らにより、DrupalCommerce は Drupal 8 向けのバージョンが活発に開発されています。新しい Drupal 8 バージョンでは以前のバージョンの Drupal Commerce に比べ重大な変化があると説明されています。カートへの追加機能の改良や、素早い在庫作成、より直感的な在庫管理などです。

10. Drupal 8 では多言語サイトの作成方法が違うのですか?

以前のバージョンの Drupal では、部分的にしか多言語をサポートしていませんでした。多言語プロジェクトは通常 Drupal の多様な要素を、全く違った手法で翻訳機能を提供している多数のモジュールを縫い合わせるようにして作られます。この一貫性の無さがプロジェクトの予算がかかり、締め切りにプレッシャーを与えます。Drupal 8 の多言語サイト構築能力は非常に大きく改良されました。すべてのコア要素の翻訳が同一の、一貫した方法で翻訳されています。Drupal のインストーラーは 94 の言語をサポートしています。新しい言語のインストールやアップデートを行うための簡単なプロセスもあります。管理画面インターフェイスについては完全に翻訳可能です。画像やファイルのような Asset については特定言語に割当てられるか、言語間で共有することができます。

11. コンテンツ編集者にとっての Drupal 8 での違いはなんですか?

Drupal 8 にはポピュラーな WYSIWYG web エディターである CKEditor が搭載されています。標準的にサポートされるツールとなるため、Drupal との統合もメンテナンスし続けられるでしょう。Drupal 8 コアの新しい NavBar モジュールは、すべての管理画面セクションへアクセスできるクリーンな管理ツールです。Drupal 8 のquick edit 機能はコンテンツ編集者が編集を行う際、フォームをロードする代わりにシンプルな編集と更新を可能にしました。Drupal 8 ではメディアの操作でも進化をしました。これまでコアには組み込まれていなかった、ファイルや画像などのアセット管理について優れたインターフェースが提供されます。

12. Drupal 8 では複雑なユーザーとコンテンツの権限の操作に変化がありますか?

見えないところではコンテンツのアクセスパーミッションシステムが Drupal 8 では書き換えられましたが、動作は変わりません。Contributed Module ではとてもきめ細かい追加パーミッションコントロールの提供が予想されます。Drupal の以前のバージョンでは Organic Group がよく選ばれていましたが最近のコアバージョンではリファクタリングされてきませんでした。私たちは Drupal 7 の安定した機能を提供するため、Organic Group の代わりに Group モジュールを使っていますが、Drupal 8 バージョンの開発も計画しています。

フロントエンドと Drupal 8

13. Drupal 8 のテーマ開発やフロントエンドの標準は変わりましたか?

Drupal 7 では PHP ベースのテンプレートが容易に書けてしまったことから、本来モジュールに書かれるべきロジックが、テンプレート内に書かれることがありました。しっかりと管理されていないテンプレート内コードは、壊れやすく、バグを見つけにくくなり、新機能を付け加えることが難しくなります。D8 でのテーマ開発は Twig の導入により、とても大きく変わりました。開発者はほぼすべての機能的な マークアップをTwig テンプレートで書くことが出来るようになります。開発チームにとって最初の学習コストはかかりますが、長い目で見てよりクリーンでメンテナンスのし易いテンプレートになるでしょう。

14. Drupal 8 のアクセシビリティはどのように扱われていますか?

WAI-ARIA のランドマーク、ライブリージョン、ロールとプロパティなどがページの動的なエリアのアクセシビリティを改善するために取り入れられました。Drupal の Form API は別のリージョンでではなく、エラーが起こった場所にインラインで表示されます。音声読み上げ機能を使うユーザーには Javascript のアラートも音声でタイムリーに提供できます。新しいタブマネージャーはマウスを使わないユーザーにもロジカルな順番でページ要素にアクセスできるようにします。Drupal 8 はスクラッチで開発された馴染みのある方法ではなく、標準的なライブラリーを使って機能を構築します。ライブラリ開発者をまきこみ 、外部の大きなコミュニティとのパートナーシップから最高品質のテクノロジーが開発できるようになります。これらの効果の一つは、特定機能のアクセシビリティがその分野を良く理解しているチームから提供されるようになることです。よいサンプルとして jQuery UI ライブラリーが提供するオートコンプリート機能が挙げられます。Drupal コミュニティは jQuery UI コミュニティに対してアクセシビリティを向上させる手助けができるようになったのです。

エンタープライズ領域での Drupal 8

15. Drupal 8 は自動テストのようなエンタープライズ向けの開発手法がとれるようになりましたか?

いくつかの改良によって、Drupal 8 はより効果的な継続的開発(CI)のプラットフォームなりました。コンフィグレーション・マネージメント・システムで設定はコードに書き出され、安全にサイト環境を移行し、挙動も予測できるようになりました。Drupal 8 のコードはよりオブジェクト指向的になったことで、コアのコードからテスト環境として PHPUnit がサポートされました。コアのコードもすべてUnitテストが書かれています。Drupal のコマンドラインツール Drush もすでに Drupal 8 用にアップデートされ、カスタムコードの品質をテストする Coder モジュールから、機能をテストする PHPUnit までほとんどの開発を自動化するために使われています。自動テストも Drupal 8 で改良されました。コアは Unit テストと機能テストを実行する PHPUnit を取り入れています。これらを使うと前バージョンより素早いテストを行えます。PHPUnit はPHP 開発者に広く使われているツールですので、テストを書いたり開発者を支援するツールを見つけたりしやすくなると期待されています。Drupal 8 では Symfony で人気のある Behat テストフレームワークを利用して、ビヘイビア駆動開発(BDD)を行えます。

16. Drupal 8 は大きなサイト開発がやりやすくなりましたか?

Drupal 8 は大きなサイトを管理している組織にぴったりな選択肢となります。Drupal は最も自由度と拡張性が高い CMS です。そのため小さくシンプルなサイトだけでなく、大きくより複雑なサイトまでカバーできます。Drupal を採用することで、大きなサイトの開発コストやメンテナンスコストを軽減することができます。

17. Drupal 8 の設定管理は改善されましたか?

設定管理(コンフィグレーション・マネージメント)は Drupal のようなソフトウェア・アプリケーションをテストし、バージョン管理することを可能にします。Drupal 7 においては、コードで動作を定義するのではなく、実際の環境でもう一度手動で設定し直さなければならないことがありました。Drupal 7 でこれを実現するために Features モジュールのような拡張がありましたが、全体を統合する方法はなく、個々のモジュール毎に Features からエクスポートしなければなりませんでした。加えて、Drupal 7 の Variable テーブルは設定と環境ごとのステータスが混ざり合っていたため、開発には時間がかかり、エラー発生にも繋がっていました。Drupal 8 のコンフィグレーション・マネージメント イニシアティブはモジュールの設定項目を定義する標準的な方法を開発しました。サイトビルダーはコンフィグレーション をファイルとしてエクスポートすることで、Web サイト全体をバージョン管理し、環境単位で変化させることが可能になります。これによってコンフィグレーションを監査、ロールバック、テストする対象にすることができます。

アーキテクチャ−の変化

18. Drupal 8 での ”headless Drupal” とは何ですか?

"ヘッドレス(顔のない)・Drupal” または”デカップルド(分離された)・Drupal” という言葉は Drupal のバックエンドとテーマ部分を分離するシステム・アーキテクチャの試みを指して使われます。このようなアーキテクチャでは Drupal はデータの入力と取得のためのコンテンツ管理システムとして使われ、エンドユーザーに表示されるページをレンダリングする機能は他のツールへ任されます。開発チームはリッチなインターネットアプリケーションやモバイルアプリ、スマートTVのようなデバイス向けのアプリ、時計、次のGoogle Glass などを開発することができるようになります。これらのデバイスはそれぞれ特有の画面表示メカニズムを持っていますので、CMSから取得する純粋なデータだけを必要としています。Drupal 8 は HTML だけでなく、JSON や XML などその他様々な形式を出力することができます。データを要求してくるデバイスやアプリによってデータ形式を変えて提供します。Drupal 8 をコンテンツ・マネジメント・システムとして採用することは未来へのよりよい投資と言えます。まず第一に、伝統的なブラウザーに向けて Web サイトを送信できますし、アプリや動的なインターネットアプリが同じ Drupal バックエンドを使って構築できます。

19. Drupal 8 で他のシステムとの連携方法は変わりましたか?

Drupal 8 が PHP の標準的なライブラリーと親和性が高まるということは、特定用途に開発された外部の良いライブラリーを使いやすくなるということです。Drupal のエコシステム内で活動する開発者も連携の開発が容易になります。Druapl 8 はデータをRESTful API でエクスポートする機能を持っていますので、他のシステムとの連携が非常に簡単になります。加えて、Drupalに導入された新しいプラグインシステムは Drupal のエクステンション開発を容易にします(従来のモジュールとは異なる仕組み)。Drupal はこのテクノロジーのおかげで、現存する最も拡張性と自由度の高いCMSフレームワークとしての地位を保つことができるでしょう。

20. データベース・抽象化レイヤーに変化はありましたか?

Drupa 7 から引き続き、Drupal のエンティティモデルの標準化は進んでいます。Drupal8 での開発は、データベースレベルではなく、エンティティレベルになります。これによって Drupal 8 は MySQL のような一般的なリレーショナル・データベース以外のさまざまなデータベーステクノロジーを利用することができます。例えば、MongoDB のような NoSQL ソリューションを Drupal 8 サイトのデータベースストレージとして使うことができます。Drupal 8 のデータベース API はほとんど Drupal 7 と同じですが、開発者はコアAPIの開発でない限り直接データベースコールをすべきではありません。

21. Drupal 8 では Symfony が重要な使われ方をしていると聞きましたが、どのような実装になっていますか?

前のバージョンまでは Drupal はすべてのコードがコミュニティのメンバーによって開発されていました。Drupal 8 では Symfony のような外部プロジェクトを受け入れ、また他のプロジェクトで使ってもらえるようなライブラリーを作ろうとしています。「車輪の再開発」をせず Drupal 8 は問題解決のために大きなコミュニティで開発されたコンポーネントを利用します。これは Drupal がさまざまなプロジェクトで使われているより安定したコードベースを利用できるメリットがあります。その逆に Symfony のようなプロジェクトはより多くのユーザーがコードを使うことでその過程でさらに強靭なものになるメリットを享受できます。 Symfony に慣れていて Drupal には不慣れな開発者も Drupal 開発をすることができるようになります。開発チームが才能ある開発者の集団に開かれることを意味します。Symfony はPSR-4(名前空間クラス)のような業界標準やベストプラクティスを使って書かれてあり、それらは Drupal 8 にも引き継がれています。

パフォーマンス・セキュリティ

22. Drupal 8 ではパフォーマンスが向上しましたか?

Drupal 8 のキャッシュシステムは全面的に書き換えられました。Drupal 7 では少しの変更のために全体のキャッシュを再構築する必要がありました。通常のキャッシュは Drupal 7 と同じようにページ単位で行われます。ページの全体がキャッシュされ、再生成されます。ログインユーザーには基本的にはキャッシュは適用されずページ全体がリクエストの都度生成されます。Drupal 8 ではキャッシュはさらに複雑になり、細かく制御されるようになります。例えば、新しいキャッシュタグシステムはページの部分単位をキャッシュすることでログインユーザーはページの大部分をキャッシュから受け取り、ユーザー特有の情報を別に受け取ることが可能になります。またキャッシュタグを使うことにより、開発者は特定のキャッシュクリアシナリオを定義することができます。例えば、「ユーザー番号 300 のアカウントデータキャッシュをクリアし、その他のユーザーはそのままにする」などが出来るようになります。加えて、ほとんどの Drupal 8 キャッシュシステムは拡張性があり、どのレベルからでも外部のキャッシュツールを使うことができます。大規模で複雑なサイトには、より適正なツール群をパフォーマンス改善に使うことができます。Drupal 8 ではページ生成の一連の動作の再検討がなされましたので、ページ生成はより効率的になっています。「速い設定がデフォルト」の原則が Drupal 8 では採用されて、開発者は何も考えずにパフォーマンスの向上を享受できます。

23. Drupal 8 での高可用性(High Availability)は改善されましたか?

Drupal は長い間、高可用性環境で使われてきており問題点も共有されています。Drupal 8 はこの点はDrupal 7 と同じです。Drupal 8 でキャッシュレイヤーが改善されたことでより複雑な構成が可能になります。

24. Drupal 8 のセキュリティに対する考え方に変化はありますか?

Twig テンプレートシステムを使うことは PHP コードをテンプレートに書かなくなったという点で大きな変化になります。テーマレイヤーはこれまで脆弱性の原因となることがよくありましたが、Twig はセキュアな画面表示レイヤーを実現するためのフル機能を持っています。サイトビルダーが WYSIWYG エディターを利用するために設定するテキストフィルターもまた脆弱性を多く生み出してきました。WYSIWYG エディターはコンテンツマネージメントシステムには必須の機能ですが、これまで Drupal コアではサポートしていませんでした。このインストールと設定は複雑でサイトビルダーに大きな負担となっていました。Drupal 8 ではCKEditor が標準でインストールされ殆どのケースでセキュアに使えるように注意深く予め設定されています。これまでは PHP モジュールを使ってサイトビルダーが PHP コードをブラウザから書き込むことができましたが、コアから削除されました。PHP をブラウザから書くことは推奨されない作法でしたし、設定がしっかりなされていないサイトに悪意あるユーザーが高い権限を持った場合 PHP コードをサーバーで実行できる問題がありました。URL から送られるすべての変数は新しいルーティングシステムで適切に扱われます。おかしなデータ、意図しないデータは標準でフィルターされます。Drupal 7 のコア API で提供されていた CSRF (クロス・サイト・リクエスト・フォージェリー)対策も引き続き有効です。Drupal セキュリティチームと呼ばれるボランティアで組織されたチームが Drupal コアのセキュリティ問題やセキュリティ勧告を管理しています。Drupal 8 では多くの外部コードを利用しますので、外部ライブラリに対するセキュリティ勧告は非常に重要になります。外部ライブラリを使うモジュールは依存性があるライブラリのセキュリティに問題が会った時に hook_requirements イベントを使ってアラートを出すことができます。外部で書かれたコードも Druapl 8 のコードベースの一部になっています。それらの外部コードでセキュリティ問題が発覚した場合、セキュリティチームは外部の開発者と一緒に問題を解決しセキュリティ勧告を双方のコードベースでリリースします。Drupal8は自動アップデート機能をすぐに使えるような形では提供しません。しかし、Drushコマンドやバージョン管理システム、自動テストツールなどの CI(継続的開発)プロセスを利用することで自動アップデートが可能になります。

Kentaro Inoueの写真

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

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

関連コンテンツ