Shopify運用設計研究所 > Shopifyカートカスタマイズ実装ガイド|入力項目・注文連携・運用ミス防止まで

Shopifyカートカスタマイズ実装ガイド|入力項目・注文連携・運用ミス防止まで

2026年7月3日

23分で読めます

Shopifyのカートカスタマイズを、cart drawer/cart page、Line Item Property、Cart attributes、note、Ajax Cart API、アプリ、Checkout Extensibilityの境界から整理し、ギフト包装、配送希望日、備考、アップセル、購入制限、注文管理、Flow、CSV、発送現場、GA4/CRM分析まで崩れない実装として設計します。

Shopify
カートカスタマイズ
EC運用
受注管理
Ajax API
助手
助手

Shopifyのカート画面に、ギフト包装、配送希望日、備考、アップセル、割引表示を追加したいです。Liquidでフォームを足せば大丈夫ですか?

博士
博士

フォームを足すだけならできます。ただし実務で重要なのは、その入力が注文、発送指示、CSV、Flow、分析まで正しく渡るかです。カートの見た目を変えただけで、現場が注文詳細を1件ずつ開く運用になると失敗です。

「shopify カート カスタマイズ」で調べる人の多くは、単にカートの色や余白を変えたいわけではありません。

ギフト包装を選ばせたい。配送希望日を受け付けたい。備考欄を追加したい。カート内でついで買いを提案したい。送料無料までの残額を出したい。特定商品の購入制限を入れたい。カートドロワーでもカートページでも同じ入力が保持されるようにしたい。さらに、受注後にスタッフや倉庫がその情報を見落とさないようにしたい。

Shopify公式のcartテンプレートでは、/cartページでカート内容を表示し、数量更新、削除、割引表示、cart notes、cart attributes、line item propertiesなどを扱うことが説明されています。また、Ajax Cart APIでは、顧客セッション中のカートに対して、商品追加、数量変更、cart attributes、notes、送料見積もりなどをJavaScriptで扱えることが示されています。

つまりShopifyのカートカスタマイズは、テーマ上のUI改修でありながら、受注データ設計でもあります。

Shopifyテーマ開発の実務設計では、Liquid、sections、blocks、メタフィールド、app blocksの境界を整理しました。Shopify APIの種類と選び方では、Ajax API、Admin API、Functions、Webhookを目的から選ぶ考え方を扱いました。この記事では、その中でもカート入力と注文後運用に絞って、実装先とデータ引き渡しを整理します。

Shopifyカートカスタマイズで先に決めるべきなのは、入力欄のHTMLではなく、その値を商品明細、注文全体、発送指示、分析のどこで使うかです。

先に結論:カート入力は保存先から逆算する

Shopifyのカート入力には、Line Item Property、Cart attributes、note、割引・配送・チェックアウト系の拡張、アプリ、外部連携など複数の置き場所があります。見た目だけで決めると、注文管理では見えない、CSVに出ない、倉庫に伝わらない、分析に使えない、という問題が起きます。

入力・表示したいもの 第一候補 避けたい実装 判断のポイント
商品ごとの名入れ、色指定、ギフト包装 Line Item Property 注文noteにまとめて書く どの商品に紐づく情報かを明細単位で残す
注文全体の配送希望日、置き配指定 Cart attributes 商品ごとのpropertyへ重複保存 注文単位で1つの値として扱う
顧客の自由な備考 note 複数用途を1つのnoteに詰める スタッフが一覧で気づける運用を作る
カート内アップセル Ajax Cart API、テーマsection、アプリ 注文後に別商品を手入力 追加商品として明細に残す
送料無料までの残額、割引表示 Liquid、Ajax Cart API、Shopify標準割引 独自計算だけで確定金額のように見せる チェックアウト時の最終金額との差異を説明する
購入制限、同梱不可、配送不可 テーマ上の予防 + Shopify Functions/アプリ フロントJSだけで禁止 「今すぐ購入」など抜け道を塞ぐ
倉庫向けの梱包指示 property/attributes + Flowタグ + CSV カート画面に出すだけ 発送担当が見る画面・帳票に渡す
GA4/CRM分析 dataLayer/イベント設計 + 注文属性 UIクリックだけ計測 受注データと分析軸を後で突合できるようにする

カートは購入直前の画面なので、UIの小さな変更でも売上に影響します。同時に、入力データを受け取る最後の場所でもあります。だから、カートの設計は「売場」と「受注現場」を同時に見て決める必要があります。

cart drawerとcart pageは役割が違う

Shopifyテーマでは、カート体験がcart drawerだけで完結するテーマもあれば、/cartページを使うテーマもあります。公式のcartテンプレートは/cartページを対象に説明していますが、実務ではヘッダーから開くdrawer、モーダル、サイドパネル、フルページのカートが併存します。

観点 cart drawer cart page
役割 商品追加直後に軽く確認し、購入へ進める 注文内容、入力項目、割引、配送案内を落ち着いて確認する
向くUI 数量変更、削除、簡単なアップセル、送料無料バー 配送希望日、備考、ギフト詳細、複雑な注意事項
リスク 入力欄を増やすと狭く、スマホで操作しづらい 離脱は増えるが、確認項目を整理しやすい
実装 Ajax Cart APIで非同期更新が多い cart form、Liquid、sectionで実装しやすい
検証 drawer更新後に値が残るか、再描画で消えないか ページリロード、数量更新、戻る操作で保持されるか
運用 最低限の選択に絞る 注文全体の確認と入力を集約する

ギフト包装のチェックボックスだけならdrawerで十分なことがあります。一方、配送希望日、時間帯、置き配、領収書、同梱メッセージ、注意事項の同意まで入れるなら、cart pageへ誘導した方が安全です。

ただし、cart pageにだけ入力欄を置くと、drawerの「チェックアウトへ進む」ボタンから入力を飛ばされることがあります。逆にdrawerにだけ置くと、/cartページへ移動したときに値が見えず、顧客もスタッフも確認できません。実装前に、購入導線をすべて洗い出します。

導線 確認すること 対策
商品ページのカート追加 Line Item Propertyが商品追加時に付くか product form内にproperties[...]を入れる
cart drawerのチェックアウト Cart attributesやnoteが送信済みか checkout前に/cart/update.jsで保存する
/cartページのチェックアウト cart formのnoteattributes[...]が送信されるか form="cart"や送信タイミングを確認する
今すぐ購入ボタン カート入力を経由しない可能性 必須入力がある商品では非表示、または別方式を使う
Shop Payなどの高速購入 カート確認を飛ばす可能性 必須要件ならチェックアウト拡張やアプリで制御する
外部販売チャネル テーマのカートUIを通らない 注文後Flowや業務ルールで検知する

Line Item Propertyは商品明細に紐づく情報に使う

Line Item Propertyは、商品明細ごとに追加情報を持たせる仕組みです。公式のcartテンプレートでも、商品がカートへ追加されるとline item propertiesを含められ、カートページで表示できると説明されています。また、同じ商品でも異なるline item propertiesが付く場合は別明細になることがあります。

用途 Line Item Propertyが向く理由 実装メモ
名入れ 商品1点ごとに文字が違う product formでproperties[名入れ]として追加する
ギフト包装 商品ごとに包装要否が違う 包装商品を別明細にするかpropertyにするか決める
メッセージカード 商品またはギフトセット単位で管理 文字数制限と禁止文字を入れる
セット商品の内訳 明細単位で構成を残す 倉庫側のピッキング指示に出せるか見る
カスタムサイズ 商品ごとに寸法が違う 入力単位、許容範囲、再確認文を設計する
熨斗・表書き 商品単位の指定になりやすい 表記ゆれ防止の選択肢を用意する

Line Item Propertyで失敗しやすいのは、注文全体の情報まで明細に持たせることです。配送希望日や領収書要否をすべての商品明細に重複保存すると、CSVや倉庫連携で扱いにくくなります。商品に紐づく情報はLine Item Property、注文全体に紐づく情報はCart attributesまたはnote、と分けます。

また、Ajax Cart APIでは商品追加時にpropertiesを含められます。プライベートなline item propertyはキーの先頭にアンダースコアを付ける方法が公式Docsで説明されていますが、ストアフロントで隠すにはテーマ側の表示制御も必要です。顧客に見せるべき値、スタッフだけが見る値、外部連携だけで使う値を混ぜないようにします。

Cart attributesとnoteは注文全体の情報に使う

Cart attributesとnoteは、注文全体に紐づく追加情報を扱う候補です。公式のcartテンプレートでは、noteはname="note"、Cart attributesはname="attributes[attribute-name]"のようにcart formへ紐づけて送信できると説明されています。

項目 向く用途 注意点
note 顧客からの自由記述、配送・注文全体への備考 自由記述なので、分類・集計・自動処理には向きにくい
Cart attributes 配送希望日、置き配、領収書要否、注文全体の選択項目 注文一覧で目立たない場合があるためFlowやタグで補う
Line Item Property 商品ごとの指定、名入れ、包装、サイズ 注文全体の情報を重複保存しない
注文タグ スタッフが一覧で気づくための索引 顧客入力そのものではなく、運用の目印として使う
メタフィールド 注文後に構造化して保持・連携する情報 入力時点で直接使うより、Flow/APIで整理することが多い

Cart attributesは実務で便利ですが、管理画面の注文一覧で必ず目立つわけではありません。Shopify HolicのCart attributes解説でも、Cart attributesはnoteのようなアイコンや印が注文一覧に出ず、1件ずつ注文を開かないと気づきにくい点が指摘され、Shopify Flowでタグを付ける対策が紹介されています。

この落とし穴は重要です。配送希望日やギフト指定をCart attributesへ保存しても、発送担当が気づかなければ意味がありません。Cart attributesを採用する場合は、注文作成後にFlowでrequest:delivery-dategift:wrapops:note-requiredのようなタグを付け、注文一覧、ピッキングリスト、CSVに反映する設計までセットにします。

Cart attributesに保存しただけでは、業務データとして渡したことにはなりません。注文一覧、タグ、CSV、発送指示で発見できて初めて運用に乗ります。

Ajax Cart APIは「カート状態を更新するUI」に使う

Ajax Cart APIは、カートの追加、数量変更、削除、noteやattributesの更新、送料見積もりなどを、ページ遷移なしで扱うためのAPIです。公式Docsでは、/{locale}/cart/add.js/{locale}/cart/update.js/{locale}/cart/change.js/{locale}/cart/clear.jsなどが説明されています。locale-aware URLを使う点も重要です。

やりたいこと 使う候補 実装上の注意
商品をカートに追加する cart/add.js propertiesを同時に送るか確認する
数量を変える cart/change.jsまたはcart/update.js drawerとpageの表示を同時に更新する
noteやattributesを保存する cart/update.js checkout前に保存完了を待つ
カートHTMLを再描画する bundled section rendering 最大対象数や対象sectionを整理する
送料見積もりを出す shipping rates系 確定送料ではないことを表示する
割引・合計を表示する Ajax API + Liquid section チェックアウトで変わる条件を断定しない

Ajax APIを使うと、drawer内でスムーズに入力や数量変更ができます。しかし、非同期処理の失敗、二重クリック、保存前のチェックアウト、再描画で入力欄が消える問題が起きやすくなります。

たとえば配送希望日をdrawerで選ばせる場合、選択した瞬間にcart/update.jsでCart attributesへ保存するのか、チェックアウトボタンを押した瞬間に保存するのかを決めます。後者の場合、保存完了前にチェックアウトへ遷移すると値が落ちる可能性があります。実装では、保存中のボタン無効化、エラー表示、再試行、/cartページでの確認表示を入れます。

入力項目別に実装先を決める

カートカスタマイズは、入力項目ごとに保存先と後続処理を決めるのが現実的です。

入力項目 UI位置 保存先 注文後の使い道 補足
ギフト包装 商品ページ、drawer、cart page Line Item Propertyまたは包装商品 梱包指示、追加料金、ギフトタグ 商品ごとか注文全体かを先に決める
メッセージカード 商品ページ、cart page Line Item Property 印字、同梱、検品 文字数・禁止文字・改行を制御する
配送希望日 cart page中心 Cart attributes 出荷日調整、配送伝票、CS確認 休業日・リードタイムと連動する
配送時間帯 cart page Cart attributes 送り状、WMS、配送会社CSV 配送会社別の選択肢差異を見る
注文備考 cart page note CS確認、発送前注意 自由記述を運用タグで補う
領収書要否 cart page Cart attributes 経理、メール送付、同梱 宛名・但し書きの入力も検討する
アップセル商品 drawer、cart page 通常のline item 売上、同梱、在庫引当 追加商品として在庫・割引対象になる
送料無料バー drawer、cart page 表示のみ 購入促進 実際の送料条件との差異を避ける
購入制限同意 商品ページ、cart page Cart attributesまたは検証 注文保留、キャンセル判断 強制力が必要ならFunctions/アプリへ
分析用選択 UI操作、注文属性 dataLayer、attributes GA4/CRM分析 顧客に見せる値と内部値を分ける

ギフト包装は特に判断が分かれます。包装を1注文に1つだけ付けるならCart attributesでも扱えますが、商品ごとに包装の有無やメッセージが違うならLine Item Propertyの方が自然です。包装に料金が発生するなら、単なるpropertyではなく包装用商品を追加するか、アプリや割引・料金設計を含めて検討します。

配送希望日はCart attributesが候補になりますが、選べる日付のロジックが重要です。休業日、出荷リードタイム、地域別配送日数、予約商品、同梱不可商品を考慮しない日付入力は、受注後にCS対応を増やします。テーマだけで表示するのか、配送日時指定アプリを使うのか、Checkout Extensibility側で扱うのかを分けます。

割引・送料表示は「目安」と「確定」を混ぜない

カート画面では、送料無料までの残額、適用済み割引、クーポン入力、送料見積もり、合計金額を表示したくなります。これは有効ですが、チェックアウトで最終確定する値と、カート上の目安を混ぜるとトラブルになります。

表示 カートでできること 注意点
送料無料までの残額 カート合計から閾値までの差額を出す 地域、配送方法、除外商品がある場合は条件を書く
自動割引 カート内の割引表示を反映する チェックアウトで追加条件がある場合に注意
クーポン 入力導線を出す、アプリで補助する テーマだけで最終適用を保証しない
送料見積もり Ajax APIのshipping rates系を使う候補 住所情報が不足する場合は概算になる
税込・税抜 Shopify設定に合わせて表示する B2Bや海外販売では表記ルールを確認する
アップセル後の合計 Ajaxで再計算・再描画する 追加直後に割引条件が変わることがある

「あと1,200円で送料無料」と表示してアップセルを促す場合、送料条件に対象外商品、冷蔵便、地域別条件があるなら、単純な小計だけでは足りません。ここを雑に作ると、カートでは送料無料に見えたのにチェックアウトでは送料が出る、という不信感につながります。

割引や送料の判定が複雑な場合は、テーマ表示だけでなく、Shopify Functions、配送アプリ、割引アプリ、Checkout Extensibilityの領域も確認します。APIやFunctionsの境界は、Shopify APIの種類と選び方と合わせて見ると判断しやすくなります。

抜け道対策:今すぐ購入、動的チェックアウト、外部チャネル

カート入力を必須にしたい場合、最大の問題は抜け道です。カートページに必須項目を置いても、顧客がそこを通らなければ入力されません。

抜け道 起きる問題 対策
今すぐ購入ボタン 商品ページから直接チェックアウトへ進み、カート入力を通らない 必須入力商品では非表示、または商品ページ側で入力させる
動的チェックアウトボタン Shop Payなどでカートを飛ばす カート入力必須の販売方式と両立するか確認する
drawerのcheckoutボタン attributes保存前に遷移する 保存完了まで遷移させない
/checkout直リンク テーマ上の検証を通らない チェックアウト側の検証、アプリ、Functionsを検討する
外部販売チャネル テーマのカートUIが使われない 注文後Flowでタグ付けし、例外運用に回す
JavaScript無効・通信失敗 Ajax保存が失敗する cart pageの通常form送信でも保存できるようにする

購入制限や同梱不可のように、ビジネス上必ず守らないといけないルールは、フロントのJavaScriptだけに任せない方がよいです。テーマ上では注意表示やボタン制御で予防し、強制力が必要な場合はShopify Functions、専用アプリ、Checkout Extensibility、注文後のFlow保留を組み合わせます。

特に、医療・食品・年齢確認・配送不可地域・法人限定販売のような要件では、「カート画面で警告を出した」だけでは不足します。注文が成立した後にキャンセルや確認連絡をする運用でよいのか、購入前に止める必要があるのかを先に決めます。

アプリとCheckout Extensibilityの境界

カートのカスタマイズはテーマでかなり対応できますが、すべてをテーマに寄せるべきではありません。配送日時指定、ギフト、同梱不可、年齢確認、複雑な割引、チェックアウト内の追加入力などは、アプリやCheckout Extensibilityの方が安全な場合があります。

要件 テーマで対応しやすい アプリ/Checkout Extensibilityを検討する境界
簡単な備考欄 noteやCart attributes チェックアウト内にも表示・編集が必要
商品ごとの名入れ Line Item Property 画像プレビュー、校正、承認フローが必要
配送希望日 単純な日付選択 休業日、地域、配送会社、WMS連携が複雑
ギフト包装 propertyや包装商品 複数包装、料金計算、在庫、帳票連携が必要
購入制限 テーマ上の警告 購入前に必ずブロックする必要がある
割引・送料制御 表示と案内 チェックアウトで確定ロジックを変える
注文後処理 Flowでタグ・通知 外部DB、再実行、監査ログが必要

テーマ実装の強みは、軽く、見た目に合わせやすく、商品ページからカートまで一貫した体験を作れることです。一方で、チェックアウト中の強制力、外部連携、複雑な日付計算、失敗時の再実行は苦手です。

境界を誤ると、テーマ内に業務ロジックが増え、次のテーマ更新で壊れます。Shopifyテーマ開発の実務設計で整理した通り、テーマは表示と軽い入力、アプリ/APIは業務処理と連携、という責務分担を崩さない方が保守できます。

注文管理、Flow、CSV、発送現場へ渡す

カートで受け取った情報は、注文管理画面、Flow、CSV、発送現場で使われて初めて価値になります。

データ 注文管理での見え方 Flowでの使い方 CSV/発送での扱い
Line Item Property 明細に表示される 商品ごとの条件分岐、タグ付け 明細行に出す。倉庫が商品単位で確認する
Cart attributes 注文の追加属性として確認 customAttributes条件でタグ・通知 注文ヘッダー項目として列に出す
note 注文メモとして目立ちやすい note有無で要確認タグ 備考欄として出すが分類しづらい
注文タグ 一覧検索・フィルタに使いやすい 後続Flowや外部連携の条件 CSVで出せる場合は作業分類に使う
アップセル商品 通常明細として表示 SKUや商品タグで処理 ピッキング対象になる
分析用属性 管理画面では直接使わない場合もある CRM連携やセグメント条件 BI用CSV、注文エクスポートに出す

配送希望日やギフト包装を受けるなら、最低限、次の運用まで決めます。

運用項目 決めること
注文一覧 どのタグでスタッフが気づくか
注文詳細 どこに値が表示されるか
CSV どの列名で出すか。Line Item PropertyとCart attributesをどう展開するか
倉庫 ピッキングリスト、送り状、梱包指示のどこに出るか
CS 顧客問い合わせ時にどの画面を見るか
Flow 注文作成時にタグ、通知、保留をどう付けるか
例外 値がない注文、矛盾した注文、外部チャネル注文をどう扱うか

Shopify Flowでのタグ付けや通知は、Shopify FlowでEC運用を自動化する設計ガイドで詳しく整理しています。カート入力では、Flowを「入力値を見つけやすくする補助線」として使うのが実務的です。

たとえば、Cart attributesに配送希望日が入っていたらdelivery:requestedタグを付ける。Line Item Propertyにギフト包装があればgift:wrapタグを付け、Slackまたは発送担当へ通知する。noteが空でなければops:note-checkタグを付ける。こうすると、注文一覧を見ただけで対応対象が分かります。

GA4、CRM、分析まで見てイベントを設計する

カートカスタマイズは、分析にも影響します。ギフト包装の選択率、配送希望日の選択率、アップセルクリック率、送料無料バーの到達率、備考入力の多い商品、購入制限エラーの発生数は、売場改善やCS改善の材料になります。

分析したいこと 計測イベント例 注文データとの突合
ギフト包装の利用率 cart_gift_wrap_select Line Item Property、注文タグ
配送希望日の選択率 cart_delivery_date_select Cart attributes
アップセル表示と追加率 cart_upsell_viewcart_upsell_add 追加SKU、キャンペーンタグ
送料無料バーの効果 cart_free_shipping_progress_view 注文金額、送料、割引
備考入力の多い理由 cart_note_input note、CS問い合わせ分類
購入制限エラー cart_validation_error キャンセル、保留、対象SKU
drawerからの購入率 cart_drawer_checkout_click セッション、注文ID、チャネル

ここで大事なのは、UIイベントだけで満足しないことです。GA4で「ギフト包装クリック」が取れても、注文側でギフト対応タグが付いていなければ、売上や返品、CS負荷との突合ができません。逆に注文属性だけあっても、カート画面でどのUIが選ばれたのか分からないと改善しにくくなります。

CRMへ連携する場合も同じです。ギフト購入者、配送希望日を指定する顧客、備考を多く書く顧客、アップセルに反応する顧客をセグメント化するなら、カート入力のキー名、注文属性、タグ、分析イベント名をそろえます。gift_wrapdelivery_datecart_note_presentのように、内部名を決めてから日本語ラベルを付けると、後続連携が安定します。

実装前チェックリスト

最後に、実装前に見るべき項目をまとめます。

チェック項目 確認内容
入力の粒度 商品ごとか、注文全体か、顧客単位か
保存先 Line Item Property、Cart attributes、note、アプリ、Checkout Extensibilityのどれか
UI位置 商品ページ、cart drawer、cart page、checkoutのどこで入力するか
抜け道 今すぐ購入、動的チェックアウト、外部チャネル、JavaScript失敗時にどうするか
バリデーション 必須、文字数、日付、禁止文字、同梱不可、購入制限
注文表示 注文一覧、注文詳細、タグ、検索で気づけるか
Flow タグ付け、通知、保留、例外処理を作るか
CSV 倉庫、CS、経理、分析向けに列として出せるか
発送現場 ピッキング、梱包、送り状、検品で使えるか
分析 GA4、CRM、BIでイベントと注文属性を突合できるか
保守 テーマ更新、アプリ変更、Shopify仕様変更時に直せるか

このチェックを省くと、カート画面はきれいになっても、受注現場では「どこを見ればいいか分からない」状態になります。

まとめ

Shopifyのカートカスタマイズは、カート画面の装飾ではありません。

cart drawerとcart pageの役割を分け、商品ごとの情報はLine Item Property、注文全体の情報はCart attributesやnote、動的なカート更新はAjax Cart API、強制力が必要な購入制限や複雑な配送・割引はアプリやCheckout Extensibilityの領域として整理します。

さらに、ギフト包装、配送希望日、備考、アップセル、割引・送料表示、購入制限、バリデーションが、注文管理、Flow、CSV、発送現場、GA4/CRM分析まで渡るかを確認します。カートで入力された値が注文後に見つからないなら、それは実装として半分しか終わっていません。

Bitlightでは、ShopifyのカートUIだけでなく、受注タグ、発送指示、CSV、Flow、分析イベントまで含めて、入力データが途中で消えない設計を行います。カートの見た目を直す前に、まずは「どの入力を、誰が、どの画面・帳票・分析で使うのか」を整理することが重要です。

Shopify運用設計支援

Shopifyカートを、売場と受注現場がつながる業務導線として実装します

cart drawer/page、Ajax Cart API、注文管理、発送指示、Flow、分析イベントまで、入力データが途中で消えないカート改善を支援します。

著者
守高 成悟
守高 成悟

代表取締役 CEO

千葉県出身。10歳の頃からプログラミングを始め、ゲーム、Webサイト、ロボット、スマホアプリなどを制作。大阪大学基礎工学部情報科学科で情報工学と統計学を学び、大学時代はAIを研究。大学在学中にWeb広告代理店でのインターンや人材系Webサービスの立ち上げを経験し、卒業後はフリーランスエンジニアとしてGISシステム、データ基盤構築、Webシステムの開発に従事。10年以上のWebアプリ開発・データ分析経験を基に、2023年9月に株式会社ビットライトを設立し、現場業務の仕組み化からデータ基盤構築、データ活用支援までを一気通貫で支援。

運営会社
株式会社ビットライト
株式会社ビットライト

顧客が本当に必要だった価値を、実装する。

現場業務の仕組み化からデータ基盤構築、データ活用支援までを一気通貫で支援しています。

コーポレートサイトを見る
Shopify設計相談

商品データ・在庫・連携範囲を相談できます

既存Shopifyの見直し、在庫・受注・会計・CRM・外部アプリ連携まで、運用に合わせた設計範囲を整理します。