JavaScript は世界でもっとも利用されている重要なプログラミング言語の一つであり、ウェブブラウザで利用可能なほぼ唯一のプログラミング言語という特徴から、ウェブアプリケーション開発で広く利用されています。
この重要性から、JavaScript処理系の性能改善に関する研究開発が活発に行われてきました。JavaScriptの性能改善は、動的な言語ながらの困難さも知られています。今年のサマースクールでは、鵜川さん(東京大学)にJavaScriptの実装技術について、その困難さをどう克服するか、基本的なところからご紹介いただきます。
JavaScriptを動作させるソフトウェアとして、Google が開発を主導するV8処理系、およびそれを利用するGoogle Chrome(以降Chrome)ブラウザが著名です。本サマースクールでは、実際にChromeブラウザを開発しているグーグル合同会社の中川さん、服部さん、椎野さんに、Chromeブラウザに関する実装技術について、開発者だからこそできるご講演をいただきます。
講師の皆さんは、実際に手を動かして言語処理系やブラウザという複雑なソフトウェアを開発している方々です。言語処理系に興味があり作ってみたいと思うすべての方にお勧めしたい内容です。
JavaScript言語の特徴を概観した上で、それを実行するためのソフトウェアであるJavaScriptエンジンの実現方法や、動的言語特有の最適化について解説する。動的言語の最適化の基本的アイデアはJavaScriptよりも古い。基本的なアイデアを解説したうえで、最近の研究も紹介する。
京都大学卒業.京都大学特任助手、電気通信大学助教、高知工科大学准教授を経て、現在、東京大学准教授。ガーベージコレクションを中心としたマネージド言語の処理系に関する研究に従事。博士(情報学)。
ウェブブラウザはアプリケーションの実行環境として広く利用されるようになりました。その中核をなすのが JavaScript 処理系とレンダリングエンジンです。Chrome ブラウザでは JavaScript 処理系 V8 とレンダリングエンジン Blink を組み込んでいます。本講演では Chrome がウェブ特有の実行モデルやセキュリティモデルを守りながらどのように V8 と Blink を協調させているのか、その歴史やアーキテクチャを紹介します。
Chrome ブラウザを開発しているソフトウェアエンジニアです。ブラウザをより高機能なアプリケーションプラットフォームにするための API (ストレージやワーカーなど) やページ読み込みを素早く効率的に行うローディング機構の開発などを担当してきました。
ChromeのレンダリングエンジンBlinkはC++で実装され、元々は参照カウントによってメモリ管理がされていました。私達は9年前からガベージコレクションへの移行を行い、現在はC++とJSを跨ぐオブジェクトグラフに対しても、リーク等の心配のない、正確なGCを行えるクロスコンポーネントガベージコレクタを実装しました。オブジェクトグラフの増大に対応するために実装した高速化や、C++とGCを共存させるための工夫なども交えてこれを紹介します。
Chrome ブラウザチームのソフトウェアエンジニアとして 主にメモリ管理に関する開発を担当。
HTMLやDOMといったウェブ規格はWeb IDLという仕様記述言語を使って定義されています(例)。Web IDLはあくまで仕様を記述する言語であり、JavaScriptのような実装のための言語と異なり、プログラムを実装することはできません。Chromeブラウザでは、このWeb IDLからC++実装コードを半自動生成する仕組み(コードジェネレータ)を導入することで、実装の負担を減らしています。本講演ではコードジェネレータの作成、利用を通して得られた知見を共有します。またChromeブラウザにおけるDSLとしてのWeb IDL / コードジェネレータを紹介します。
Chromeブラウザの開発をしているソフトウェアエンジニアです。ブラウザ間のAPI互換性を向上させたり、ウェブ標準により準拠させる仕事をしています。最近Web IDLコードジェネレータを作りました。
PPLサマースクールの参加費は以下の通りです.
参加申し込みは日本ソフトウェア科学会第38回大会 参加申し込みページ からお願いします。PPLサマースクール2021 だけの登録も可能です。
PPLサマースクール2021 幹事
笹田 耕一(クックパッド)
E-mail: ko1[at]cookpad.com