at the front―前線にて

第1回 Chromiumから見るWebの未来

この記事を読むのに必要な時間:およそ 4 分

注目はOff-the-main-thread

中川: Extensible Web ManifestoによってローレベルAPIが出そろい,今度はそれらをもとにハイレベルなAPIを提供しようじゃないかという動きがあります。これをLayered APIsと呼んでいます。試験実装として今のところVirtual ScrollerとAsync Local Storageがあります。よく使われるライブラリはブラウザ内部で持っておくことでローディングのコストを抑えるっていうのがモチベーションのひとつですね。

竹馬:たしかに,browserify/webpackが出て,複雑なものが作れるようになった反面,バンドルサイズが肥大化する一方で,同じような課題感はあります。スクリプトの評価実行コストが重くなってきて,貧弱なCPUのモバイル環境が厳しいってのがあります。

中川:トレンドが2つあって,ひとつが今言ったExtensible WebからのLayered APIsで,もうひとつがPWAProgressive Web Appsです。もともとWebはドキュメントプラットフォームだったものがアプリケーションプラットフォームへと進化してきたのですが,PWAによってその流れが一段と強くなりました。もちろん「これからはPWAを作らなきゃいけない」という話ではなく,あくまでも目的を達成する手段を増やすところが大事だと考えています。

竹馬:開発者として,速度と実現するものの複雑さという2つのゴールを両立させるのが難しいと思っているんですが,そのあたりはどうですか。

中川:PWAでWebの機能面はかなり進歩しました。それと並行して最近話題に挙がるのがWebのパフォーマンスやクオリティを高めたいという話で,Off-the-main-threadというのがそのひとつのテーマになっています。JavaScriptは基本的にシングルスレッドで動くわけですが,あらゆる処理が同じスレッドで動いちゃうんでスレッドが忙しくなってUIUser Interfaceが止まる。それを排除する手段として別スレッドを使えるように整備していくっていうムーブメントです。マルチスレッド化することが目的というより,メインスレッドを空けたいというのがモチベーションです。

竹馬:重い処理はWorkerに逃がしたいですよね。ただ,そのWorkerを使うプラクティスがコミュニティ側で成熟していないのが実情だと思います。でも,何か1つブレイクスルーがあったら,たとえば2005年のDOMに対するjQueryみたいなもの,Workerに対する取り回しの良いラッパーがあれば流行るかも,ぐらいの気持ちがありますね。

中川:使いやすさを向上させたいっていう話があって,今はWorkerを起動するのにファイルを指定したり,データを渡すのに使うpostMessageが使いづらいって 話があります。それに対してJavaScriptで構文的なブロックとして実行すべきタスクを渡す仕様の提案とかもありますね。JS blocksというんですけど,別の仕様提案と併せることで,クロージャを渡すような感じで別スレッドでタスクが実行できる。処理系自体がネイティブにスレッド間で環境を送る手段をサポートするというのは良いと思いますね。JavaScriptってWorkerとドキュメント側で完全にオブジェクト空間が分かれていて,そうなるとどうしてもシリアライズして送らざるを得ない。そういう特殊な環境の中でJS blocksっていうのは結構良いアイデアなんじゃないかと思いますね。

竹馬:そうですね。それ欲しいなって(笑)⁠この前,Off-the-main-thread,まさに直面して,大きなモジュールを2つ呼ぶ必要があって,もちろんその間ブロッキングしちゃうんですよね。だから裏に回したい,みたいな。

中川:JavaScriptにも並列処理を書きやすくするためのパーツがいろいろそろい始めています。たとえばPromise注6Streamですね。JS blocksはまだ提案段階の機能ですけど,それも入るかもしれません。それらを組み合わせていくと使いやすいAPIができるんじゃないかって期待しています。

竹馬:Promiseが標準化されてAsync/Awaitが来たっていうのはやっぱ大きかったですよね。

中川:Promiseはさっき話したWeb Platform Testにも多用されていて,⁠テストがすごい簡単に書けた」って開発者も喜んでいます。

注6)
JavaScriptで非同期処理を表現する機能。

画像

古典的なもの,視野を広げるもの

竹馬:最近はどんな技術に注目してますか。

中川:私,子どもが2人いるんですけど,一緒に遊んでいると自分のために使える時間が少なくなる。プログラミングによるリターンってかなりの時間をかけないと得られないと思うんですよね。なので,なるべく古典的なものや自分の視野を広げるものを中心に追うようにしています。竹馬さんの仮想DOMの記事注7で,Reactを使わなくともコンセプトを学ぶことはGUI開発に役に立ちますって言っていたじゃないですか。その視点すごく大事だなって。

それを踏まえて今興味ある技術は,いきなりWebじゃないですけど,ハードウェアに興味があります。GPUやTPU注8)⁠あと不揮発性メモリですね。最近だと機械学習でGPUの価値が再認識されているじゃないですか。CPUはシングルコア性能が頭打ちになってマルチコア化が進んでいますが,それもいずれ限界が来る。そうなると特定用途向けのチップみたいなのを載せたプロセッサが流行ってきて,じゃあ,その上のアプリケーションやWebブラウザはどうあるべきなのか,っていうのは興味ありますね。

竹馬:それらってモバイルでの物体認識とかARのために積まれているのでしょうけど,あれで新しいGUIプラットフォームができるのかも,なんて僕も考えます。AR上のGUIではUIが3次元に拡張されるから,今のうちにそういう概念を身に着けないとなー,とか。

中川:おもしろいですよね,今までフラットに見せていたものをいかにAR/VRで見せていくかっていうのは。それらを生まれたときから身近にする人は,それが当たり前になってくるはずですし。

ちなみにそのほかには「宇宙」に興味があります。宇宙空間でお店を開くっていう話があるそうなんですが,惑星間通信だと光速でも時間がかかっちゃうので,きっとECサイトは地球上とは違ったものになるんだろうなって妄想したりします。

竹馬:ちょっと違うけど,ノーベル経済学賞をとったクルーグマン(Paul Krugman)そういう論文,出していましたね。僕もSF,特にサイバーパンクが好きなんですけど,最近現実がサイバーパンクすぎて(笑)⁠昔イメージした2018年より,今は先に進んでいるイメージがある。でも人間の歴史とか体制とか慣習が追いついていないなと思うところがまだあって,そこを変えるために何したらよいかっていうのは考えたいですね。

中川:今年32才になるんですが,30代は情報科学に限らず昔から自分が興味あることをやりたいと思っていました。意図的に「中川はこういう分野の人」みたいなのを崩すような方向に進みたいと思っています。

注7)
WEB+DB PRESS Vol.106の特集3「仮想DOM革命」⁠
注8)
ディープラーニングに最適化されたTensor Processing Unit。
WEB+DB PRESS

本誌最新号をチェック!
WEB+DB PRESS Vol.112

2019年8月24日発売
B5判/168ページ
定価(本体1,480円+税)
ISBN978-4-297-10787-1

  • 特集1
    React/Vue.jsで実践!
    コンポーネント設計
    モダンフロントエンドの構造化と分割の新提案
  • 特集2
    RDBMS徹底比較
    PostgreSQL,MySQL,SQL Server,Oracle Database
  • 特集3
    実践Scala
    オブジェクト指向×関数型
  • 一般記事
    自作キーボードのススメ
    デザイン,配列,打鍵感……自由自在

著者プロフィール

竹馬光太郎(ちくばこうたろう)

フリーランスで先端技術の導入などを行う。

GitHub:mizchi
Twitter:@mizchi
URL:https://mizchi.hatenablog.com/