DraftOrderLineItem の grams が廃止 これからは weight(値+単位)に書き換える
原題: DraftOrderLineItem.grams field removed in 2026-07
- Admin API
- GraphQL
- Draft Orders
- Orders
- Deprecation
- 破壊的変更
- 廃止予定
- API バージョン
図解 : DraftOrderLineItem.grams 廃止(2026-07)と weight への移行 Admin GraphQL API / 破壊的変更 2026-07 DraftOrderLineItem の grams が廃止 これからは weight (値+単位)に書き換える ドラフトオーダーの明細から、8年以上前に非推奨化されていた整数フィールド grams が API バージョン 2026-07 で削除される。代わりに値と単位を返す weight フィールドを使う。2026-04 がサポート外になると、grams を参照するクエリはエラーになる。 このページの構成 30秒で理解 : 何が変わるのか タイムライン図解 : いつ動かなくなるのか Before / After : クエリの書き換え grams と weight の比較 なぜ変更されたのか 移行手順(3ステップ) 技術者が押さえるべき5つのポイント 業務に活かせる3つのユースケース 提案で使える1行サマリ 1 30秒で理解 : 何が変わるのか Admin GraphQL API の DraftOrderLineItem (ドラフトオーダーの明細行)から、整数フィールド grams が 2026-07 バージョンで削除 される。 対応はシンプルで、 grams の参照を weight { value unit } に書き換えるだけ。weight は「値」と「単位」の両方を返す。 これまで : grams 重量を「グラム単位の整数」1つで返す。8年以上前に非推奨化済み。単位の概念がなく、大重量で桁あふれ(overflow)の懸念があった。 これから : weight value(値) と unit(単位) の組で返す。グラム以外の単位も表現でき、プラットフォーム内の他の重量表現と一貫する。 影響範囲は DraftOrderLineItem.grams のみ。 記事で言及されているのはこのフィールドの削除のみで、他オブジェクトの grams や weight 仕様についての記載はなし。 2 タイムライン図解 : いつ動かなくなるのか 「削除」と「エラーになる」は別タイミング。 grams が無くなるのは 2026-07 から。ただし 2026-04 を使い続けているアプリは、その 2026-04 がサポート外になった時点 で grams 参照クエリがエラーになる。つまり「古いバージョンに固定して延命」は猶予を伸ばすだけで、サポート期限が来れば必ず止まる。 3 Before / After : クエリの書き換え Before(廃止される) draftOrder (id: "gid://shopify/DraftOrder/1") { lineItems (first: 5) { nodes { grams # ← 2026-07 で消える } } } After(推奨) draftOrder (id: "gid://shopify/DraftOrder/1") { lineItems (first: 5) { nodes { weight { value unit } } } } レスポンスの形が変わる点に注意。 旧 grams は数値が1つ返るだけだが、新 weight は { value, unit } のオブジェクト。 「grams の整数値をそのまま計算に使っていたコード」は、単位(unit)を見て換算する処理を足す必要がある。 単純なフィールド名の置換だけでは済まないケースがある。 4 grams と weight の比較 項目 grams(旧・廃止) weight(新・推奨) 型 スカラー 整数(Int)1つ オブジェクト value + unit 単位 グラム固定(単位の概念なし) unit で明示(g / kg / oz / lb 等) 大重量での挙動 桁あふれの懸念 単位を上げて表現でき安全 プラットフォーム内の一貫性 このフィールド独自 統一 他の重量表現と同じ考え方 ステータス 8年以上前に非推奨 → 2026-07 で削除 現行の推奨フィールド 5 なぜ変更されたのか 単一単位 & 桁あふれの問題 grams はグラムという1単位しか扱えず、大きな重量では値があふれる(overflow)可能性があった。 WeightInput で柔軟&一貫に weight は value と unit を持つ WeightInput を使う。これによりプラットフォームの他の場所での重量の扱いと一貫し、より柔軟になる。 6 移行手順(3ステップ) 1 grams の参照を洗い出す コードベース・保存済みクエリを grams で全文検索。DraftOrderLineItem の明細を読む箇所が対象。 2 weight { value unit } に置換 クエリを書き換え、レスポンス側のパースも value+unit を読む形に変更。数値だけ使っていた計算は単位換算を追加。 3 2026-04 のうちに検証 サポート期限が来る前に新クエリで動作確認。問題なければ 2026-07 へ安全に上げられる。 詳細は DraftOrderLineItem のリファレンスドキュメント を参照。疑問点は Shopify Partners コミュニティ で質問できる。 7 技術者が押さえるべき5つのポイント 1. 廃止は 2026-07 から grams が無くなるのは 2026-07 バージョン。それ以前のバージョンにはまだ存在するが、新規実装で使ってはいけない。 2. トリガーはバージョンのサポート切れ エラーになるのは「2026-04 がサポート外になった時点」。バージョン固定は延命にすぎず、期限が来れば必ず止まる。 3. スカラー → オブジェクトへ型が変わる grams は整数1つ。weight は { value, unit } 。クエリのネストもレスポンスのパースも構造が変わる。 4. 単純置換では済まない計算 grams の整数値を直接送料計算等に使っていたなら、unit を見て換算する処理が必要。フィールド名だけ替えると値の意味がずれる。 5. 設計思想は「プラットフォーム全体の一貫性」 weight は WeightInput(value+unit)で、Shopify の他の場所の重量表現とそろえる狙い。今後 grams のような単一単位の旧フィールドは段階的に整理される前提で、 新規は最初から weight を使う のが安全。 8 業務に活かせる3つのユースケース USE CASE 1 既存連携の「grams 参照」棚卸しと一括移行 課題 受注・配送・在庫連携バッチや外部 WMS が DraftOrderLineItem.grams を参照しており、2026-04 のサポート切れで本番が止まるリスクがある。 打ち手 リポジトリと保存済みクエリを grams で全文検索 → 該当箇所を weight { value unit } に置換 → ステージングで動作確認。 効果 サポート期限到来による「ある日突然のクエリエラー」を未然に防ぎ、計画的に移行できる。 技術メモ weight は value+unit を返すため、数値だけ使っていた処理には unit 換算ロジックを追加する。 USE CASE 2 大重量・多単位商材の重量データ精度向上 課題 家具・産業機材・まとめ売りなど重量が大きい商材で、grams(単一単位の整数)では桁あふれや単位の取り違いが起きうる。 打ち手 weight に移行し、value と unit を組で扱う。表示や送料計算は unit を尊重して計算する。 効果 重量データが単位込みで正確になり、送料・梱包・配送区分の判定ミスを減らせる。 技術メモ weight は単一単位の制約から解放されるため、大きな重量でも安全に表現できる(記事記載の overflow 懸念の解消)。 USE CASE 3 非推奨フィールド検知の仕組み化(今回を最後にする) 課題 grams のように「8年前に非推奨 → ある日削除」というパターンが今後も起きる。毎回バタバタ対応している。 打ち手 今回の移行を機に、API バージョン固定の方針と、deprecated フィールド/サポート期限のモニタリング運用を定常化する。 効果 将来の破壊的変更にも前倒しで気づけ、緊急対応ではなく計画移行に切り替えられる。 技術メモ Changelog の追跡と、使用中フィールドの deprecation 確認を運用に組み込む。新規実装は最初から推奨フィールド(weight)を使う。 9 提案で使える1行サマリ 「DraftOrderLineItem の grams は 2026-07 で削除 。 weight { value unit } に書き換えれば、単位込みで桁あふれにも強くなる。 2026-04 のサポートが切れる前に grams 参照を洗い出して移行する のが安全。」 source : shopify.dev / changelog / DraftOrderLineItem.grams field removed in 2026-07 公開日 : 2026-04-11(Developer Changelog)