Contents
Shopifyとは
Shopifyは独自ECサイトを簡単に作れるWebサービスである。
Shopifyはサードパーティー製のアプリをインストールすることで機能拡張できる点が特徴的である。
アプリはストアに対して有償で提供したり、無償で提供して使用料を期間ごとに課金することができる。ただし、Shopify経由で課金する場合は、20%を手数料として取られる。
アプリがストアに対して提供する機能
アプリがストアに対して機能を提供できるシーンは3つある。
- フロントエンド
エンドユーザーが買い物をする際に表示するWebページに対しての機能を提供する。何らかのWebコンポーネントとして結果を返して画面上に表示させることもできる。コンポーネントの記述はPolarisを使用する。
また、ストア管理者向けのページに対しても機能を提供することができる。 - テーマ
テーマもフロントエンド向け機能であるが、Shopifyが標準で提供する画面構成を使用せずに、画面構成全体をアプリ提供者が提供する。
アプリ機能を組み込んだ、より一体感のある画面構成を提供したり、単に独自性のあるUIを提供するために使用できる。
テーマの記述にはRubyベースのLiquidを使用する。 - バックエンド
決済時や注文時など、エンドユーザーには見えないが、買い物機能を完結させるために裏側で動く機能を提供する。
Shopifyがアプリに対して提供する機能
APIは多数あるが、大まかに下記のようにグルーピングされている。
APIはいずれもHTTPベースであるが、REST形式とGraphQL形式の2種類が提供される。ただし、GraphQL形式でしか提供されないAPIもあり、今後はGraphQL形式が主流になると考えられる。GraphQLはAPI中の不要な項目に対するアクセスは行わないので、パフォーマンスの面でも有利である。
- Admin API
Shopifyが持つ様々なデータにアクセスするためのAPI - Storefront API
各々のストアが持つデータにアクセスするためのAPI - Shopifyテーマ
テーマを作成・管理するための機能群 - Shopify App Bridge
通常APIはアプリ提供者のインフラで動作するのに対し、Shopify App BridgeはWebブラウザ上で動作するJavaScriptライブラリであり、UIコンポーネントの構築・書き換え専用で使用できる。
Shopifyアプリのアーキテクチャ
ShopifyアプリはWebアプリケーションとして開発・提供される。
実行基盤はアプリ提供者のインフラであるので、Webアプリケーションを動作させられる任意の環境・言語・フレームワークを使用できる。
なお、アプリをShopifyにインストール/組み込むといった記述が各ドキュメントに見られるが、実際にShopifyインフラにアプリをインストールするわけではなく、あくまでアプリの動作基盤はアプリ提供者のものである。
Public apps
Shopifyのアプリストアで公開され、誰でも使用できるアプリである。ただし、公開前に審査がある。
Custom apps
Shopifyのアプリストアで公開されず、特定の1ストアでしか利用できないアプリである。使用前に審査は不要である。
開発時もCustom appsとして開発し、公開時にPublic appsとする。
以前は開発時はPrivate appsという形態で開発がされていたが、Private appsは現在は非推奨である。