アーキテクチャ
アーキテクチャCMSに依存しない設計

CMSに依存しない設計

Gato GraphQLが基盤とする基本的なGraphQLサーバーはCMSに依存しない設計となっており、WordPressだけでなくLaravelやSymfonyなど、あらゆるPHPのCMSやフレームワークで動作します。

CMSに依存しない設計を実現するために、CMSと連携する必要があるすべての機能は2つの独立したパッケージに分割されています:

  • CMSに依存しないパッケージ:どのCMSが実装されていても対応できるように、すべてのビジネスロジックとCMSとのやり取りに関するコントラクトを含みます(例:posts
  • CMS固有のパッケージ:特定のCMSに向けたコントラクトの実装を含みます(例:posts-wpは、WordPress向けのコントラクトを実装しています)

そのため、コードの大部分(約90%)はCMSに依存しないパッケージに含まれています。APIを別のCMS(例:WordPressからLaravel)に移植する場合は、CMS固有のパッケージのみを実装すれば済みます(全体のコードの約10%に相当します)。

再実装が必要なコード量を最小限に抑え、パッケージ間のコード重複を避けることが、コードをパッケージに分割する方法を定義する主な方針となっています。

Next