コミケ告知

サークル活動の詳細は circle タグの記事へ。
2015年5月22日金曜日

通信のBack pressureを「背圧」とする誤訳をやめよう

ここ半年ほど、ネットワーク系の記事やスライド等において、英語のback pressure背圧と訳すケースをいくつか見かけています。それは誤訳であるということの主張をしつつ、そのついでに経緯も追ってみます。

日本語の「背圧」

参考: 背圧 - Wikipedia

Google検索でも、現時点ではこの意味で使用されたものがリストアップされます。技術系の日本語Wikipedia記事は、大半が劣化翻訳で使い物になりませんが、この背圧の記事は詳細度はともかく、何を指しているかは正しいように見えます。

日本語の「背圧」は、物理学的な意味での圧力を指すものとして、長い間使われてきました。

英語の「Back Pressure」

参考: Back pressure - Wikipedia, the free encyclopedia

エンジン関係の用法の他に、情報工学における用法(Back pressure in information technology)も記載されています。この部分が追記されたのは2011年のようです。ネットワークスイッチでバッファ溢れを防ぐ方式である、程度の簡潔な記述です。

元来のBack Pressure

Ethernetで半二重(half-duplex)通信を行う際に使われた制御方式が由来です。Ethernetなんて前世紀からありますから、もちろん日本で使われてないわけがありません。ではこの用法はどこへ行ったのかというと…
カタカナに訳されました。経緯や当時の是非はともかく、今や「バックプレッシャー」は広く定着しています。

英語のBack Pressureの変化

さきのWikipedia(en)の説明では、日本語のバックプレッシャー説明記事にあるような、半二重方式に限定した話は記載されていません。受信側が送信制御を行う方式全般のことを指しているような説明です。

英語圏かつはるかに昔の話であるので、当初はどういう意味あいだったのか、すぐに調べることはできません。軽く検索してみると、2000年発行のComputer Networks Super Reviewという書籍が引っかかり、ここでは半二重のFlow Control方式であるback pressureと、全二重で同等のことを実現するPAUSEフレームは別物として説明されています。Flow Controlという概念の中に、back pressureとIEEE802..3xのPAUSEフレームがある、という感じです。

しかしこれがいつのまにか、Back puressure=受信側が送信制御を行う方式全般 を指すように変化していったようです。
  • (2011) IBM Converged Switch B32
    • "the Pause mechanism does not have the ability to selectively back pressure data sources (中略) so it is disruptive to all traffic on the link"
    • 適当訳:Pause方式は、データを選別してback pressureをかけることはできないので、リンク上の全トラフィックが影響を受けます
    • 参考:Google Bookによる該当部分の表示
  • (2011)(PDF) Flow Control and Network Performance - Dell technical paper
    • "Ingress back pressure enables per switch management of an oversubscribed port through the use of PAUSE flow control at the source port"
    • 適当訳: 入力ポートのback pressure機能は、PAUSE方式のflow controlを使うことで、入力側の合計帯域の方が大きいポートのマネジメントを可能にします

最近のBack Pressure

多少拡大解釈されることがあったとはいえ、ネットワーク下層というニッチ分野で細々と使われているback pressureでしたが、昨今急に目にする機会が増えました。これは、無限長のコレクションとして扱われるStreamの普及によるものと思われます。
特にネットワーク越しに扱う場合において、ネットワークスイッチと同様に「処理能力<入力量」となると溢れて死んでしまう問題が出てきて、対処としても同様に送信側の制御を行う必要が出てきました。そこで、用語も同様にback pressureとなるのは自然なことです。

最後の記事、"Yes, I know that "backpressure" isn't a proper word." とあるので、いつのまにかこの言葉は拡大解釈されてる!という意見・議論はあったのでしょう。しかしとにかく、stream周りでback pressureが、受信側から後方(=送信側)に流量制御のための信号を送信する制御全般を指す用語として、用いられつつあります。
(余談: Reactive Streamは、Reactiveという語の使い方についても物議をかもしていたような…)


日本では…

インターネット上の用語は、今検索しても、ほとんどが半二重を指すものです。上位にマイクロソフトの文章(原文は英語)があったり、最初に紹介した圧力系のback pressureを指すものもあります。
ただ、インターネットの用語辞典はたいして更新されなくても、現場での「バックプレッシャー」の使い方は、英語での用途に近い使い方もあったように思いますが、既にそっちの前線(前職)を離れて4年も経つと記憶が定かではありません…

本題

情報工学系のback pressureを邦訳ではどうすべきか。これは、多少の差異はあるものの、カタカナでバックプレッシャーとすべきです。
若干元来の解釈と異なりますが、醤油ラーメンと味噌ラーメンくらいの違いであり、全く違う分野で使われている背圧という用語を充てるよりは適切でしょう。違和感は感じるかもしれませんが、通信界隈の人間であれば、使われているシチュエーションから「Flow Controlかな?」と想像することは容易です。
逆に日本語の「背圧」の方は、別の意味を指している日本語に対して新しい意味を被せるわけですから、混乱を生みます。検索しても意味が出てこないので、「このモジュールは背圧制御を行います」などと言われて調べた人が困ってしまいます。


似たような例を以前、とある邦訳書で見た事があります。



ガベージコレクション(GC)をゴミ集めとしても、英単語として一切の誤りはありませんが、どう思いますか?back pressureから背圧に訳すのは、これと同じではないでしょうか。

(余談2: この本を見るまでは、オ○イリーは高品質な技術書を出す信頼性の高い出版社だと信じていました)