アーキテクチャ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