Oct 18, 2017からサンフランシスコで開催されている BADCAMP 2017 に来ています。非常に興味深いセッションが多く開催されていますが、特に面白いと感じたものを紹介していこうと思います。
A look into a possible Future for all of us: React, GraphQL and Drupal
セッションの内容
フロントエンドとバックエンドを完全に分離して設計する、いわゆる Full decoupledなシステム設計がここ数年に渡って継続的に議論、研究されてきました。実際にこのアーキテクチャを採用した事例やチームはいくつか存在しますが、SEO対策、APIの変更によるリファクタリングのコスト、フロントエンド向けの管理メニューの表示など、様々な課題があります。
amazeelabs では、単一のDrupal Backendを使い、コンテンツを共有しながら12個のReactで実装されたサイトを構築したそうです。フロントエンドの要素技術としては、React, Appolo, Reduxというメジャーな組み合わせで、バックエンドはDrupal 8 + GraphQL モジュールというシステム構成とのことです、意外とシンプルですね。プロダクション環境では更にCDNも使っているようです。
データの取得にGraphQLを使うことで従来のREST APIを使う方式よりバックエンドとの通信の回数が減少し、GraphQL モジュールがDrupalのキャッシュ及びキャッシュタグをサポートするため、パフォーマンス的にも非常に優れているのことです。また、Node.jsを使ってReactアプリケーションがサーバーサイドでレンダリングした結果をブラウザに返すことにより、通常のWebサイトと同様にBotやクローラーからのアクセスも受付けることができ、SEO対策も問題ないとのことでした。
同じアーキテクチャを採用したサンプルアプリケーションがgithubに公開されているので、興味がある方はぜひ試してみてください。
https://github.com/drupal-graphql/drupal-decoupled-app
まとめ
ReactとGraphQLというトレンドの技術とDrupalを組み合わせてどのような事が実現できるか。また、実際にプロダクション環境に展開する際にどのような問題があり、どのように解決したかなど、技術的に突っ込んだ内容が聞ける非常に良いセッションでした。
GraphQLは直感的で柔軟なクエリ言語ですが、使う側がデータの構造を意識する必要があります。GraphiQL のようにクエリを書く際に補完してくれる仕組みはありますが、それでも扱うデータが複雑になってくると簡単にクエリを書くのは難しくなってきます。
GraphQLのバックエンドデータベースとしてDrupalを使うことで、全体的に統一されたスキーマを維持しつつ、コードベースの開発を極力せずにデータ構造を拡張していけるため、GraphQL + Drupalは非常に相性の良い組み合わせであると感じました。
関連コンテンツ
- 新しい古典:Jamstack と MACH が従来の CMS の概念に向け進化する
- Headless CMS というトレンドに Drupal は適応している!?
- State of Drupalプレゼンテーション(2021年4月)
- アクイアのサービスの中核を担う Cloud Platform とは
- 第 16 回 Drupal をもっと知りたい方に向けた各種情報
- 第 14 回 Drupal のテーマシステムについて
- 第 3 回 Drupal の特徴
- Node.jsを用いて、REST APIで外部からDrupal8にコンテンツを投稿する
- Contenta CMSによるDecoupled Drupalサイトの構築
- CMSの第四の波 Distributed CMS (Drupal Developer Days Transylvania 2019)
Drupal 初心者講座バックナンバー
- Drupal 9/10 初心者講座
- 第 1 回 歴史に見る Drupal の DNA
- 第 2 回 Drupal はフレームワークか?CMS か?他の CMS との比較
- 第 3 回 Drupal の特徴
- 第 4 回 Drupal 9 / 10 のインストール (1)
- 第 5 回 Drupal 9 / 10 のインストール (2)
- 第 6 回 Drupal にコンテンツを投稿してみる
- 第 7 回 Drupal のボキャブラリとタクソノミーの使い方
- 第 8 回 コンテンツ管理における Drupal と他の CMS との比較
- 第 9 回 Drupal のブロックシステム
- 第 10 回 Drupal の標準クエリビルダー Views の使い方
- 第 11 回 Drupal と他の CMS のクエリビルダー機能を比較
- 第 12 回 Drupal の多言語機能と他の CMS やサービスとの比較
- 第 13 回 Drupal の権限設定と WordPress や Movable Type との比較
- 第 14 回 Drupal のテーマシステムについて
- 第 15 回 Drupal の拡張モジュールの選定と使い方
- 第 16 回 Drupal をもっと知りたい方に向けた各種情報