Photoshop をウェブに持っていくために Chrome が果たした役割

投稿: 2021年10月29日
タグ: 
  Web  ニュースネタ

Adobe の Photoshop や Illustrator をブラウザ上で利用できる機能が「Adobe Creative Cloud」に追加される、と発表された。 Photoshop は以前趣味で使っていたことがあるが、その時点でも全ては把握できないほど機能やコントロールがあり(おそらく今はもっと複雑になっていると思う)、 これをウェブで実現するというのはすごい。

数年前では考えられないチャレンジだと思うが、背景には Chrome による機能改善があったようで、 どのような改善を行ったか Google が web.devopen_in_new で情報を記載していたので、確認したい。

以下は Adobe Creative Cloud の Photoshop Web 紹介の動画

  • Photoshop を Web に持っていく際のハードル
  • Emscripten を使って C++ のコードを WebAssembly(Wasm) に変換
  • Adobe と Google、W3C が協力して改善
  • WebAssembly デバッグ機能の追加、mmap 相当のファイルIO を JavaScript で実装
  • Photoshop を Web に持っていく際のハードル

    web.dev の記事の中で以下のように記載されている。

    Adobe previously brought Spark and Lightroom to the web and had been interested in bringing Photoshop to the web for many years. However, they were blocked by the performance limitations of JavaScript, the absence of a good compile target for their code, and the lack of web capabilities.

    [意訳] Adobe はこれまでに Spark と Lightroom を Web化し、 Photoshop の Web化も長年関心を持っていた。 しかし、JavaScript のパフォーマンスの制約や Photoshop のコードに対する適切なコンパイラがないこと、そして Web の機能不足がブロッカーとなり 実現できなかった。

    Photoshop (や Illustrator) は、ネイティブアプリの中でも応答性が求められる部類のソフトだと思うので、 JavaScript (やブラウザの持つ機能) で実現するのは難しそうに思える。 また、数十年アップデートを重ねてきた Photoshop のコードベースはおそらく数百万行(もしくはそれ以上) ぐらいになっていると思うので、 Web (JavaScript) への移植は労力的にも難しそうに思える。

    Emscripten を使って C++ のコードを WebAssembly(Wasm) に変換。 Adobe と Google、W3C が協力して改善

    『既にある大規模なネイティブ(C++) のコードからどうやって Web に移植するか』という課題に対しては、 Emscriptenopen_in_new というコンパイラを使って C++ コードを Wasm に変換して対処したとのこと。

    今まで使ったことなかったので知らなかったが、この Emscripten、C++ を Wasm にコンパイルするだけでなく、 OSに対する POSIX API の変換や、OpenGL を WebGL に変換してくれるらしい (とドキュメントに書いてある)

    Google の記事によると、Emscripten での変換ではパフォーマンスが充分でなかったため、Google と Adobe が協力して Emscripten でマルチスレッドをサポートするように改善、 さらに W3C とも協力してサポートが充分でなかった C++ の例外ベースのエラー処理をWasm 標準に追加したとのこと。

    『課題があるなら (標準から) 作ればいいじゃないか』という姿勢は ほんと素晴らしい。

    WebAssembly デバッグ機能の追加、mmap 相当のファイルIO を JavaScript で実装

    巨大な Wasm を扱うことになるので、『Wasm デバッグのフルサポート機能』を、 高速にファイルIO するために (Linux/Unix系コマンドの) mmap 相当のファイルIO をそれぞれ Chrome に追加しているとのこと。 その他にも描画の改善を行っていると記載されている。

    Photoshop Web 版は一般公開(GA) はまだ先だが、ここまで Chrome と連携した改善をしてるとなると、 テスト済み(サポート)ブラウザは Chrome のみになるのかもしれない。

    推測だが、Photoshop の全ての機能をブラウザで実現するのはそれでも難しく、当分 基本的な機能だけが提供されるんじゃないかと思う。 それでも、Photoshop/Illustrator が OSから切り離されればプラットフォームの選択肢を変える人は出てくるかもしれない。

    今ネイティブじゃないと難しいことも「作ればいいじゃないか」の心持ちは見習いたい。