eBayが見つけたWebAssemblyの使い所

WebAssemblyは将来性を感じるもののキラーアプリが出てくるかどうかわからない。そんな中、eBayの取り組みが、もしかして流行るんじゃないかという気がした。

We were not able to find a proper use case to leverage WebAssembly. A few suggestions came up, but we were better off with JavaScript itself. At eBay, when we evaluate new technologies, the first question we ask is “What potential value does this add to our customers?” Unless there is clarity around this, we do not proceed to the next step.

eBayでも「顧客に、どんな価値をもたらすか」で技術選定するのだが、WebAssemblyではなくJavaScriptで十分じゃないかといった議論があった。

eBay native apps both iOS and Android have a barcode scanner feature in the selling flow. The feature leverages the device camera to scan a product UPC barcode and automatically fill out the listing, thus removing the manual overhead. This was a native app-only feature. It requires some intense image processing on the device to detect the barcode number from the camera stream.

eBayのネイティブアプリにはバーコードスキャナがあり、プロダクトをスキャンして自動でリストに追加するなどができる。intense(強力)な画像処理が必要だからネイティブでしか提供できなかった。

The strong typing and structure of WebAssembly bytecode enable the compilers to always stay on the hot path. On top of it, we had an existing C++ library that was doing the job for native apps. C++ libraries are ideal candidates to be compiled to WebAssembly. We thought we had a clear path. Well, not exactly.

wasmのstrong typingとstructureがコンパイル時にhot pathにできる。JavaScriptのJIT(Just in Time)だと、最適化される場合(hot path)とされない場合があると前の段落で書いてあるが、wasmだと安定して最適だというわけだ。また、ネイティブアプリで使ってたC++ライブラリも使える。

最後の「Well, not exactly(正確には少し違うんだけどね)」という言い方は、なんか使えそう。

Well, in native apps we use inbuilt APIs to either autofocus or provide user tap focus to the center of the object that is being scanned. This enables native apps to send high-quality image pixel data (i.e. information only about the barcode) to the scanner library at all times. This avoids the blurry image situation.

すんなりうまくいったかというと、そうではない。ネイティブアプリではバーコードにピントが合ってない場合に、画像をタップするとピントが合うなどのオートフォーカスができるがRustからは呼べない。

ではどうするかというと、今まで使っていたライブラリに加え、フォーカスされてない画像にも強いライブラリを併用する。

The whole WebAssembly journey was a great learning experience for us. Engineers get pretty excited about new technologies and immediately want to try them out. If the same technology makes a positive impact on a customer-centric metric, it is a double delight.

エンジニアは新しい技術に興奮し、顧客にとってもいい影響があって、よかったよかったという締め。

検索してみると、eBay以外にもwasmでバーコードにチャレンジしている人も多いようで、Webでの画像処理がwasmのキラーアプリの地位を築いていく感じもある。




いいなと思ったら応援しよう!