オープンソース・ソフト Drupal を使った Web サイトの構築・サポート・研修

継続的な刷新に向けた Drupal 8 の転換

過去においては、Drupal の各メジャー リリースのあと、ほとんどの刷新(改良)は2つの分野に入った。すなわち、1. 現在のリリース(バージョン)用の拡張(貢献)モジュール、そして 2. Drupal の次期メジャー リリース用のコア開発作業だ。この刷新モデルは、長年にわたる、いくつかの方針から来る直接的な結果だった。その方針には、メジャー リリース間で後方互換性を断つという僕たちの「文化」も含まれている。

このアプローチは多くの形で実によく役立った。よりクリーンで、よりモダンで、より柔軟なコードベースのため、アーキテクチャーを大きく変更することに大きな力点が置かれた。(逆に)マイナス点は、リリース 周期が非常に長いこと、アップグレード パスにコスト(負担)がかかること、コア開発者の意欲を高めにくいこと(プロダクション サイトで利用できるようになるまで何年も貢献を続けなくてはならない可能性があるため)だった。そのいい例が Drupal 8 の開発だ。Drupal 8 におけるアーキテクチャーの変更は Drupal のコードベースがよりモダンで柔軟になるのを本当に推進してくれた。しかし、それは4年半の開発期間、複雑なアップグレード パスという犠牲も伴った。

Drupal が成長する ―― コードの行数、拡張モジュール数、市場における普及 ―― につれ、後方互換性の遮断だけに頼って刷新を行うのは、ますます難しくなる。その結果として、僕たちは Drupal 8 のリリース後にスタートするかたちで自らの哲学を発展させることを決めた。

競争力を保ち続ける唯一の方法は、最高の製品を持つことと、それをよりシームレスに普及させることだ。これは、僕たちが自らを再考案し続けなくてはならないことを意味する。しかし、その結果生じる変化への不安を減らし、変化を取り入れやすくする必要がある。新しい機能、API の追加、そしてより容易なアップグレード パスを備えた Drupal のリリースをもっと頻繁にしたい、と僕たちは決めた。

これらの目標を達成するため、僕たちは3つの新しい慣例を定めた:

  • セマンティックなバージョニング:「major.minor.patch(メジャー番号.マイナー番号.パッチ番号)」というバージョン番号ルール。これによって、Drupal 8.1.0 や 8.2.0 といったマイナー リリースに、後方互換性のある、際だった改善を加えることができる。
  • スケジュールに基づいたリリース:予測しやすくするため、新しいマイナー リリースの時期は年に2回、設定する。また、質を確保するため、これらマイナー リリースにはそれぞれ独自のベータ リリースとリリース候補(rc)を設け、変更が許される範囲について厳格なガイドラインを定める。
  • コアに含める実験的なモジュール:コア パッケージと一緒にリリースされる、オプションとしての、安定度がアルファ レベル(以上)のモジュール。これにより、新しい機能を広め、フィードバック(意見や報告)を収集し、モジュールが安定するまでの予定路線上におけるサイクルをより速くすることができる。

Drupal 8 がリリースされて約 10 か月、そして、Drupal 8.2 が来週リリースされる予定である現在、この新しいプロセスがどう機能しているか、振り返ってみよう。Drupal 8.1 では2つの実験的モジュールが導入された(BigPipe モジュールおよびデータ移行用のユーザー インターフェイス)。また、さまざまな API が追加され、CKEditor のスペルチェック機能など、ユーザビリティー改善も加わった。Drupal 8.2 では、さらに移行システムが安定し、多数の実験的なアルファ機能が入る予定だ。そのなかには、顕著なユーザビリティー改善(たとえば、ブロック配置およびブロックの設定)、日付範囲(date range)のサポート、高度なコンテンツ モデレーションなどがある。その他、安定した改善点、実験的な改善点まで含めると、それは長いリストになる。

これらの定期的な機能アップデートによって機能刷新がより速くなるのは明らかだ。以前だったら新しいメジャー バージョンにする必要があったほどの新しい性能を Drupal に追加できるようになった。また、実験的なモジュールによって、機能をより早くユーザーの手に届け、フィードバックを素早く得ると共に、実装しているものが適切であることを確かめられるようになった。そして、計画されたリリース サイクルによって、僕たちはこれらの改良をより頻繁かつ、もっと予測可能なかたちで提供していける。全体として、僕たちは継続的に刷新していくことができるようになる。僕たちは、持続可能なやり方で、より多くの価値をより少ない時間でユーザーに届けられる。また、より多くの開発者をコアへの貢献に従事させることができる。

コアに関して僕たちが継続的に刷新していく能力を Drupal 8 が一変させた様子を見るとワクワクする。僕たちが次は何を成し遂げるのか、僕はとても楽しみにしている。これは、Drupal 9 にとって、これが何を意味するのかという問いを提起することにもなるが、それは今後のブログ記事で扱うつもりだ。