メインコンテンツに移動

雑記 Drupal8 End of lifeに思いを寄せる

2021-12-19

Drupal Advent Calendar 2021 の19日目の記事です。

はじめに

2021/11/2にDupralのバージョン8 の End of Life を迎えました。

Symfonyベースでリリースされてから約6年、私もその間Drupalを使ったサイト開発に携わっていてDrupal8にはずいぶんお世話になりました。

Drupal8のリリースノートと自分の過去を思い出しながらDurpal8を振り返ってみたいと思います。

サイトビルダーやバックエンドの話多めで、フロントエンドはほぼ触れません...w

8.0.0 - 2015/11/19 リリースノート

  • SymfonyベースになったDrupalが完成
  • Drupal7とは本当に互換性なし。

全てはここからですね。

機能面ではレスポンシブ、多言語、Views、フィールドの種類など、今では当たり前な機能がDrupalコアに取り込まれたバージョンです。どれも無いと困るw

私が確認できた最古のα版(8.0-alpha2)リリースが2013/1/24、正式リリースまで2年半以上かかったようです。

Symfonyをベースにしたことでコアがほぼ作り直しでありながらリリースできるまで仕上げたDrupalコミュニティすごすぎって純粋に思います。

また各地でリリースパーティが行われ日本でも開催されました。当時の記事はこちら。

実はこのリリースパーティに参加していて、私にとって初めてDrupalのイベントでした。 実はよくわからないまま参加していましたが写真を見ると現在進行形でお世話になっている方も多く、参加できてめちゃくちゃラッキーだったなーと思っています。

8.1.0 - 2016/4/20 リリースノート

  • 依存関係の解消にComposerを採用、導入
  • コアの修正多数!リリースノートに譲りますw

Drupal8はリリースされたもののDrupalの機能の大きな部分を占める各種コントリビュートモジュールのDrupal8対応はDrupal8リリースからスタートしたように思います。

Durpal9の時は早い段階で各種コントリビュートモジュールが新バージョン対応していたように思います。 それはバージョンアップ対応が軽微だったからであり、Drupalコアを作り直したDrupal8は各種コントリビュートモジュールもほぼ作り直しを余儀なくされました。

そのためこの時点で商用で採用するには厳しく、 私が担当した2016年の新規案件はDrupal7で構築しました。

当時、仕事で全然D8を触ってなかったのでリリースノートを見ても知らないことばかり。今では当たり前のComposerは8.1で入ったことを今回知りました。

また8.1と8.2の間にHighly Criticalのセキュリティ通知があったのですが、 Drupal Core - Highly Critical - Injection - SA-CORE-2016-003 対象はPHPライブラリのGuzzleだったので、8.1でComposerベースにしといて本当によかった事案だろうなと思いました。

8.2.0 2016/10/5 リリースノート

  • Experimentalモジュールが多数登場(現在は全部正式版に昇格)
  • まだまだコアのソースがガンガン修正されている

この頃はDrual7攻略に必死だったので、8.2の思い出がありませんw

少し前の2016/07/25にDrupal Meetup Tokyoの第1回目が開催されていたので、デモサイトではちょこちょこインストールして動かしてはいたんだと思います。

8.3.0 - 2017/4/6 リリースノート

  • REST API系の修正が多い(JSON:APIはずいぶんあとに入ります)

コントリビューションモジュールが揃ってきた時期で 私はこの頃から業務でもDrupal8をさわるようになったと記憶しています。

ただDrupal.orgの開発ドキュメントはあまり充実していなくて、FormとかControllerでページそのものばかり作っていたように思います。

後日、2019年にDrupal認定試験を受けた際にDrupal.orgの開発ドキュメントを読み込んだんですが、びっくりするくらい充実していました。 この時点ではドキュメントよりコアの機能改善にパワーが必要だったんだろうなと思います。

8.4.0 - 2017/10/4 リリースノート

  • IE9,10がサポート対象外へ

このあたりからマイナーバージョンアップで問題発生に当たることが多くなりました(個人の感想です)。リリースノートにあるFile usage trackingはプロジェクトに直撃した記憶があります。

そんなこともありつつ、この頃私は結構大きいリプレイス案件を担当していたこともありDrupal8の威力を存分に実感していました。

サイト構成(config)がymlファイルで共有できることを利用して、 サイトビルダーが管理画面の操作でどんどんサイト構成を進化させていき、足りない機能をバックエンドエンジニアが作成、サイトビルダーに渡して画面からセットする...みたいな開発が可能で、サイトビルダーとバックエンドエンジニアで役割分担して並行開発を進めていました。

さらにデータ移行はMigrate APIを使えばymlでマッピング定義が完成し、特殊なデータマッピングもその機能だけバックエンドエンジニアが部品として作成すればよく、データ移行の実行も手順だけあればサイトビルダーが実行できる。

プロジェクトにいろいろなレベルの人が参画できて機能の並行開発も容易というのはDrupal7では出来なかった開発の進め方だと思います。

この時私は管理作業がメインで、サイトビルダーの役割はスポットで入ってくれたDrupal初めてな方々が担ってくれました。Drupalを覚えながらプロジェクトを前に進めてくれた皆様には本当に感謝しかありません。

8.5.0 2018/5/7 リリースノート

  • Mediaがコアへ正式に導入

たしかこのバージョンだったと思うですが、タクソノミータームのツリー構造を保持していたDBテーブルの構成が変わったような気がします。バージョンアップの時のDBアップデートでデータ移行のアップデートが失敗するケースがあり、右往左往したような記憶があります。

またMediaがコアに入ったことで、コントリビューションモジュールとして導入していたMediaモジュールと競合して困った気がします。この時はコアのMediaは無視して、コントリビューションモジュールを利用し続ける選択をとったような気がします・・・その後どうなったのだろう。

8.6.0 - 2018/9/5 リリースノート

  • デモ用インストーラーUmami登場
  • タクソノミータームが掲載/非掲載フラグを持つようになる

UmamiのデモサイトはDrupalとしては革命的だったように思います。 インストールしたらデモサイトできてる!青くない!w

英語とスペイン語でできたデモサイトなので、お客さんへのデモにはちょっと使いづらくて日本語化したり、Umamiを使わないで用意したりもします。

最近では多言語やワークフローで問題があったら、Umamiと比較して問題の切り分けに使ったり、issueを出すときにUmamiをインストールして...から説明を始めたりするのに利用しています。

8.7.0 - 2019/5/1 リリースノート

  • Layout Builder正式版リリース
  • JSON:APIがコアに正式導入
  • タクソノミータームがリビジョン利用可能になる

JSON:APIとLayout Builderというなんとも真逆なモジュールが正式版となりました。

Layout Builderのおかげで、twigを用意しなくても自由に配置を制御できるのでコンテンツのview modeを活用する機会が増えました。

あと地味に痛いのがEntityのスキーマ変更のときにdrush entupを実行していいようにDBテーブルの構成を更新してくれていたのですがこのバージョンでコアからコードが無くなったようです。 DBテーブルの変更なのでそりゃそうだよねとも思う。

8.8.0 - 2019/12/4 リリースノート

  • Path Aliasの構造変更

Path Aliasの構造はDrupal7時代を継承したままだったのですがEntity化したことにより、DBテーブル構造に変更が入りました。大規模サイトほどきつかったのではと思います。

Entity化したのでリビジョンを持てるようになったはずですが、管理画面の操作は変わらず掲載・非掲載などのタイミングでしかPath Aliasを変更できないので、なんなんだーwとは思っています。

8.9.0 - 2020/6/3 リリースノート

Drupal8の長期サポート版ということで大きな機能リリースはありません。

といいつつ、このタイミングでDrupal7から8へのNode移行の構成が地味に変わっていてあれ?と思ったことはありました。(新バージョンの方が便利です)

ここからDeprecatedメソッドなどが取り除かれたの9.0.0が同時にリリースされています。

2020年初頭からDrupal7から8へのバージョンアップが熱かったように思いますが、 小さなサイトはDrupal8にせず別のフレームワークに移行したケースも多かったように思います。Drupal7と8では向いているサイトの規模が変わったのでしょうがないことだとは思います。

D7 -> D8の移行はEntity translation と Field collection から Paragraphs が痺れました。よくちゃんと動いていたなって思うくらいD7側のデータパターンが多いwけど移行できます。

おしまいに

各バージョンのリリースノートをみていただけると分かるのですが、多くのコントリビューターによってDrupalの進化が支えられています。 今回振り返ってみて私も少しづつその一員になれるようコントリビュートしていこうと改めて思いました。

もしDrupalを使っているよっという皆様、各地でコミュニティ活動があります。

ConnpassでDrupalで検索したり、アクイアジャパンのTwitterを見てみるのがおすすめです。 コロナ禍でオンライン参加できるものが多いので、ぜひ機会があったら参加してみてください。

それでは。