YDiary

メモ的な

MSのドキュメントにフィードバックをしたら最悪の対応をされた件とその技術的考察

MastodonTwitterに投稿してたこの件の詳細です.

issueがcloseされてから特に音沙汰がないので,一回記事にまとめようと思います.

何が起きたか

何が起きたのかについて,時系列に順を追って説明します. Azureに関するMSの公式ドキュメントを見ていたら,たまたま404になるリンクを見つけたので,そのまま該当するGitHubリポジトリにこのようなissueを立てました.

github.com


YDKK commented 15 days ago
Marketplace links are broken.
ex) https://azuremarketplace.microsoft.com/marketplace/apps?page=1&search=Email

私「このリンクが切れてるよ」


LisandroSu commented 14 days ago
Hello, @YDKK We truly appreciate your comment and we strive to improve your experience in docs.microsoft.com. However, the marketplace link seem to be working fine (see screenshot below). Can you please provide more detailed information and clarify your comment?

MSの人「フィードバックありがとう!でも見た感じリンク生きてそうだけど?」


YDKK commented 14 days ago
When I saw these links, a 404 error was occour, but now these links are working well for me too. I think there was a something temporary problem and now resolved.
So, I'll close this issue. Thank you for your response.

私「あれ,本当だ.なんか一時的な問題があったのかな.じゃぁissueをcloseするね.」


この時,自分でもう一度確認してみたところ,確かに404ではなくちゃんとしたページが表示されていました.そこで,何か一時的な問題が発生していたのだろうと思い,一旦issueをcloseしました.

後になって気が付くのですが,実はこの時発生していたのは一時的な問題などではなく,閲覧環境に起因する問題だったのです. 最初に404が表示された際と違う環境から確認していたため,問題が解決したように見えたのでした.

その後,最初と同じ環境でページを見たところ,再び404が発生しました.ここで,初めて閲覧環境の違いによって404が発生するのではないか,と気が付きます.

実際に問題が発生する環境で確認してみたところ,Chromeでは404になるものの,Edgeでは正常に閲覧することができました.ただし,Chromeだからと言って問題が発生するわけではなく,正常に閲覧できる環境ではChromeでもEdgeでも問題なく閲覧することが可能でした.

そこで,404になる場合と正常に閲覧できる場合とで,ブラウザから送出されるHTTPヘッダの値を調べました. その結果,どうやら Accept-Language ヘッダが ja-JP ではなく, ja のような短い形式の場合に404が発生すると突き止めました.どうも,日本語を使用している国(地域)は一般的に日本しかないので,国部分が省略されてしまう場合があるようです.

そこで,再びissueをopenし,どうやら Accept-Language ヘッダによる言語別ページへのリダイレクトがうまく動いていないようだ,と画像付きでコメントします.

f:id:YDKK:20181129112716p:plain

これに対して,MS側からのレスポンスが次のものです.


CeciAc commented 7 days ago
Hello, @YDKK We checked the issue in several browsers and everything looks like is working fine. Can you check if this still repros on your side?

MS「いくつかのブラウザで確認してみたけど,特に問題ないように見えるよ.そちら側でもまだ再現するか確認してくれない?」


この時点で,「あれ?」というような違和感を覚えます.そりゃ英語圏じゃ en-USen-GBen と略したりはしない*1でしょうから,いくらブラウザで確認したところで問題が再現するとは思えません.

そこで,問題が Accept-Language ヘッダだけによって発生していることを示し,確実に相手側の環境でも再現できるように,curlコマンドを用いた例を示しました.


YDKK commented 5 days ago
Yes, the issue is still existing. I can reproduce this with a simple curl command.
curl "https://azuremarketplace.microsoft.com/marketplace/apps?page=1&search=Email" -H "Accept-Language: ja" -o nul -w '%{http_code}\n' -s f:id:YDKK:20181129114058p:plain
It seems if the browser sent Accept-Language header in short form, the page returns 404.


これに対して,相手側の応答がこちらです.

CeciAc commented 2 days ago
Hi @YDKK The link is working both in Firefox and Chrome, even in the short form
f:id:YDKK:20181129114753p:plain Since this may be an issue with the command being run, and since the issue does not repro on our end, we will need to close this issue. Thanks for understanding.

MS「リンクはFirefoxでもChromeでもちゃんと動作してるよ.しかも短い形式でも(ここでなぜかURLを ja と書き換える).どうやら実行してるコマンドの問題っぽいし,こっち側で再現しないからこのissueを閉じるね.ご理解ありがとう.」 f:id:YDKK:20181129134100p:plain


おまえは何を言っているんだ」(図略)

ブラウザで見れなかったって言ってるでしょーに.この時点で,どうやら相手にHTTPなどのWeb技術に関する知識がなさそうであることを悟ります.まぁ,もともとドキュメントのメンテやローカライズ担当の方っぽいので,そのこと自体には何の問題もありません.むしろ仕方のないことでしょう.

許せないのは,ここでissueが即closeされていることです.なーにが Thanks for understanding. じゃ.こっちは別にこのリンク切れが原因でAzureが顧客を逃そうと全く関係ないのですが,丁寧に再現条件まで書いたのにまともに検証もせずに「こっちの環境じゃ起こらないから」の一言でcloseされてるのが納得いきません.

明らかに自分の知識や担当範囲を超えているのですから,わかる人や技術サイドにエスカレーションすれば良いにもかかわらず,なぜその場でissueを閉じてしまうのでしょうか.

ちなみにその後,投稿を見た人たちに確認してもらったところ,日本語環境のIEやEdge, Chrome, Firefoxなどで再現する場合があるようです.

技術的な考察

では,そもそもなぜこのような事象が発生するのでしょうか.
Accept-Language ヘッダの値が短い形式の場合に問題が発生するというのは先述の通りですが,この値が短い形式になる条件は何でしょうか.
同じブラウザでも表示できる場合があることから,単純にOSの言語設定やブラウザの実装による違いというわけではなさそうです. 軽く調べたところ,こうした問題は以前からたびたび発生しているようですが,どういう条件で短くなるのかまでは分かりませんでした.

確かそうなのは,これが日本語のように「主に一つの国(地域)でしかその言語を使用していない」という状況でないと発生しなさそうであるという点です. 先にも述べましたが,英語の場合,省略してしまうと en-US なのか en-GB なのか,はたまたその他なのか区別できなくなってしまうからです.

そのため,Azure Marketplaceを実装していた英語圏?のエンジニアはこの問題を見落としてしまったのではないかと考えられます.

そもそも,この問題がAzure Marketplace側の問題なのか,はたまたCDNやロードバランサなどのインフラ側の問題なのかは確かではありませんが,いろいろな言語での対応・検証などを考えると,何かと対応が大変そうな気がします.

*1:区別できなくなるから