JP PINTの「検証済み」は何を意味するのか:2021年からのBasic Rules問題とMLSの適合性判定

Views: 1

1. MLS導入期限が迫る中で、今なお残る適合性判定の問題

オープンペポルは、従来のMLR(Message Level Response)を MLS(Message Level Status)へ移行するスケジュールを公表している。

時期 マイルストーン プロバイダへの影響

2026年7月1日

MLS仕様の適用開始(T1)

MLS導入の段階的移行開始

2027年2月28日

MLS受信対応期限(T2)

全プロバイダがMLSを受信できるようにし、SMPに受信機能を登録する必要がある

2027年3月31日

MLS送信義務化(T3)

全プロバイダにMLS送信が義務付けられ、関連するサービスレベル要件も適用される

2027年5月1日

MLR廃止予定(T4)

従来のMLRによる通知を終了

2026年10月現在、MLS受信対応の期限まで約4か月、送信義務化まで約5か月しか残されていない。

しかし、JP PINTでは、BIS本文に規定された計算規則の一部が公開スキーマトロンで検証されていないことが、オープンペポル自身によって確認されている。

さらに、従来のBIS Billing 3.0やPINT EUで提供されているUBL独自要素を制限するBasic Rulesに相当する規則群も、JP PINTには提供されていない。

MLSでは、受信側プロバイダ(C3)が、受信メッセージの適合性違反による拒否を判断する。

ところが、その判定に必要な共通の検証規則が不完全なままである。

適合性の判定を求められるプロバイダは、
何を根拠にメッセージを受理し、あるいは拒否すればよいのだろうか。

この問題は、2021年のJP PINT導入検討時から指摘してきたものである。

MLSへの移行期限が具体的に定められた現在、適合性の要求範囲や共通検証規則の必要性について、今になって基本的な議論を繰り返している段階ではないはずである。

プロバイダが実装と運用上の責任を果たせるように、
オープンペポルと日本のペポルオーソリティは、
共通の適合性判定基準と検証資産を速やかに整備する必要がある。

本稿では、この問題について、2021年からの指摘、2026年10月19日のオープンペポルの回答、およびJP PINTの検証資産の具体的な問題を整理する。

2. 私が問題視したことと、オープンペポルの回答

2026年5月、私はオープンペポル ヘルプデスクに、チケット PEPPOL-23582 として、JP PINT BISに明記された計算規則が公開スキーマトロンでは十分に検証されていない問題を報告した。仕様書に計算規則が規定されていても、その規則を検証プログラムが検査しなければ、「スキーマトロン検証に合格した」ことを「BISのすべての規則に適合した」ことと同一視できないからである。

私が問題視したのは、単にスキーマトロンのルール数が足りないことではない。仕様が要求する適合性の範囲と、実際に検証される範囲が一致していない こと、そしてその差が送信企業、受信企業、ペポルのプロバイダから見えにくいことである。

たとえば、税率別の明細金額を正しく集計したかを検証せず、請求書に記載済みの課税対象額に税率を掛けた税額だけを確認しても、誤った集計金額を見逃し得る。

さらに私は、MLS(Message Level Status:メッセージレベルの状態通知)の導入に関連して、受信側プロバイダ(C3)は何を根拠に「適合/不適合」を判定するのか という質問を提起した。MLSには、C3が不適合と判断した文書を拒否し、送信側プロバイダ(C2)にその理由を通知する仕組みがある。判定をC3に求めながら、共通の判定基準と検証資産が不完全なら、プロバイダはどう責務を果たせばよいのか。

2026年10月19日、オープンペポルの担当者から回答があった。JP PINT 1.1.3を確認し、BIS本文の4.1.3、4.1.4、4.3.1節に関係する次の計算がスキーマトロンで検証されていないという指摘を確認した、という内容である。

  • 税カテゴリー・税率ごとの課税対象額(IBT-116)の集計

  • 請求明細行の正味金額(IBT-131)

  • 品目の正味単価(IBT-146)

  • 基準額と率から求める値引き・追加料金の金額

一方、ALIGNED-IBRP-051-JP が確認するのは、記載された課税対象額(IBT-116)、税率(IBT-119)、税額(IBT-117)の関係に限られるとの説明だった。

オープンペポルは、これらがJP PINT固有の規則に属するため、報告と提案した検証規則を 日本のペポルオーソリティ(デジタル庁)へ送付し、判断を求める と回答した。また、MLSにおける適合性の判定方法 に関する質問は、オープンペポル内部で取り上げるとした。

ただし、修正案の採用、実装時期、MLSの適合性判定モデルについて具体的な方針が決定したわけではない。

今回の指摘には、さらに長い経緯がある。私は2021年のJP PINT導入検討時から、UBLのXMLスキーマだけではPINTへの適合性を確認できないため、従来のBIS Billing 3.0にあるBasic Rulesに相当する検証規則をPINTでも整備すべきだと主張してきた。しかし、当時のPINTチームからは「Basic RulesはPINTでは対応しない」という趣旨の回答を受け、提案は採用されなかった。これは筆者が経験した経緯であり、当時の正式議事録や決定記録を本稿で新たに検証したものではない。

ところが現在、PINT EUにはUBL独自要素を制限する `UBL-CR`規則群が提供されている。 この事実は、PINTでもUBL XMLスキーマを補完する検証規則が実際に必要とされ、提供されていることを示す。これと対照的に、JP PINTでは同等の規則群を公開規則一覧から確認できない。JP PINT 1.1.1の配布サンプルには、構文バインディングにない cbc:UBLVersionID が記述されていたが、1.1.3では削除されている。両版の同梱スキーマトロンに、この要素を検証する規則は確認できなかった。

この回答と2021年からの経緯を起点として、以下では仕様・構文・検証・状態通知の関係を整理する。なお、MLR(旧)とMLS(新)の基本的な相違、応答コード、C1~C4の通信経路については、三分一技術士事務所で2026年9月24日に公開した筆者の記事「MLR(旧)からMLS(新)へ:Peppolのメッセージ応答は何が変わるのか」で詳述した。本稿はその議論を前提に、C3が適合性を判定するための共通規則は十分に提供されているのか に焦点を当てる。

3. XMLスキーマとJP PINTへの適合性は何が違うのか

3.1. UBL XMLスキーマが保証する範囲

JP PINTの請求書はUBLのXML形式を利用する。UBL 2.1のXMLスキーマ(XSD)は、要素の構造、出現順序、型、構文上の出現回数などを検証する。たとえば cbc:LineExtensionAmount が正しい構造に置かれ、規定されたデータ型で表現されているかを確認できる。

しかし、その金額が数量・単価・値引きなどから正しく計算されているか、同じ税率の明細金額が正しく集計されたかは、通常のXSDだけでは判定できない。

また、UBLで使用可能な要素が、すべてJP PINTで業務上の意味を持ち、使用を許されるとは限らない。「UBL XMLとして妥当」と「JP PINTに適合」は同義ではない。

3.2. 論理モデルと構文バインディング

論理モデルは、請求書に必要な業務情報をBusiness Term(IBT)とBusiness Group(IBG)として定義する。構文バインディングは、それらの情報をUBLのどのXML要素や属性で表現するか、必要に応じて要素を識別する条件とともに規定する。

たとえばIBT-131は請求明細の cbc:LineExtensionAmount、IBT-146は cac:Price/cbc:PriceAmount と対応する。こうしてXMLの値に「明細正味金額」「品目正味単価」という業務上の意味が与えられる。

ここで重要なのは、UBLスキーマには存在するが、JP PINTの論理モデルや構文バインディングには対応しない要素 をどう扱うかである。それを許すのか、無視するのか、禁止するのかが適合性の規定として明確でなければ、機械的に一貫した判定ができない。

「構文バインディングにない要素はスキーマトロンでは検証できない」という意味ではない。スキーマトロンはXPathにより任意の要素を選択し、その出現や値を検査できる。しかし、未対応要素の使用を禁止する条件が規定・実装されていなければ、その問題を検出できない。

3.3. BIS Billing 3.0からPINTへ:Basic Rulesの重要性

従来のPeppol BIS Billing 3.0には、UBL XMLスキーマでは使用可能でも業務仕様では不要・制限対象となるUBL独自要素を確認する UBL-CR 規則群が用意されている。ここでは、筆者が2021年から問題提起してきたBasic Rulesに相当する検証の具体例として取り上げる。公式文書では UBL-CR という規則IDや構文規則の区分で確認できる。

例えば、UBLのバージョン情報を表す cbc:UBLVersionID はUBL 2.1のXMLスキーマで使用可能な要素である。BIS Billing 3.0およびPINT EUでは、UBL-CR-002 として次の規則が掲載されている。

<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
not(cbc:UBLVersionID) or cbc:UBLVersionID = '2.1'

この条件は、要素を省略するか、記載する場合は値を 2.1 とすることを求める。違反時の重大度はwarningである。 2.1 という値を含むこと自体は違反でなく、値が異なる場合でもこの警告だけを根拠にMLSの RE を返すことはできない。

BIS Billing 3.0およびPINT EUには、UBLVersionID 以外にも、UBLExtensions、ProfileExecutionID、CopyIndicator、UUID、IssueTime などの使用を制限する規則がある。ただし、規則の内容や重大度は項目ごとに異なり、すべての要素を一律に禁止しているわけではない。

仕様 UBL独自要素の規則 確認できる範囲

BIS Billing 3.0

UBL-CR 規則群

UBLの構造上は許されるが業務仕様上は制限する要素についての検証

PINT EU

EN 16931固有PINT規則内の UBL-CR

UBL-CR-002 などの検証規則を提供

JP PINT

同等の UBL-CR 規則群を公開一覧から確認できない

項目の扱いと共通の判定条件について明確化が必要

ここで重要なのは、PINT EUの規則群をそのままJP PINTにすべて適用すべきだ、ということではない。PINT EUにはEN 16931との対応を前提とする規則もある。JP PINTで採用する制約と重大度を日本の仕様として明示し、共通の検証資産に反映する必要がある、ということである。

3.4. JP PINT 1.1.1から1.1.3への変更とUBLVersionID

この問題を具体的に示すのが、JP PINTの配布ZIPに収録されたサンプルインボイスの変化である。今回は実際の配布物を照合した。ZIP名の括弧付き番号はダウンロード時のローカル名であり、正式な版番号ではない。正式な版は各ZIPの common/docs/release-notes.pdf に記された見出しで識別した。

確認事項 JP PINT 1.1.1 JP PINT 1.1.3

サンプルXML数

9件

9件

cbc:UBLVersionID の存在

9件すべて

0件

値

全件 2.1

該当なし

同梱Schematron・XSLTの UBL-CR 規則ID

検出されず

検出されず

同梱Schematron・XSLTの UBLVersionID 参照

検出されず

検出されず

1.1.1に収録された9件のサンプルは、いずれも次の要素を含んでいた。

<cbc:UBLVersionID>2.1</cbc:UBLVersionID>

一方、1.1.3の配布サンプル9件には、この要素は存在しない。すなわち、以前の公式サンプルには含まれていたが、1.1.3の配布サンプルからは削除されている。ただし、削除理由はこの差分からは確定できない。

cbc:UBLVersionID は、JP PINTの構文バインディングには業務項目として記載されていない。UBL 2.1 XMLスキーマでは使用できるため、正しい位置と構造であればXSDによる構文検証を通過する。しかし、それだけではJP PINTでの扱いは決まらない。

従来のBIS Billing 3.0とPINT EUで提供される UBL-CR-002 では、UBLVersionID は省略するか値を 2.1 とする条件であり、違反時の重大度はwarningである。したがって、1.1.1のサンプルが記載していた 2.1 はこの条件を満たす。しかし、この規則がそのままJP PINTに適用されるわけではない。

今回調べた1.1.1、1.1.3両方の配布ZIPには UBL-CR-002 に相当するIDも、UBLVersionID を直接参照する同梱Schematron・XSLTルールも見つからなかった。サンプルの修正と、受信文書の適合性を判定する共通ルールの整備は別の問題 である。

C3プロバイダが UBLVersionID=2.1 を含むインボイスを受信した場合、要素の存在だけで拒否すべきなのか、許容されるのかについて、適用するJP PINTの規範的な規定と検証条件を確認する必要がある。構文バインディングに対応がないという事実だけで、自動的に拒否できるとはいえない 。一方、旧版の公式サンプルに記述があったことだけを根拠に恒久的な使用許可があるともいえない。

この事例は、UBLスキーマ検証だけでは解決できない適合性の問題を示す。2021年から訴えてきたBasic Rulesに相当する共通ルールの必要性が、MLSの導入によって一層明確になる。

Note

以上は提供された二つの配布ZIPの内容についての確認であり、JP PINTの過去・現在の全公開資産について網羅的に検証した結論ではない。配布ZIPの正式版は同梱リリースノートで識別した。別途公開された規則群やネットワーク運用規定に同等の規則が存在しないことまで証明するものではない。

3.5. スキーマトロンで確認できる範囲

スキーマトロンはXPathに基づき、要素間の条件、相互関係、計算、コードの組合せなどを検証する。assert の test が真なら条件成立、偽なら違反となる。重要なのは、スキーマトロンがBIS本文を自動解釈してすべての規則を検証するわけではない点である。規定されたBusiness Ruleを実行可能なルールとして実装して初めて検証できる。

層 規定・検証する主な対象 それだけでは保証しないこと

UBL XMLスキーマ(XSD)

XMLの構造、順序、型、構文上の出現制約

JP PINT固有の要素利用制約や計算規則

論理モデル・構文バインディング

業務項目の意味とXML上の表現位置、選択条件

その規定が実際に自動検証されること

スキーマトロン等の検証資産

実装された業務規則、条件、計算、追加制約

未実装の規則や文書外の業務事実

4. JP PINTで何が検証され、何が残るのか

4.1. 課税対象額の集計を見逃す例

10%税率に属する明細が 10,000円 と 5,000円 であり、該当する値引き・追加料金がないとする。正しい課税対象額は 15,000円 である。

ところが請求書に課税対象額(IBT-116)20,000円、税額(IBT-117)2,000円、税率(IBT-119)10%が記載されていれば、報告済みの課税対象額と税額の計算関係だけは整合する。

明細A 10,000円 ─┐
               ├─ 正しい課税対象額 15,000円
明細B  5,000円 ─┘

誤ったIBT-116 = 20,000円
IBT-117       =  2,000円
IBT-119       = 10%

20,000 × 10% = 2,000    ← 税額の関係は整合
10,000 + 5,000 ≠ 20,000 ← 課税対象額の集計は誤り

実際の課税対象額の算出には、同じ税カテゴリー・税率の文書レベルの値引き・追加料金なども含め、BIS本文の条件を適用する必要がある。上記は二つの計算規則が独立していることを示す単純化した例である。

4.2. ほかに確認された欠落

明細正味金額(IBT-131)には数量、基準数量、単価、明細値引き・追加料金との計算関係がある。品目正味単価(IBT-146)には総額単価や値引きとの関係がある。また、基準額と率による値引き・追加料金の計算も別の検証対象である。

今回のヘルプデスク回答が確認したのは、この4領域の計算規則が現行スキーマトロンで検証されていないという点である。JP PINTのすべてのスキーマトロン規則が存在しないという意味ではない。 公開資産には共有PINT規則および日本固有の規則がある。どの要件がどの検証ルールで保証されるかの全件対応表を作らなければ、実装の網羅性は断定できない。

さらに、計算規則の欠落とは別に、論理モデルや構文バインディングに対応しないUBL要素の扱い、要素の出現回数、条件付き必須、使用可能なコードなども、規定と検証実装を照合する必要がある。

5. MLSの導入でC3に何が求められるのか

5.1. 前稿で整理したMLR(旧)とMLS(新)の違い

前稿「https://www.sambuichi.jp/?p=17232[MLR(旧)からMLS(新)へ:Peppolのメッセージ応答は何が変わるのか]」では、両者が単なる名称変更ではないことを説明した。以下は、本稿の論点に関係する相違の要約である。

項目 MLR(旧) MLS(新)

仕様上の位置付け

Post-Award BISの業務文書

eDeliveryのプロバイダ間状態通知

論理的な送信者

受信企業(C4)

受信側プロバイダ(C3)

論理的な受信者

送信企業(C1)

通常は送信側プロバイダ(C2)。*MLS_TO*指定時はその送信先決定規則に従う

主な通知対象

業務文書の適合性検証結果

C3の処理結果およびC4への配送状況

AP

致命的な検証エラーなしで次の処理へ進める

C4への配送確認を取得した

AB

文書を受領・識別したが適合性検証を実施していない

C4へ転送したが配送確認を取得できない

RE

適合性違反によりそれ以上処理しない

適合性違反による拒否、または恒久的な配送失敗

MLR(旧)の業務上の応答は論理的にはC4からC1へ向かう。ただしネットワーク上の逆方向の配送はC3、C2を経由する。MLS(新)では、C3自身が応答の送信主体となる。この違いが重要である。

Note

上表の AP、AB、RE は、MLR(旧)とMLS(新)で意味が異なる。同じコードを同じ意味に読み替えてはならない。また、受信企業が請求内容を業務上承認・否認するInvoice Responseは、これらと別の仕組みである。前稿でこの区別を詳しく説明した。

5.2. MLSがC3に求める判断

MLS 1.1.0は、C3がメッセージ処理とC4への配送状況を通知するための仕様である。C3が適合性違反を理由に拒否する場合の RE と、C4への配送失敗を理由とする RE は、同じ応答コードであっても原因が異なる。拒否理由の特定と相手方への通知を混同してはならない。

MLSで認められる拒否理由には、XMLスキーマ違反、標準への適合性違反、致命的なスキーマトロン違反、文書バージョン等の不整合、配送失敗などが含まれる。warningのみを根拠とする拒否は認められない。

ここで問題なのは、MLSが状態通知の手順を整えても、JP PINTの仕様要求と検証資産との不整合は自動的には解決しない ことである。C3に検証・拒否の判断を求めるなら、その根拠と重大度が各プロバイダで再現できる形で定義されなければならない。

5.3. C1の責任がC3へ移譲されたのか

従来、仕様に適合する業務文書を作成する基本的な責任は送信企業(C1)にある。MLS導入によってその責任がC3へ全面的に移譲されるわけではない。また、従来のMLRでも受信側での適合性検証は想定されていたため、C3の検証がMLSによって初めて生まれたと表現するのも正確ではない。変更の核心は、従来はC4からC1への業務文書として通知されていた検証結果に代わり、C3自身がプロバイダ間のMLSで処理・配送状態を通知する点である。

しかしMLSでは、C3が適合性や配送結果を判断し、必要な場合は*RE*を送信する役割を担う。MLS 1.1.0は、RE の結果、メッセージに関する責任がC1/C2側へ戻ると説明している。文書作成責任と、受信側で適合性を判定し拒否理由を通知する役割を区別する必要がある。

ここで問われるのは、C3に判定を求めるのであれば、その根拠となる適合性基準を誰が、どの粒度で、どのような検証資産として提供するのか ということである。

公開スキーマトロンにBISの計算規則が実装されていなければ、C3 がそれを正しく実行しても違反を検出できない。一方、各 C3 が独自に BIS の規則を補えば、同一のメッセージがある C3 では受理され、別の C3 では拒否される可能性がある。

仮想例 実施した検証 起こり得る判断

C3-A

公開スキーマトロンだけ

計算誤りを検出せず受理

C3-B

公開資産に独自計算ルールを追加

計算誤りを検出して拒否を検討

ただし、独自検証で誤りを発見したことと、それをMLS仕様上の正当な RE 理由として扱えることは同じではない。MLSには拒否理由の範囲が定められており、プロバイダの判断で無条件に拒否条件を拡張できるとは解釈すべきでない。

5.4. 「最善の努力」で済ませてよい問題ではない

もし適合性判定の対象と方法が不明確なまま、各プロバイダに「利用可能な手段で最善の努力をする」とだけ求めるのであれば、共通の適合性を保証することはできない。2021年から指摘してきたBasic Rulesの問題は、MLSにおいてC3が受信・拒否の判断を担うことにより、実際の運用責任の問題となる。

必要なのは、どのJP PINT版と検証資産を適用するか、BIS本文・論理モデル・構文バインディングのどこまでが必須検証対象か、未対応UBL要素をどう扱うか、どの違反がMLSの RE を正当化するかを明確にすることである。

この問題は、現場のプロバイダが独自に努力すれば解決する類いのものではない。適合性を要求する仕様策定主体が、客観的・再現可能な判断基準を示さなければならない。

5.5. プロバイダの実装・運用上の課題

C3には、受信メッセージの識別、適用すべき版に応じた検証、C4への配送結果の把握、MLSの作成・送信、拒否理由の明示が関係する。C2にはMLSの受信、元メッセージとの対応付け、送信側への結果伝達等が関係する。MLSの送信条件についてはSBDHの MLS_TYPE 、送信先については MLS_TO、既定の動作についてはPeppol Network Policyとの整合が必要である。

品質保証上は、使用したXSD・スキーマトロン・JP PINTの版、実施した検証範囲、検出したルールIDと対象要素、配送失敗と規則違反の区別を追跡できる形で記録することが望ましい。ただし、これらを一律に新しい義務とみなすのではなく、MLS仕様で定められた必須事項と筆者の運用上の提案を区別しておきたい。

6. 適合性の判定基準を誰が整備するのか

今回のヘルプデスク回答によって、JP PINT BIS本文に定められた一部の計算規則が公開スキーマトロンで検証されないことが確認された。さらに、BIS Billing 3.0とPINT EUで提供されているUBL独自要素の検証規則に相当するものがJP PINTの公開規則一覧には見当たらない。JP PINT 1.1.1のサンプル9件に構文バインディング未記載の*cbc:UBLVersionID*が含まれ、1.1.3の9件からは削除されたにもかかわらず、両版の同梱検証資産にその要素を対象とする規則が確認できないことは、サンプル修正と適合性規則整備の違いを具体的に示す。他方、MLSにおける適合性モデルに関する筆者の質問はオープンペポル内部で取り上げると回答された段階であり、結論が出たわけではない。

私は、少なくとも次の整備が必要だと考える。

  • BIS本文、論理モデル、構文バインディング、Business Ruleと検証資産の対応を明示する。

  • UBL XMLスキーマでは認められるがJP PINTで対応が規定されていない要素の扱いを明文化し、Basic Rulesに相当する共通の構文検証規則と重大度を整備する。

  • 計算規則など、文書内の情報から機械判定できる要件について未実装の範囲を明示し、共通の検証方法を提供する。

  • 検証違反と配送失敗を区別し、C3がMLSの*RE*を送信する判定基準を明確にする。

  • C1、C2、C3、C4の各役割で、何が保証され、何が保証されないかを明らかにする。

これは「すべてをスキーマトロンでチェックせよ」という要求ではない。スキーマトロン以外の方法で検証するのであれば、その方法と判定基準が共通に定義されていればよい。

適合性の判定をプロバイダに求めるならば、仕様策定主体は適合性を客観的かつ再現可能に判定できる基盤を提供しなければならない。 「検証済み」という言葉の意味を曖昧にしたままMLSの応答だけを標準化しても、取引当事者が同じ意味で結果を理解することはできない。

Note

2026年10月19日のヘルプデスク回答に基づく確認事項は、上記4領域の計算規則の未検証、および日本のペポルオーソリティへの照会とMLS適合性モデルに関する内部検討の予定である。2021年のPINTチームとのやり取りは筆者の経験に基づく記述であり、当時の意思決定記録との照合は未実施である。今回、JP PINT 1.1.1と1.1.3の配布ZIPに収録されたサンプルXML各9件と同梱検証資産を再照合した。配布物の全履歴や変更理由までは調査していない。追加要素の扱い、責任分担の評価、必要な改善策については筆者の技術的分析と提案であり、オープンペポルによる決定事項を示すものではない。

7. 参考資料


投稿日

カテゴリー:

,

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です