リーナー購買チームのendaです!
今回は、チーム内で実施していたcXML仕様勉強会について紹介します。
cXML仕様勉強会
cXMLとは
cXML(commerce eXtensible Markup Language)は、購買システムやECサイトやサプライヤーのシステム間で、注文、カタログ、出荷通知などの情報をやり取りするためのプロトコルです。
リーナー購買では、外部のECサイトで商品を選び、その情報をリーナー購買に持ち帰って購買申請や承認につなげる「パンチアウト連携」でcXMLが登場します。
cXMLは、注文書、カタログ、パンチアウト、注文受理、出荷通知など、扱える領域がかなり広く、企業間取引で発生するさまざまなやり取りを表現でき、外部システムとの連携を進めるうえで強力な土台になります。
一方で、できることが多いぶん仕様も大きいため、実際に向き合ってみるとなかなか大変な面もあります。
なぜ勉強会を始めたのか
cXML仕様勉強会の目的は、大きく以下の3つでした。
- cXMLの仕様について、より詳しくなる
- リーナー購買の仕様やコードを理解しやすくする
- 新規カタログ連携時に、cXML仕様に沿った会話ができるようにする
cXMLは、いろいろなことを表現できる仕様です。
注文書ひとつを見ても、ヘッダー、明細、金額、税、配送先、コメント、独自項目など、見るべきポイントがたくさんあります。
さらに実際の連携では、共通仕様だけを見ていればよいわけではなく、連携先ごとに対応しているcXMLの範囲や必須項目、値の持ち方、文字数制約、運用上のルールなどが異なります。
そのため、開発時には次のような観点を行き来する必要があります。
- cXMLの仕様としてはどう定義されているか
- リーナー購買の実装ではどうなっているか
- 連携先の仕様・制約はどうなっているか
これを一人で都度キャッチアップするのは、なかなか大変でした。
そこで、チーム全体でcXMLの仕様やリーナー購買側の実装への理解を深め、新規カタログ連携時に仕様に沿った会話ができるようにするため、勉強会を実施していました。
なお、このあたりのcXMLの課題や苦労については、がーしーさん (@phigasui)がKaigi on Rails 2024の発表「cXML という電子商取引のトランザクションを支えるプロトコルと向きあっている話」で詳しく話しています。興味のある方はぜひ見てみてください!
勉強会でやっていたこと
勉強会では、cXMLの仕様書を読みながら、実際のリーナー購買のコードや連携の話と照らし合わせて理解を深めていきました。
単に仕様書を読むだけではなく、
「この要素は実際の連携ではどう使われるのか」
「リーナー購買のコードではどう扱っているのか」
「連携先と会話するときに、どこを確認すべきか」
といった観点で進めていました。
参加者からは、以下のような感想がありました。
雰囲気で理解していたcXMLの仕様の解像度が上がった
DTD1について深掘りできたのがよかった
仕様書だけを読むよりも、実際のコードや連携仕様と合わせて見ていくことで、だいぶ理解が進んだと思います。
仕様としては幅広く表現できる一方で、実際の連携では連携先ごとの制約があります。 金額や税の扱いのように、仕様だけでは判断しきれず、サプライヤーとの会話の中で確認が必要になることもあります。
こうしたつらさを個人で抱え込まず、チームで共有しながら少しずつ理解していけたのはよかったです。
おわりに
勉強会をやってみて、チームで少しずつcXMLに対する共通認識を持てる状態に近づけたと思います。
開発時に苦労したことを思い出しながら、「これ、あのときハマったやつだ」みたいな話もしつつ、楽しく進めることができました。
実際に、勉強会で扱った内容がその後のカタログ連携開発やPRレビューで役に立つ場面もあり、やってよかったなと思っています。
cXML仕様のバージョンも都度上がっていくので、またよきタイミングで仕様書を読んでいこうと思います。
宣伝!
cXMLに興味があったり、リーナーの開発者と話してみたい方は、お気軽にお声がけください!
- DTDはDocument Type Definitionの略で、XML文書で使える要素や構造を定義するためのものです↩