SKU構造: ハイフン区切りコンポーネントアーキテクチャ
この記事では、当社のSKU(在庫管理単位)システムがハイフン区切りの構造をどのように使用して、あらゆる製品構成を一意に識別し、強力な機能抽出とフィルタリングを可能にするかを説明します。
課題: 製品構成の識別
ミニPCには数千もの構成があります:
-
シャーシ: Treo, S, H (異なるフォームファクター)
-
ボード: N100, i5-1335U, i7-1355U (異なるプロセッサー)
-
RAM: 4GB, 8GB, 16GB, 32GB, 64GB
-
フラッシュ: 128GB, 256GB, 512GB, 1TB, 2TB
-
アダプター: 2H (2 HDMI), 2D (2 DisplayPort), 1H1D (1 HDMI + 1 DisplayPort)
-
WiFi: W6 (WiFi 6), W6E (WiFi 6E), None
-
OS: 11P (Windows 11 Pro), U (Ubuntu), DOS (FreeDOS)
-
アクセサリー: キーボード、マウス、VESAマウントなど
3シャーシ × 10ボード × 5 RAM × 5 フラッシュ × 5 アダプター × 3 WiFi × 3 OS = 33,750の可能な構成となり、それぞれを体系的に識別する方法が必要です。
解決策: ハイフン区切りSKU
各位置がコンポーネントカテゴリを表すハイフン区切りの構造を使用します:
Treo-N100-8-256-2H-W6-11P
これにより、すべての構成に対して一意の識別子が作成されます。
SKUの内訳
graph LR
SKU[Treo-N100-8-256-2H-W6-11P]
SKU --> C[Treo
Chassis]
SKU --> B[N100
Board/CPU]
SKU --> R[8
RAM GB]
SKU --> F[256
Flash GB]
SKU --> A[2H
Adapter]
SKU --> W[W6
WiFi 6]
SKU --> O[11P
Windows 11 Pro]パーツの順序
SKUはコードで定義された固定の順序に従います:
part_sequence = [
Categories.CHASSIS, # Position 0
Categories.BOARD, # Position 1
# ... (実装の詳細は省略)
すべてのSKUには、最初の7つのコンポーネント(シャーシからOSまで)が少なくとも含まれている必要があります。アクセサリーはオプションです。
コンポーネントカテゴリ
1. シャーシ
物理的な筐体とフォームファクター:
-
Treo: 最新のミニPCシャーシ(コンパクト、モダンデザイン)
-
S: スモールフォームファクター(コンパクトデスクトップ)
-
H: スタンダードフォームファクター(従来型デスクトップ)
シャーシは以下を決定します:
-
物理的な寸法
-
マウントオプション (VESA, デスクトップ)
-
熱設計 (ファンレス vs ファン冷却)
-
ポートレイアウト
2. ボード
プロセッサーを搭載したマザーボード:
-
N100: Intel N100 (4コア, 3.4GHz, 6W TDP)
-
N150: Intel N150 (4コア, 3.6GHz, 6W TDP)
-
i5-1335U: Intel Core i5 13世代 (10コア, 4.6GHz, 15W TDP)
-
i7-1355U: Intel Core i7 13世代 (10コア, 5.0GHz, 15W TDP)
ボードは以下を決定します:
-
プロセッサーの世代、シリーズ、モデル
-
コア数
-
最大周波数
-
キャッシュサイズ
-
統合グラフィックス
3. RAM
メインメモリ容量:
-
4: 4GB DDR4
-
8: 8GB DDR4
-
16: 16GB DDR4
-
32: 32GB DDR4
-
64: 64GB DDR4
RAMは単位なしでGBで指定されます。
4. フラッシュ
SSDストレージ容量:
-
128: 128GB SSD
-
256: 256GB SSD
-
512: 512GB SSD
-
1024: 1TB SSD (1024GB)
-
2048: 2TB SSD (2048GB)
フラッシュは単位なしでGBで指定されます。
5. アダプター
ディスプレイ出力構成:
-
2H: 2× HDMIポート
-
2D: 2× DisplayPort
-
1H1D: 1× HDMI + 1× DisplayPort
-
1H1V: 1× HDMI + 1× VGA
-
3H: 3× HDMIポート
アダプターは利用可能なディスプレイ出力を決定します。
6. WiFi
ワイヤレス接続:
-
W6: WiFi 6 (802.11ax) + Bluetooth 5.2
-
W6E: WiFi 6E (802.11ax 6GHz) + Bluetooth 5.2
-
None: ワイヤレスなし (イーサネットのみ)
7. OS
オペレーティングシステム:
-
11P: Microsoft Windows 11 Pro
-
U: Ubuntu Linux 24.04 LTS
-
DOS: FreeDOS (OSなし)
-
Thinux: Thinvent® Thinux™ エンベデッドLinux
8. アクセサリー (オプション)
追加コンポーネント:
-
KM: キーボード + マウス コンボ
-
MK: メカニカルキーボード
-
VESA: VESAマウントブラケット
-
Stand: 調整可能スタンド
複数のアクセサリーを組み合わせることができます: KM-VESA
SKU検証
すべての組み合わせが有効とは限りません。互換性ルールを使用してSKUを検証します:
SKUチェック関数
def check_sku(sku: str) -> bool:
partids = sku.split("-")
if len(partids) < len(part_sequence):
# ... (実装の詳細は省略)
互換性制約
コンポーネントは、互換性のある他のコンポーネントを指定できます:
例: Treoシャーシは特定のボードを許可する
{
"Treo": {
"allows": {
"Board": ["N100", "N150", "i5-1335U"],
"RAM": ["4", "8", "16", "32"],
"Adapter": ["2H", "1H1D"]
}
}
}
これにより、"Treo-i7-64-2048-3H"のような無効な組み合わせ(Treoはi7や3Hアダプターをサポートしない)が防止されます。
SKU展開
SKUを人間が読める名前に変換します:
def expand_sku(sku: str) -> str:
part_ids = sku.split("-")
part_names = [
productdb[part_sequence[i].value][part_id]["external"]
# ... (実装の詳細は省略)
]
例:
入力: Treo-N100-8-256-2H-W6-11P
出力: Treo ミニ PC, Intel N100, 8GB DDR4, 256GB SSD, 2× HDMI, WiFi 6, Windows 11 Pro
externalフィールドには、各コンポーネントの顧客向けの名前が含まれています。
機能抽出
SKU構造により、自動的な機能抽出が可能になります:
機能の順序
抽出する機能の順序を定義します:
feature_sequence = {
"Generation": {"Unit": "", "Heading": "Processing"},
"Series": {"Unit": "", "Heading": "Processing"},
# ... (実装の詳細は省略)
各機能には以下があります:
-
Unit: 測定単位 (GB, GHz, Mbps)
-
Heading: グループ化のためのカテゴリ (Processing, Display, Connectivity)
機能の抽出
SKU内の各コンポーネントについて、その機能を抽出します:
# Board: N100
{
"Generation": "12th",
# ... (実装の詳細は省略)
これらの機能はすべてのコンポーネントにわたって集約され、製品の完全な機能セットを作成します。
この構造の利点
1. 一意の識別
すべての構成に一意のSKUがあります。曖昧さはありません。
2. 人間が読める
SKUは人間が読むことができます:
-
Treo-N100-8-256-2H-W6-11Pは構成を明確に示しています -
何であるかを理解するためにデータベースを調べる必要はありません
3. ソート可能
SKUは自然にソートされます:
-
Treo-N100-8-256-2H-W6-11P -
Treo-N100-16-512-2H-W6-11P -
Treo-i5-16-512-2H-W6-11P
SKUでソートすると、類似した構成がグループ化されます。
4. フィルタリング可能
任意のコンポーネントでフィルタリングできます:
-
すべてのTreo製品:
Treo-* -
すべてのN100製品:
*-N100-* -
すべての16GB製品:
*-16-*
5. 機能抽出
この構造により、以下のための自動的な機能抽出が可能になります:
-
製品ページ (仕様の表示)
-
検索フィルター (RAM、ストレージなどでフィルタリング)
-
比較表 (機能を並べて比較)
6. コスト計算
コンポーネントのコストを合計することでコストを計算できます:
def calculate_sku_cost(sku: str) -> float:
# ... (実装の詳細は省略)
return total_cost
7. URL生成
SKUは製品URLに直接マッピングされます:
SKU: Treo-N100-8-256-2H-W6-11P
URL: /p/Treo-N100-8-256-2H-W6-11P
別途URLスラッグは必要ありません。
複合アイテム
一部のコンポーネントは複合(複数のパーツで構成)されています:
例: 統合コンポーネントを備えたボード
{
"N100": {
"external": "Intel N100",
# ... (実装の詳細は省略)
これにより以下が可能になります:
-
部品表 (BOM): 必要なすべてのコンポーネントをリストアップ
-
コスト計算: 構成要素のコストを合計
-
在庫追跡: コンポーネントの使用状況を追跡
単一パーツのSKU
すべてのSKUがハイフン区切りではありません。単一パーツもSKUになります:
-
N100(ボードのみ) -
Treo(シャーシのみ) -
KM(キーボード + マウス)
これらは以下に使用されます:
-
スペアパーツ
-
アップグレード
-
アクセサリー
is_single_part()関数は、SKUが単一パーツか完全な製品かをチェックします。
SEOパイプラインとの統合
SKU構造はSEOパイプラインを支えています:
- 機能抽出: フレーズマッピングのための機能を抽出
- フィルター生成: フィルター抽出のためのフィルターを作成
- 製品マッチング: 機能によってクエリを製品にマッチング
- クエリページ: 機能の組み合わせに対してページを生成
詳細は SEOパイプライン概要 を参照してください。
参考文献
技術的概念
-
在庫管理単位 (SKU) - Wikipedia
-
部品表 (BOM) - Wikipedia
関連記事
-
productdb.json を単一情報源として - 製品データベース構造
-
機能抽出と集約 - 機能がどのように抽出されるか
-
SKU構造が一意のページを可能にする仕組み - SEOの利点
-
フレーズからフィルターへのマッピング - 機能をフィルターに使用
-
SEOパイプライン概要 - 完全なパイプラインアーキテクチャ
まとめ
当社のSKUシステムは、ハイフン区切りの構造を使用して製品構成を一意に識別します:
-
構造:
Chassis-Board-RAM-Flash-Adapter-WiFi-OS-Accessories -
例:
Treo-N100-8-256-2H-W6-11P -
利点:
-
一意の識別 (33,750以上の構成)
-
人間が読める (調べる必要なし)
-
ソート可能 (自然な順序付け)
-
フィルタリング可能 (任意のコンポーネントで)
-
機能抽出 (自動的)
-
コスト計算 (パーツの合計)
-
URL生成 (直接マッピング)
検証:
-
コンポーネント存在チェック
-
互換性制約
-
最小長要件
展開:
-
SKU → 人間が読める名前
-
コンポーネント → 機能
-
機能 → フィルター
この構造は、強力な検索、フィルタリング、SEO最適化を可能にする当社の製品カタログの基盤です。