特許技術ディープダイブ — 横串検索システム(特許第6461047号)
目的: 横串検索の技術的な仕組みを深く理解する。
[[05-patent-yokogushi-search]] は「ビジネス視点」で書かれた概要。
この資料は「エンジニア視点」で書かれた技術解説。
Fit & Gapでの技術質問、IT部門への説明、開発チームとの会話に使う。
1. 特許の基本情報
| 項目 | 詳細 |
|---|
| 特許番号 | 特許第6461047号 |
| 名称 | 電子カタログの検索システム |
| 出願人 | ジーニーラボ株式会社(旧イービズラボラトリーズ株式会社) |
| 登録日 | 2019年1月11日 |
| 技術分野 | 電子商取引、購買管理システム、カタログ横断検索 |
| 前身製品 | カタログモール(2016年リリース) |
| 現行製品 | ジーニー2.0(2020年リリース) |
2. 解決する技術的課題
2.1 従来技術の問題点
┌─────────────────────────────────────────────────────────────┐
│ 従来の購買システムにおけるカタログ検索の3つのアプローチ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ アプローチ1: CIFカタログ(静的カタログ) │ │
│ │ │ │
│ │ サプライヤー → CSVファイル → 購買システムにインポート │ │
│ │ │ │
│ │ 問題点: │ │
│ │ ❌ 価格・在庫情報が古い(月次/四半期更新) │ │
│ │ ❌ 商品数が限定的(全商品をCSV化できない) │ │
│ │ ❌ 更新のたびにインポート作業が必要 │ │
│ │ ❌ リアルタイム性がゼロ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ アプローチ2: 単独パンチアウト(Level 1 PunchOut) │ │
│ │ │ │
│ │ 購買システム → サプライヤーサイトへ遷移 → 商品選択 │ │
│ │ → カート情報を購買システムに戻す │ │
│ │ │ │
│ │ 問題点: │ │
│ │ ❌ 1サイトずつしか検索できない(横断不可) │ │
│ │ ❌ 画面遷移が発生(UXが悪い) │ │
│ │ ❌ 比較するには複数サイトを順番に訪問 │ │
│ │ ❌ サプライヤーごとにUIが異なる │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ アプローチ3: Level 2 PunchOut(ハイブリッド) │ │
│ │ │ │
│ │ CIF + パンチアウトの組み合わせ │ │
│ │ 購買システム上で検索 → 詳細はサプライヤーサイトへ │ │
│ │ │ │
│ │ 問題点: │ │
│ │ ❌ リアルタイムの価格・在庫が検索時に表示されない │ │
│ │ ❌ 交渉済み価格の反映が困難 │ │
│ │ ❌ 真の横断検索ではない │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ★ 特許第6461047号 = これらすべての問題を解決する第4の方法 │
└─────────────────────────────────────────────────────────────┘
2.2 特許が解決する具体的課題
| 課題 | 従来 | 特許技術 |
|---|
| リアルタイム性 | CIFは静的。パンチアウトは1サイトずつ | 全カタログにリアルタイムで同時問い合わせ |
| 横断検索 | 不可能 or 擬似的 | 1回のクエリで全カタログを横断 |
| 統一UI | サイトごとにバラバラ | 購買システムの統一UI上に結果表示 |
| 価格比較 | 手作業(Excel等) | 自動で価格順ソート・一覧表示 |
| レスポンス | 順次アクセス → 遅い | 並列非同期 → 高速 |
| カタログメンテナンス | 購買側が管理 | サプライヤー側が管理(工数ゼロ) |
3. システムアーキテクチャ
3.1 全体構成
┌─────────────────────────────────────────────────────────────────┐
│ │
│ ┌──────────────────┐ │
│ │ ユーザー(ブラウザ)│ │
│ │ 検索クエリ入力 │ │
│ └────────┬─────────┘ │
│ │ HTTPS │
│ ▼ │
│ ┌─────────────────────────────────────┐ │
│ │ ジーニー2.0 サーバー │ │
│ │ │ │
│ │ ┌────────────────────────────┐ │ │
│ │ │ 横串検索エンジン(特許) │ │ │
│ │ │ │ │ │
│ │ │ ① クエリパーサー │ │ │
│ │ │ ② ルーティングエンジン │ │ │
│ │ │ ③ 並列リクエストディスパッチャ │ │ │
│ │ │ ④ レスポンスアグリゲーター │ │ │
│ │ │ ⑤ ソート&フィルタリング │ │ │
│ │ │ ⑥ キャッシュマネージャー │ │ │
│ │ └────────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────────┐ │ │
│ │ │内部カタログ │ │カテゴリマッピング│ │ │
│ │ │ DB │ │ 辞書DB │ │ │
│ │ └──────────┘ └──────────────┘ │ │
│ └──┬──────┬──────┬──────┬──────┬──┘ │
│ │ │ │ │ │ │
│ ┌────────┘ │ │ │ └────────┐ │
│ ▼ ▼ ▼ ▼ ▼ │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────────┐ │
│ │ASKUL │ │Monota│ │たのめ│ │カタログ│ │ 内部 │ │
│ │ │ │RO │ │ーる │ │ D │ │ カタログ │ │
│ │cXML/ │ │cXML/ │ │cXML/ │ │cXML/ │ │ 直接 │ │
│ │OCI │ │OCI │ │OCI │ │OCI │ │ クエリ │ │
│ └──────┘ └──────┘ └──────┘ └──────┘ └──────────┘ │
│ │
│ ※ 外部カタログとはcXML/OCIプロトコルで通信 │
│ ※ 内部カタログは直接DBクエリ │
│ ※ 全リクエストは非同期並列で発行 │
│ │
└─────────────────────────────────────────────────────────────────┘
3.2 横串検索エンジンの6つのコンポーネント
| # | コンポーネント | 役割 |
|---|
| ① | クエリパーサー | ユーザーの検索キーワードを解析。品名→カテゴリ自動マッピング辞書を参照して、UNSPSCコードや内部カテゴリコードに変換 |
| ② | ルーティングエンジン | カテゴリに基づいて、どのカタログに問い合わせるかを決定。全カタログに一律照会 or カテゴリに紐付いたカタログのみに照会 |
| ③ | 並列リクエストディスパッチャ | 全対象カタログに対して非同期並列でリクエストを発行。内部カタログへのDBクエリも同時に実行 |
| ④ | レスポンスアグリゲーター | 各カタログからの応答を受信・集約。タイムアウト管理(遅いカタログを待ちすぎない)。部分結果の段階的取り込み |
| ⑤ | ソート&フィルタリング | 集約された結果を価格順(デフォルト)にソート。グリーン商品・推奨商品の優先表示フラグ適用 |
| ⑥ | キャッシュマネージャー | 頻出検索結果のキャッシュ管理。キャッシュヒット時はカタログへの問い合わせをスキップして即時応答 |
4. パンチアウト連携プロトコルの技術詳細
4.1 cXMLプロトコル(業界標準)
┌─────────────────────────────────────────────────────────────┐
│ cXML (Commerce eXtensible Markup Language) │
│ │
│ 開発元: Ariba(現SAP) │
│ 用途: 購買システム ↔ サプライヤー間の電子商取引通信 │
│ 特徴: XML構造、セッション管理、認証、カート転送を標準化 │
│ │
│ ジーニー2.0での使い方: │
│ 横串検索エンジンがcXMLメッセージを使って │
│ 外部カタログに検索リクエストを送信し、 │
│ 検索結果をcXML形式で受信して統合表示する │
└─────────────────────────────────────────────────────────────┘
4.2 通常パンチアウト vs 横串パンチアウトの通信フロー
【通常のパンチアウト(cXML標準フロー)】
ユーザー ジーニー2.0 サプライヤーA
│ │ │
│ 「検索」クリック │ │
│───────────────→│ │
│ │ PunchOutSetupReq │
│ │───────────────────→│
│ │ PunchOutSetupRes │
│ │←───────────────────│
│ │ │
│ ← リダイレクト(サプライヤーサイトへ) │
│ │
│ 商品を選んでカートに入れる │
│─────────────────────────────────────→│
│ │
│ PunchOutOrderMessage(カート情報) │
│←─────────────────────────────────────│
│ │ │
│ カート情報を │ │
│ ジーニーに戻す │ │
│───────────────→│ │
問題: 1サイトずつ。N社 = N回の往復。遅い。
【横串パンチアウト(特許技術フロー)】
ユーザー ジーニー2.0 サプライヤーA/B/C/D
│ │ │
│ 「検索」クリック │ │
│───────────────→│ │
│ │ │
│ │ ┌─ SearchReq ──→ A │
│ │ ├─ SearchReq ──→ B │ ← 全て同時発行
│ │ ├─ SearchReq ──→ C │ (非同期並列)
│ │ ├─ SearchReq ──→ D │
│ │ └─ DBクエリ ──→ 内部 │
│ │ │
│ │ ┌─ SearchRes ←── A │ 0.5秒
│ │ ├─ SearchRes ←── 内部│ 0.1秒
│ │ ├─ SearchRes ←── B │ 1.2秒
│ │ ├─ SearchRes ←── D │ 0.8秒
│ │ └─ SearchRes ←── C │ 2.5秒
│ │ │
│ │ アグリゲート&ソート │
│ │ │
│ ← 統合結果を一覧表示 │
│ (価格順、カタログ出典付き) │
解決: 1回の操作で全カタログ。待ち時間 ≒ 最遅カタログ分のみ。
4.3 cXMLメッセージの構造(概念例)
<!-- ① 検索リクエスト(ジーニー2.0 → サプライヤー) -->
<cXML>
<Header>
<From><Credential domain="DUNS"><Identity>buyer-id</Identity></Credential></From>
<To><Credential domain="DUNS"><Identity>supplier-id</Identity></Credential></To>
<Sender><Credential domain="jienie"><Identity>jienie-2.0</Identity></Credential></Sender>
</Header>
<Request>
<SearchRequest>
<SearchKeyword>コピー用紙 A4</SearchKeyword>
<CategoryCode standard="UNSPSC">14111514</CategoryCode>
<MaxResults>50</MaxResults>
<SortBy>UnitPrice</SortBy>
</SearchRequest>
</Request>
</cXML>
<!-- ② 検索レスポンス(サプライヤー → ジーニー2.0) -->
<cXML>
<Response>
<SearchResult totalItems="23">
<Item>
<SupplierID>ASKUL</SupplierID>
<ItemName>コピー用紙 A4 500枚 高白色</ItemName>
<SKU>ASK-CP-A4-500</SKU>
<UnitPrice currency="JPY">325</UnitPrice>
<InStock>true</InStock>
<LeadTimeDays>1</LeadTimeDays>
<GreenProduct>true</GreenProduct>
<ThumbnailURL>https://...</ThumbnailURL>
</Item>
<Item>...</Item>
</SearchResult>
</Response>
</cXML>
注意: 上記は概念的な説明用の擬似XMLであり、実際のcXML仕様やジーニー2.0の実装とは異なる場合があります。実際の通信プロトコルの詳細は入社後に児嶋さんから確認すること。
5. 高速化の技術的メカニズム
5.1 4つの高速化戦略
┌─────────────────────────────────────────────────────────────┐
│ │
│ 横串検索の高速化 — 4層防御 │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Layer 1: 非同期並列リクエスト │ │
│ │ │ │
│ │ 全カタログへのリクエストを同時に発行 │ │
│ │ 待ち時間 = max(各カタログの応答時間) │ │
│ │ ≠ sum(各カタログの応答時間) │ │
│ │ │ │
│ │ 例: A=0.5s, B=1.2s, C=2.5s, D=0.8s │ │
│ │ 順次: 0.5+1.2+2.5+0.8 = 5.0秒 │ │
│ │ 並列: max(0.5,1.2,2.5,0.8) = 2.5秒 → ▲50%削減 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Layer 2: プログレッシブ表示 │ │
│ │ │ │
│ │ 応答の早いカタログから順に結果を画面に追加表示 │ │
│ │ ユーザーは全カタログの応答を待たずに結果を閲覧開始 │ │
│ │ │ │
│ │ タイムライン: │ │
│ │ 0.0s 検索開始 │ │
│ │ 0.1s 内部カタログの結果表示 ✓ │ │
│ │ 0.5s ASKUL の結果追加 ✓ │ │
│ │ 0.8s カタログD の結果追加 ✓ │ │
│ │ 1.2s MonotaRO の結果追加 ✓ │ │
│ │ 2.5s カタログC の結果追加 ✓ (全完了) │ │
│ │ │ │
│ │ → ユーザー体感: 0.1秒で最初の結果が見える! │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Layer 3: キャッシュレイヤー │ │
│ │ │ │
│ │ 頻出検索クエリの結果をサーバー側でキャッシュ │ │
│ │ TTL(生存時間)を設定して鮮度を保証 │ │
│ │ │ │
│ │ キャッシュ戦略: │ │
│ │ ・検索キーワード + カテゴリ をキーとしてキャッシュ │ │
│ │ ・人気商品(コピー用紙、トナー等)はヒット率が高い │ │
│ │ ・キャッシュヒット時: 0.05秒以下で応答 │ │
│ │ ・TTL: 数時間〜1日(価格変動頻度に応じて調整) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Layer 4: インデックス最適化 │ │
│ │ │ │
│ │ 外部カタログの商品マスター情報を定期的に同期 │ │
│ │ → ローカルインデックスを構築 │ │
│ │ → 検索時のリアルタイム通信量を最小化 │ │
│ │ │ │
│ │ 仕組み: │ │
│ │ ・バッチ処理で商品マスターを夜間同期 │ │
│ │ ・検索時は「在庫・価格」のみリアルタイム取得 │ │
│ │ ・商品名・スペック等はローカルインデックスから取得 │ │
│ │ → 通信データ量が大幅に削減 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 結果: ユーザー体感 < 1秒(キャッシュヒット時) │
│ ユーザー体感 1〜3秒(キャッシュミス時) │
│ 従来方式: 30秒〜数分(手作業比較) │
│ │
└─────────────────────────────────────────────────────────────┘
5.2 タイムアウトとフォールバック
| シナリオ | 対応 |
|---|
| カタログが応答しない | タイムアウト(例: 5秒)後にスキップ。他の結果を先に表示 |
| カタログが遅い | プログレッシブ表示で早いカタログから順に表示 |
| 全カタログがダウン | 内部カタログのみの結果を表示 + エラー通知 |
| キャッシュが古い | TTL超過 → 次回検索時にリフレッシュ。古いキャッシュは表示しない |
6. カテゴリマッピング(品名→カテゴリ自動変換)
6.1 UNSPSCコードの活用
┌─────────────────────────────────────────────────────────────┐
│ UNSPSC (国連標準製品・サービス分類コード) │
│ │
│ 階層構造: │
│ 14 事務用品・消耗品 │
│ 14-11 紙製品 │
│ 14-11-15 事務用コピー用紙 │
│ 14-11-15-14 A4コピー用紙 │
│ │
│ ジーニー2.0での活用: │
│ │
│ ユーザー入力: 「コピー用紙」 │
│ ↓ │
│ 品名→カテゴリ変換辞書 │
│ ↓ │
│ カテゴリコード: 14-11-15 │
│ ↓ │
│ このカテゴリに紐付く全カタログに検索リクエスト送信 │
│ ↓ │
│ 異なるサプライヤーの同一カテゴリ商品が │
│ 横並びで比較可能になる │
│ │
│ → スペンド分析時にもカテゴリコードで集計可能 │
└─────────────────────────────────────────────────────────────┘
6.2 トランスコーディフィケーション(コード変換)
| 問題 | 解決策 |
|---|
| バイヤーの品目コード ≠ サプライヤーの品目コード | UNSPSCを仲介コードとして変換 |
| サプライヤーAは「A4コピー用紙」、Bは「Copy Paper A4」 | テキストマッチング + カテゴリマッピングで同一商品として認識 |
| カテゴリがないと比較不能 | 品名入力 → 辞書で自動カテゴリ付与 → カテゴリ単位で横並び比較 |
7. セキュリティと認証
7.1 認証フロー
┌──────────────────────────────────────────────────────────┐
│ │
│ ユーザー認証フロー │
│ │
│ ① ユーザーがジーニー2.0にログイン │
│ → セッショントークン発行 │
│ │
│ ② 横串検索リクエスト発行 │
│ → トークンに紐付くバイヤー企業の情報を取得 │
│ │
│ ③ 外部カタログへのリクエスト時 │
│ → バイヤー企業の認証情報を付与 │
│ → 交渉済み特別価格が適用される │
│ │
│ ④ 検索結果はユーザーセッションに紐付き │
│ → 他ユーザーの検索結果とは完全に分離 │
│ → セッション終了時に一時データは削除 │
│ │
└──────────────────────────────────────────────────────────┘
7.2 セキュリティ対策
| 項目 | 対策 |
|---|
| 通信暗号化 | 全通信はHTTPS/TLS。サプライヤーAPIとの通信も暗号化 |
| 認証・認可 | バイヤー企業ごとのクレデンシャル管理。表示される価格はバイヤー固有 |
| データ分離 | マルチテナント。検索結果は一時的でユーザーセッションに閉じる |
| 監査ログ | 検索履歴、カート追加、発注の全操作を記録 |
8. 競合特許との比較
8.1 Ivalua社の類似特許(US20210342919A1)
| 項目 | ジーニーラボ(特許第6461047号) | Ivalua(US20210342919A1) |
|---|
| 出願日 | 2019年1月(日本) | 2019年1月(米国、優先日) |
| 地域 | 日本国内特許 | 米国特許出願(ペンディング) |
| アプローチ | cXML/OCIベースのパンチアウト横断検索 | REST API + iXML形式での横断検索 |
| 検索方式 | 非同期並列パンチアウト | 2段階API照会(概要→詳細) |
| 差別化 | 日本市場最適化、下請法対応との統合 | グローバル対応、UNSPSCベースの変換 |
| 結果表示 | プログレッシブ表示 + 価格順ソート | 統一UI + 属性別フィルタリング |
示唆: 横串検索の概念自体はグローバルで認知されている技術課題。
ジーニーラボの強みは「日本市場に特化した実装」と「既に商用稼働している実績」。
9. 技術面のFAQ(IT部門からの質問想定)
| # | 質問 | 回答 |
|---|
| Q1 | 外部カタログとの通信プロトコルは? | cXMLまたはOCI。サプライヤーに応じて選択。業界標準プロトコルを採用 |
| Q2 | 検索結果のリアルタイム性は? | 在庫・価格はリアルタイム取得。商品マスター情報はバッチ同期+ローカルインデックス |
| Q3 | レスポンスタイムのSLAは? | キャッシュヒット時0.05秒以下。キャッシュミス時1〜3秒(カタログ数と応答速度に依存) |
| Q4 | 1回の検索で何件まで結果を返せる? | 各カタログ最大50件 × カタログ数。UI上はページネーションで表示 |
| Q5 | 既存ERPとの連携は? | ERP非依存設計。検収データ・マスターデータはバッチ連携。REST APIも対応 |
| Q6 | 可用性は? | クラウドSaaS。SLA詳細は契約に依存(入社後確認) |
| Q7 | カタログを追加するのにどのくらいかかる? | cXML/OCI対応済みサプライヤーなら数日。新規対応は数週間 |
| Q8 | セキュリティ認証は? | HTTPS/TLS、マルチテナント分離、監査ログ。詳細は入社後確認 |
10. 入社後の技術学習アクション
調査ソース
最終更新: 2026-04-15
ステータス: evergreen — 入社後に実装詳細を追記予定
対象読者: エンジニア、IT部門、技術的な質問に回答する必要がある場面で参照