Webアプリ版Photoshopを実現させた最新Web技術をGoogleが紹介。WebAssemblyのスレッドによる高速化、ストリーミングコンパイル、Web Componentsなど

今回は「Webアプリ版Photoshopを実現させた最新Web技術をGoogleが紹介。WebAssemblyのスレッドによる高速化、ストリーミングコンパイル、Web Componentsなど」についてご紹介します。

関連ワード (機械学習処理、統合、開発時等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


先月(2023年9月)、AdobeはPhotoshopをWebアプリケーション化し、ブラウザから利用可能にした「Adobe Photoshop Web」を正式にリリースしました。

fig

Photoshopは画像の作成や加工といった専門的な用途を目的に、長年にわたって作り込まれた代表的なデスクトップソフトウェアの1つと言えます。

プロフェッショナルな用途を満たす膨大な画像処理の機能を細かく作り込まれたユーザーインターフェイスから操作し、画像の変形や加工、フィルタリングなどの大量の複雑な演算処理が実行されるなど、Webアプリケーションへの移植を難しくする要素が満載です。

それらの困難を克服し、Photoshop Webではデスクトップ版Photoshopでよく使われる一般的な機能を、類似のユーザーインターフェイスでWebに実装し、商用サービスとして提供することに成功しました。

Photoshop WebはどのようなWeb技術が用いられたか?

このPhotoshop WebはどのようなWeb技術を用いてWebアプリケーション化されたのか、その説明が2つの記事で行われています。

1つは、まだPhotoshop Webがベータ版であった2022年5月に開催されたGoogle I/Oのセッションを基にした記事「Photoshop’s journey to the web」。もう1つは、Photoshop Web正式リリース後の今月(2023年10月)にGoogleのAddy Osmani(Head of Google Chrome Developer Experience)氏が執筆した記事「Photoshop is now on the web!」です。

この2つの記事によるとPhotoshop Webでは、WebAssemblyでの処理を高速化するためのスレッド処理、演算処理の高速化のためCPUのSIMD命令の利用、大容量の画像ファイルにWebアプリケーションから高速にアクセスするためのAPIやPhotoshop特有のユーザーインターフェイスを実現するためのWebコンポーネントの活用など、さまざまな最新技術が詰め込まれていることが示されています。

ここでは2つの記事をベースに、Photosohp Webの開発に使われたWeb技術のポイントを簡潔に紹介していきましょう。

Photoshop Webを実現させた最新のWeb技術

WebAssemblyでのマルチスレッド対応
PhotoshopのコードベースはC/C++で、以前からEmscriptenコンパイラを用いることでほとんどの部分をWebAssembly化可能でしたが、十分な実行速度を得ることはできていませんでした。

GoogleとAdobeは協力してボトルネックを探したところ、Photoshopはマルチスレッドにより高速な処理を実現しているため、WebAssemblyで動的なマルチスレッド処理を可能にすることが高速な処理のために重要だと判断されました。そこで、Emscriptenを改善してWebAssemblyでのスレッド処理を可能にし、スレッド処理によってマルチコアCPUの能力を最大限に引き出せるようになりました。

C++の例外ベースのエラー処理をWebAssemblyでも可能に
C++で一般的であった例外ベースのエラー処理が、EmscriptenとWebAssemblyでは十分にサポートされていなかったため、GoogleはW3CでWebAssemblyの標準化を推進している「WebAssembly Community Group」と協力。WebAssemblyの標準とそれに関連するツールを改善し、WebAssemblyにC++例外を導入しました。

SIMD命令への対応
ピクセル処理やフィルタリング処理などの演算処理を高速に行うため、CPUのSIMD命令への対応を行っています。

Service Workerによるキャッシュを用いた高速化
Service Workersを活用してPhotoshop WebのWebAssemblyモジュール、スクリプト、その他のアセットをキャッシュすることで、2回目移行のロード時間を劇的に短縮しています。

巨大なWebAssemblyモジュールのストリーミングとキャッシュ
Photoshop Webは80MBを超える複数の大きなWebAssemblyモジュールから構成されていますが、V8とChromeの「ストリーミングコンパイル」と呼ばれる、WebAssemblyのバイナリコードのダウンロードと並行して、受け取ったデータをコンパイラに渡してどんどんネイティブコードに変換していく、という機能によって巨大なWebAssemblyモジュールであっても高速に実行可能になっています。

参考:JavaScriptエンジン「V8 release v6.5」リリース。WebAssemblyバイナリをダウンロードと並行してコンパイル、ダウンロード完了とほぼ同時にコンパイルも完了

DevToolsでのWebAssemblyのデバッグ対応
ChromeチームはDevToolsでWebAssemblyのデバッグ機能を開発しました。これにより、ソースコードのステップ実行、ブレークポイントの設定、例外の一時停止、リッチ型のサポートによる変数検査などがサポートされています。Adobeの開発チームは開発時にこれらの機能は不可欠だったとしています。

fig

Tensorflow.jsによるローカルでの機械学習処理
Photoshop Webの新しいバージョンでは、ローカルマシン上でTensorFlow.jsを実行することによるAI搭載機能が含まれています。ローカルマシン上で実行することにより、優れたプライバシー、小さなレイテンシ、処理コストの最小化などが図れます。

Origin Private File Systemによる高速なローカルファイルへのアクセス
Web標準として策定されたOrigin Private File System API (OPFS) が、仮想ファイルシステムへの高速なアクセスを可能にしました。

Web Componentsによる柔軟なUIの実現
Photoshop Webのユーザーインターフェイスは、Web Componentsの軽量なフレームワークであるLitをベースにAdobeが開発したSpectrum Web Componentsによって構築されています。

Web Componentsのカスタム要素とLitのパフォーマンスを組み合わせることで、効率を維持しながらPhotoshopの複雑なUIを構築するための柔軟性が得られました。

また、Litによるテンプレート化と仮想DOMにより、効率的なUI更新が可能になると同時に、Web Componentsのカプセル化によって、必要に応じて他のチームのReactコードを統合することも容易になりました。

fig

広いP3色域への対応
WebではこれまでsRGBが色域の唯一の選択肢でしたが、Photoshop Webでは、新しいcolor()関数とCanvas APIを使用することで、より広い色域であるP3に対応しました。

これら最新のWeb技術を用いているため、Photoshop WebはChrome 102以上、Microsoft Edge 102以上、Firefox 111以上のバージョンでの対応となります。

AdobeはCreative Cloudスイート全体をWebへ

Adobeは今後もWeb技術の進化に合わせてPhotoshop Webを進化させていくとしています。それだけでなく、Photoshop以外のCreative Cloudスイートのアプリケーション全体をWebへ積極的に展開していき、Webブラウザ上で多くのデザインアプリケーションを利用できるようにする計画だとのことです。

アドビはこれまで同社のビジネスの屋台骨であった買い切り型のパッケージソフトウェアビジネスを、サブスクリプション型に切り替えるという大きなビジネスモデルの転換に成功しています。

同社の次のチャレンジは、デスクトップ向けのアプリケーションをWebアプリケーションへと転換していくことのようです。

Adobeの一連のソフトウェアはデスクトップアプリケーションのなかでも重くて複雑なものの1つといえます。これがすべてWebアプリケーション化できるとすれば、それは世の中のほとんどのデスクトップアプリケーションはWebアプリケーション化できることの証明になりそうです。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
YouTubeの動画レコメンドAIは依然として悪行を重ねていることが大規模調査で判明
ネットサービス
2021-07-18 19:15
高さ2mの65型有機ELディスプレイで等身大のAIキャラによる接客実現、Gateboxが法人向け大型召喚装置
IoT(用語)
2021-03-09 02:39
中堅企業3社が進めたDXプロジェクトの成果に見る知見と可能性
IT関連
2022-12-01 20:07
日立Sol、米o9 Solutionsと販売代理店契約を締結–AIで製造業の需要予測や計画最適化を支援
IT関連
2024-07-25 09:53
「Exchange Server」の脆弱性を突く「Prometei」ボットネットがまん延
IT関連
2021-04-23 08:21
NASAとSpaceXがStarlink衝突予防のため高度な情報共有契約を締結
宇宙
2021-03-20 03:08
グーグルも注力、クラウドシフトを起点にITの「内製化」は進むか
IT関連
2022-11-08 22:35
今週の記事ランキング(2021.1.31〜2.4)
IT関連
2021-02-06 03:07
BuzzFeedがバレンタインデーに合わせてAI利用「理想の恋人診断」を公開
ネットサービス
2021-02-14 17:22
Android 15は変体仮名をデフォルトでサポート、Googleが発表
Android
2024-05-20 03:52
破産した拡張現実のパイオニアBlipparがB2B事業で復活、約5.4億円の資金を調達
VR / AR / MR
2021-03-25 02:33
ドール通販サイトで最大2万人超の個人情報流出 脅迫メールで不正アクセス発覚
セキュリティ
2021-08-21 12:56
オラクルとNVIDIA、企業のAI利用加速に向けて協業拡大–CloudWorld 2022基調講演
IT関連
2022-10-20 10:49
鹿島建設、FastLabelのアノテーション代行サービスを採用–AI開発の生産性向上を目指す
IT関連
2023-08-19 06:40