以前このブログでも書いたPreston So さんの著書を読んだので書評と言うかレビュー的なものを書きます。
Preston So さんについて
Decoupled Drupal の世界的なリーダーであり、 Decentralized Web や会話形 デザインの専門家でもあります。プレストンは、 Acquia Inc.(アクイア社)でリサー チ・アンド・イノベーションディレクターを務めており、イノベーションセンターである アクイアラボを率い、ネスレやジョージア州政府などのプロジェクトにて次世代の アーキテクチャの開発に貢献しています。 - DrupalCamp DEN Japan 2018 基調講演
Decoupled Drupal in Practice について
全 6 部のかなりボリュームのある内容だったので、各部ごとに含まれる章の見出しリストとコメントを書いていきます。
1.Decoupled Drupal Fundamentals
- The Changing Web
- The Server Side: From Monolithic to Decoupled CMS
- The Client Side: From Static to Dynamic Pages
- Decoupled Drupal
- Advantages of Decoupled Drupal
- Disadvantages of Decoupled Drupal
第 1 部 1,2,3 章は Decoupled Drupal の基礎として、Web の利用方法の変革とそれに伴う Web 界隈の多くの人が CMS として認識しているモノリシックな(コンテンツとプレゼンテーションが一体化)CMS からコンテンツリポジトリ(コンテンツとプレゼンテーションが分離)としての CMS と Javascript フレームワークの進化の話だった。またこの中の脚注で出てくる、用語の定義としてHeadless CMSとDecoupled CMSとどっちも微妙みたいな話が紹介されているけど、GUI 部分が残ってることから僕は Decoupled の方が妥当かなと思った。
4 章では Decoupled CMS としての Drupal の話で、3 つのタイプ(Fully Decoupled Drupal, Pseudo-Decoupled Drupal, Progressively Decoupled Drupal)の概念が紹介された。Pseudo-Decoupled Drupalは知らなかったんだけど、後で出てくる Decoupled Drupal の欠点を回避するためのキメラみたいな方法だなと思った。
5,6 章では Decoupled Drupal の利点と欠点が紹介され、利点はすでにいろんなところで宣伝されているので目新しいところはなかったが特に欠点については興味深い話ばかりだった。これは実践者じゃないとわからないことが多いと思うので、この部分だけでもこの本を買う価値があるなと思った。Decoupled Drupal を導入すると、ほとんど言っていいほどここ数年進化してきた Drupal のコンテンツ編集機能(レイアウト変更やインライン編集)が使えなくなるというのは目から鱗で、この本の最後の方でやはりコンテンツの編集者側からは不満や不安な声が上がっているとのことだった。これを解決しようとしているのが、Pseudo-Decoupled Drupal だけど疎結合にしたバックエンドとフロントエンドの結合度が上がってしまい、苦しさが増す感じだった。
ちなみにこの章はコードは出てこないので、Drupal を知らないエンジニアでも読めます。全体を俯瞰するのに非常に良かったです。
2.Decoupling Drupal
- Decoupling Drupal 8 Core
- Decoupling Drupal 8 with Contributed Modules
- Authenticating Requests in Drupal 8
ここからコード出ててくるのと手を動かせる部分が出てくるので Drupal を知っていないとわかりにくいかも。コアモジュールとコントリビュートモジュール(JSON API, RELAXed Web Services, GraphQL)と認証方式の紹介。さらっと書いたけど、今をキャッチアップするのに良かった。Drupal エンジニアは全員読むべし。
3.Consuming and Manipulating Drupal 8
- Core REST
- Using Views with Core REST
- JSON API in Drupal
- RELAXed Web Services
- GraphQL in Drupal
ここもコードと画面キャプチャ出てくる。どの章も技術ごとに目的や実際の操作法が詳しく書いてあってそれぞれの概要を把握するのに良い。実際に手を動かしたりするのは必要なタイミングで行えばいいし CRUD の部分は飛ばし読みした。
最初RELAXed Web Services モジュールの利点とか使いどころがわからなかったけど、CouchDB 互換なのでクライアントサイドでPouchDBやHoodieを利用しウェブアプリのオフライン対応しやすいと知って興味が出た。GraphQL モジュールから変更を行う部分が削除された話は面白かった。
4.The Decoupled Drupal Ecosystem
- API-First Distributions
- Software Development Kits and Reference Builds
15 章は Decoupled Drupal 用に Drupal を改造したディストリビューション特徴と目指す方向の違いを紹介。16 章は SDK といくつかの JS フレームワークでのリファレンスビルドの紹介。この中でContenta.jsを知ったけどこれがまた興味深かった。
5.Integration with Consumers
- React
- React Native
- Angular
- Vue.js
- Ember
コードサンプルで動かすことができる。それぞれのフレームワークは知っていたので必要になったら読めばいいかな。全てJSON API モジュールを利用したコードだった。
6.Advanced Topics in Decoupled Drupal
- The REST Plug-in System
- Contributed Modules for Advanced Use Cases
- Schemas and Generated Documentation
- Caching
- The Future of Decoupled Drupal
22,23,24,25 章は必要になったら読めばいいと思いつつ興味深かったので結構しっかり読んだ。
最後の 26 章では現時点の Decoupled Drupal と未来やアイデアについてが、各方面に配慮しつつ書いてある。ここはニュアンス含め是非読んで欲しいです。
まとめ
本書内容とは直接関係ないけど、一言で言って Drupal 規模の巨大 OSS を正しくリードするのって大変だなと思った(そういう苦労を文章から端々に感じた)。内容は大満足で、Decoupled Drupal についてそのうちキャッチアップすればいいやと思っていたのでこのタイミングで体系的にかつ俯瞰出来るが非常に良かった。
ただ、技術書とはいえ洋書で言い回しが若干難しい感じだったし、分量も製本版だと 520 ページ換算で密度も濃かったのでズッシリきた。なので、オススメとしては第 1 部と最後の 26 章を読んで、あとは気になるところを読むのがいいと思います。
おまけ
Decoupled Drupal が出てきたように、今現在 Drupal の標準とされているものもどんどん変わって行きその中には人によって割と苦痛を伴う変更も増えていく(Composer 化や非 jQuery 化などなど)と思う。その一端として Drupal8 からそれまでコントリビュートモジュール(周辺の技術者が開発)だったものが、コア(本体・本家)に取り込まれて行きよりOpinionatedな側面を増して未来にあるべき CMS の姿を示そうとしているように感じる。その意味で他の新しい技術比較しても Drupal の未来は明るいと思ったし、仕事のツールとしても信頼できるので引き続き Drupal および Drupal コミュニティにコミットして行きたいと思う、そんな一冊でした。