COOSY BLOG
  • HOMEホーム

  • SERVICEサービス

    • サービスTOP
    • Web制作
    • ブランディング
    • デジタルマーケティング
    • 戦略企画
    • DX推進・システム開発
    • グローバル展開
  • WORK制作実績

    • 制作実績TOP
    • コーポレートサイト
    • 採用サイト
    • ECサイト
    • プロモーション
    • サービスサイト・SaaS
    • システム開発
  • ABOUTクーシーについて

    • クーシーについて
    • 会社情報
    • 私たちが大切にしていくこと
    • お知らせ
    • クーシーラボ岩手
    • ロンドン支社
    • ミャンマー支店
  • BLOGブログ

  • RECRUITリクルート

  • Contactお問い合わせ

BLOG MENU

  • BLOGトップ
  • 目的別

    • 目的別TOP
    • コーポレートサイト
    • ECサイト
    • オウンドメディア
    • 採用サイト
    • プロモーション
    • Webサービス
    • LP
    • ブランディング・CI
  • Web制作ハウツー

    • Web制作ハウツーTOP
    • UIUX・サイト設計
    • WebデザインTips
    • PM/ディレクション
    • フロントエンド(HTML/CSS)
    • 撮影・動画編集
    • ライティング
    • CMS
    • Web制作ツール
    • イラスト
  • システム開発

    • システム開発TOP
    • プログラミング
    • EC構築
    • CMS開発・構築
    • サーバ構築
    • データベース構築
    • セキュリティー
  • Webサイト運用のコツ

    • Webサイト運用のコツTOP
    • サイト運用・管理・保守
    • コンテンツ運用
    • CRM(顧客管理)
  • Webマーケティング

    • WebマーケティングTOP
    • SEO対策・トレンド
    • コンテンツ制作・SEOライティング
    • アクセス解析
    • Web広告
    • Web集客ハウツー
  • 特集

    • 特集TOP
    • Web最新トレンド
    • カルチャー
    • ガジェット

Share on

  • Xでシェアする
  • Facebookでシェアする
  • このエントリーをはてなブックマークに追加

はじめてのShopifyのコーディングで注意する2ポイント

  • 目的別
  • システム開発
  • ECサイト
  • EC構築
はじめてのShopifyのコーディングで注意する2ポイント

先日案件にてShopifyのコーディング作業に携わりました。
Shopifyの需要は多くなってきていますが、情報がまだまだ少ないので、悪戦苦闘しながらの作業になりました。
(英語の情報が多く、日本語の情報は少ない)

はじめに結論を言うと、今回ブログでお伝えしたい注意点は以下の2つになります。

  • 開発作業の複数人展開は上書きに注意
  • 画像ファイルの参照で1手間2手間かかる

前者は主に作業フローにおける注意点で、後者はコーディング上の注意点になります。

上記の要因には、Shopifyコーディングにおけるいくつかの特徴といえる部分が影響します。なぜそうなるか要因となるShopifyコーディングの特徴を合わせて解説します。

ローカル環境で動作確認ができない

動作確認の流れ

Shopifyが提供しているTheme Kitを使うことで、ローカルでテンプレートファイルを修正したりすることは可能です。しかし動作確認はShopifyにアップロードする必要があります。Shopifyへのアップロードとデプロイが完了すると、
https://xxx.myshopify.com
の様なShopify上のURLで実際に確認できます。

作業的には、何かコーディングをしては毎回コマンドプロンプトで、

$ theme deploy

というコマンドを打って、ブラウザ確認するイメージです。

「これ毎回打つのは面倒だな…」という場合は

$ theme watch

というコマンドを打つことでローカルファイルの変更を検出&自動デプロイが可能です。

毎回デプロイをする手間は解決できますが、実は落とし穴があり、その仕様が冒頭で紹介した次の注意点につながります。

開発作業の複数人展開は上書きに注意

ローカルにあるすべてのテーマファイルが同期される

先ほどのデプロイコマンドを実行すると、ローカルにあるすべてのテーマファイルがリモートに同期されデプロイされます。

一つの開発環境(作業確認ができるURLが1つ)に対し、複数人が作業をする場合、誰かデプロイすれば別の誰かの作業は上書きされてしまうので開発環境から消えます。要するにデグレが起きます。
差分ではなくローカルのすべてのテーマファイルが同期されるからです。

では複数人での展開作業が全くできないのか、と言われれば決してそうではありません。

まずデプロイコマンドにオプションをつけることで、全てのローカルファイルではなく、特定のファイルだけをリモートに同期しデプロイすることが可能です。

例:assets/theme.css.liquidだけを同期&デプロイしたい

$ theme deploy assets/theme.css.liquid

またリモート(の差分)をローカルに同期するコマンドもあります。

$ theme download

上記コマンドを駆使しつつ、以下のようなフローを踏めば複数人での作業が可能です。

複数人で作業する際のフロー

前提

作業ファイルが被ったらアウト。
各作業者の作業分担をしっかり割り振りし、作業ファイルが被らないようにする。

フロー

デグレが起きないように必ず以下のフローでデプロイする。

  1. デプロイ前に必ずリモートと同期する(theme download)
  2. デプロイは作業したファイルだけ(theme deploy 作業したファイル)

1回のオペミスで他の全ての作業が飛んでしまうことも十分ありうるので、各作業者は細心の注意が必要です。
とはいえ、人が作業する上でオペミスはつきものです。
上記フローに加えて、各作業者のテーマファイルをgit管理しておくとより安心ですね。


次はコーディングにおける注意点です。

Liquidという独自の言語

ShopifyはLiquidという独自の言語で作業をします。
テンプレートファイルやCSSファイルは.liquidという拡張子になります。

例
テンプレートファイル

theme.liquid

cssファイル
theme.css.liquid

マークアップは
出力
{{ }} 二重中括弧

タグ
{% %} 中括弧パーセント

の2種類で行います。

出力{{ }}の中には出したいオブジェクト、タグ{% %}の中には条件分岐やループ処理等を記述します。

【簡単な例】
もしuser.nameがcoosyだったら、こんにちはcoosyさんと出すサンプルコード

{% if user.name == 'coosy' %}
  <p>こんにちは{{ user.name }}さん</p>
{% endif %}

Railsやphpを触ったことがあればさほど違和感を覚えるようなコードではありません。ある程度のサンプルコードは、テーマのテンプレートファイル中に用意されていたりするので、探り探りでも作業は進められます。

CSSで画像を使いたい場合は1手間2手間かかる

theme.liquidで画像を呼び出す

画像ファイルは/theme/assets/ディレクトリに置くことで、Liquidテンプレートからは{{ }}出力で呼び出せます。

例

{{ "com_ic.png" | asset_url }}
出力イメージ→//cdn.shopify.com/s/files/x/xxxx/xxxx/xxxx/x/x/assets/com_ic.png?xxx

出力されたパスをみてわかるように、CDNを使って画像を呼び出すので画像の高速表示は期待できそうです。”?xxx”といったファイルのバージョンにあたるクエリも自動で付けてくれるので「画像を差し替えたけど変わらないよ」みたいなこともなさそうですね。これは素晴らしいです。

imgタグで画像を使う場合は上記で良いのですが、CSSで背景画像を使いたい場合はどうすればよいか?
theme.css.liquidといった拡張子が.liquidのCSSファイルであれば同じく{{ }}出力で呼び出しが可能です。

CSSで画像を呼び出す
background-image: url({{ "com_ic.png" | asset_url }});
出力イメージ→
background-image: url(//cdn.shopify.com/s/files/x/xxxx/xxxx/xxxx/x/x/assets/com_ic.png?xxx);

問題はSassでコーディングしたい場合はどうすればよいか。
scssからcss.liquidファイルを書き出すことはできません。そもそも{{ }}出力というLiquidの記述は、コンパイルでエラーになるのでムリですね。

この解決法として今回考えたのが以下2点。

  • 画像を参照するCSSだけ Liquidテンプレートに書く
  • Sassの変数を使ってパス部分を生成する

画像を参照するCSSだけ Liquidテンプレートに書く

方法1:Sassではなくthme.liquidで画像を呼び出す
//.liquidファイル側
<p class=”link”><a href=”DUMMY”>テキストリンク</a></p>
<style>
.link > a {
  background-image: url({{ "com_ic.png" | asset_url }});
}
</style>
//外部CSS側
.link > a {
  display: inline-block;
  padding: 0 0 0 20px;
  background-position: 0 50%;
  background-size: 10px 10px;
}

画像を参照するCSSだけ.liquidファイル側に書いて、他のCSSは外部ファイルのCSSに記述するイメージです。
インラインでのCSSコードは元々用意されているテーマファイル内にも散見されたので、Shopifyのコーディング方法の1つとしていいでしょう。

Sassの変数を使ってパス部分を生成する

方法2:Sassで画像を呼び出す
//path部分の変数を用意する
$assets_path: "//cdn.shopify.com/s/files/x/x/x/x/x/x/assets/";
//$assets_pathという変数を使って背景画像を指定する
.link {
  & > a {
    display: inline-block;
    padding: 0 0 0 20px;
    background-image: url(#{$assets_path}com_ic.png);
    background-position: 0 50%;
    background-size: 10px 10px;
  }
}

こちらはassetsのパスを変数として用意し、その変数を使ってSassでコーディングするイメージです。
この方法であれば.liquidファイル以外でも画像を参照するコーディングが可能。

注意点としては、CDNのキャッシュが強力なので、画像ファイルを差し替える場合は手動でクエリをつける必要があります。
※そうしないとすぐには反映されません。

例

// com_ic.pngを差し替えたので?xxxを追加
background-image: url(#{$assets_path}com_ic.png?xxx);

もしも複数回画像差し替えが発生した場合はその都度手動で、
?xxx、?xx1、?xx2、?xx3…
などとクエリを変える作業が必要です。

assetsのパスを変数として管理することで、たとえばShopify以外のテスト環境用(静的なモックテスト環境等)のパスに値を変えてCSSを書き出すことも可能。モック作成→実装という2段階のフローでコーディングを進める場合はこちらの方法をお勧めします。

おわりに

あくまで個人的な感想ですが、Shopifyのコーディングに関してはコツさえ掴んでしまえばあとは慣れ!さほど難しくはない印象(慣れるのが大変だったりしますが)。
あとは世の中的にもう少し情報量が増えてくるとハードルがグッと下がると思います。WordPressのように。
作業中に出てくる「こういう時はどうしたらいいの?」のような、かゆい所に手が届くような情報が今後どんどん出てくることを願います。

以上、簡単な内容ではありましたが、初めてShopifyの開発をするエンジニアの方、Shopifyのコーディングをやってみようというコーダーの方にとって、少しでもお役立て頂けましたら幸いです。

Shopifyでオリジナルのテーマ開発!最初の始め方を丁寧に解説

クーシーブログ編集部

この記事を書いた人

クーシーブログ編集部

1999年に設立したweb制作会社。「ラクスル」「SUUMO」「スタディサプリ」など様々なサービスの立ち上げを支援。10,000ページ以上の大規模サイトの制作・運用や、年間約600件以上のプロジェクトに従事。クーシーブログ編集部では、数々のプロジェクトを成功に導いたメンバーが、Web制作・Webサービスに関するノウハウやハウツーを発信中。

お問い合わせはこちらから

Web制作デザイン、丸ごとお任せ

お問い合わせする

2021/07/19

土田

Share on

  • Xでシェアする
  • Facebookでシェアする
  • このエントリーをはてなブックマークに追加
お問い合わせはこちら

ECサイト・EC構築の関連記事はこちら

  • 海外と日本で人気のECモール4サイトのデザインをデザイナー目線で解説

    この記事では、BtoC-EC 市場規模トップ4カ国に注目し、ECモールの人気の背景を分析します。

    • ECサイト
  • ECサイトの信頼獲得|サイトの信頼度を上げるコンテンツ7選

    非常に重要なワードである「ECサイトの信頼」について、信頼の正体や、信頼を獲得するための方法を丁寧に解説していきます。

    • ECサイト
  • Shopifyと既存WordPressサイトを連携させて集客チャネルを増やす方法

    もしすでに多くの人にみられているWordPressサイトをお持ちなら、Shopifyとの連携はぜひ検討すべきです。

    • ECサイト
  • ECサイトはShopifyかWordPressか?6つのポイントで比較します

    ECサイトはShopifyとWordPressどちらを選ぶべきか6つのポイントで比較しました。おすすめのケースもあります。

    • ECサイト
    • CMS
  • 売れるECサイトの集客方法12選 | 費用と期間ごとに紹介!

    短期で結果が出るのは広告ですが、ひと口に広告と言っても種類はさまざま。なかにはECサイトでしか使えない広告もあります。

    • ECサイト
  • ECサイトのおすすめ「在庫管理システム」7選【在庫管理ちゃんとやってますか?】

    ECサイト運営の成否を分けるのは在庫管理と言っても過言ではありません。地味ですが、経営を安定させるために不可欠な業務です。

    • ECサイト
    • コンテンツ運用
  • ECサイトならではのSEO対策!8つのポイントでSEOに強いサイトに

    集客アップのためののSEO対策はECサイトにおいても大変重要です。実はECサイトならではのSEO対策があります。本記事では、あなたのECサイトをSEOに強くするためのポイントを解説します。

    • ECサイト
    • SEO対策・トレンド
  • 【ECサイト成功事例10選】事例から成功のコツを紐解く

    「自社のECサイトの売り上げが伸びない」とお悩みのご担当者の方へ。この記事ではECサイトの成功事例を9つ、解説付きでご紹介します。

    • ECサイト

COOSYの
制作実績

UIUXと美しさを両立させた、クーシーが誇る成功事例一覧。
課題解決のアイデア満載です。

制作実績を見る

Web制作の課題はクーシーが解決します

  • ECサイト

    Shopify等の選定から戦略まで一貫支援。SEO・AIOを強化し、売れるECサイト構築と最適な運営プランをご提案します。

  • DX推進・システム開発

  • Web制作

    コーポレートサイト、採用サイト、ECサイトまで。最新AI技術を掛け合わせ、各サイトの特性に合わせたUIUX設計を実現します。

CATEGORY LIST

  • すべての記事一覧

  • 目的別

    • 目的別TOP
    • コーポレートサイト
    • ECサイト
    • オウンドメディア
    • 採用サイト
    • プロモーション
    • Webサービス
    • LP
    • ブランディング・CI
  • Web制作ハウツー

    • Web制作ハウツーTOP
    • UIUX・サイト設計
    • WebデザインTips
    • PM/ディレクション
    • フロントエンド(HTML/CSS)
    • 撮影・動画編集
    • ライティング
    • CMS
    • Web制作ツール
    • イラスト
  • システム開発

    • システム開発TOP
    • プログラミング
    • EC構築
    • CMS開発・構築
    • サーバ構築
    • データベース構築
    • セキュリティー
  • Webサイト運用のコツ

    • Webサイト運用のコツTOP
    • サイト運用・管理・保守
    • コンテンツ運用
    • CRM(顧客管理)
  • Webマーケティング

    • WebマーケティングTOP
    • SEO対策・トレンド
    • コンテンツ制作・SEOライティング
    • アクセス解析
    • Web広告
    • Web集客ハウツー
  • 特集

    • 特集TOP
    • Web最新トレンド
    • カルチャー
    • ガジェット
  • WORKS

    Webサイト・アプリなどの
    様々な実例・制作実績のご紹介

    WORKS
  • CONTACT CONTACT

    Webサイトのご相談、お見積もりはこちらから

    Webサイトのご相談、お見積もりなど
    お気軽にお問い合わせください

ホーム

  • TOP
  • COOSY BLOG
  • はじめてのShopifyのコーディングで注意する2ポイント
ページトップへ
  • TOP
  • SERVICE

    • ブランディング
    • デジタルマーケティング
    • 戦略企画
    • DX推進・システム開発
    • グローバル展開
    • Web制作
  • WORKS

    • コーポレートサイト
    • 採用サイト
    • ECサイト
    • プロモーションサイト
    • サービスサイト
    • システム開発
  • ABOUT

    • 会社情報
    • 私たちが大切にしていくこと
    • お知らせ
    • クーシーラボ 岩手
    • ロンドン支社
    • ミャンマー支店
  • RECRUIT

    • ディレクション部
    • デザイン部
    • システム開発部
    • アカウント・プランニング部
    • Webマーケティング事業部
    • 人事・総務部
    • オフショア
    • グローバル事業部
  • BLOG

    • 目的別
    • Web制作ハウツー
    • システム開発
    • Webサイト運用のコツ
    • Webマーケティング
    • 特集

COOSY SNS

  • facebook
  • X
  • お問い合わせ
  • Privacy policy
  • Site Policy
  • Security Policy
© COOSY All Rights Reserved.