マイクロソフト、TypeScriptのコンパイラなどをGo言語に移植することで10倍の処理速度に

今回は「マイクロソフト、TypeScriptのコンパイラなどをGo言語に移植することで10倍の処理速度に」についてご紹介します。

関連ワード (ネイティブ、計算集約型、開発者体験等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

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


マイクロソフトのテクニカルフェローで、TypeScriptのリードアーキテクトであるアンダース・ヘルスバーグ(Anders Hejlsberg)氏は、TypeScriptのコンパイラを始め各種ツール群をGo言語に移植する「Project Corsa」を実施中であり、結果として処理速度が約10倍速になることを明らかにしました。

これによりTypeScriptからJavaScriptへの変換が高速になり、コードエディタでTypeScriptを記述するときの補完や検索などのコードアシスト機能も迅速になるなど、さまざまな開発者体験が向上すると説明されています。

ヘルスバーグ氏はTurbo Pascalの作者であり、その後もDelphi、C#などの優れたプログラミング言語の開発に携わってきたことで知られています。

TypeScriptの処理速度やスケーラビリティに課題

TypeScriptは、JavaScriptに対して型システムを追加し、またJavaScriptの将来のバージョンで組み込まれるであろう機能を備えることなどにより、コードの品質や読みやすさを高める優れた開発者体験を実現することを目指したプログラミング言語です。

TypeScriptは、WebブラウザやNode.jsのようなJavaScriptランタイムを備えた環境で実行できるように、最終的にはJavaScriptにコンパイルされます。

このとき使われるTypeScriptコンパイラは、現時点ではTypeScript自身によって記述されており、通常はJavaScriptランタイムであるNode.jsのパッケージとして導入され実行されます。

ヘルスバーグ氏は今回のProject Corsaを説明する動画の中で、JavaScriptランタイムは主にWebブラウザでの利用に最適化されているため、コンパイラのような計算集約型のワークロードの処理にはそれほど向いておらず、それゆえにTypeScriptのコンパイラや関連ツール群は処理速度や、大規模プロジェクトの処理時におけるメモリ不足などのスケーラビリティに課題を抱えていたと説明しました。

fig

Project Corsaは、TypeScriptコンパイラを始めとする各種ツール群をGo言語に移植し、ネイティブバイナリ化することでこれらの課題を解決することを目指したものです。

高速化はGo言語のネイティブ化と並列処理によるもの

下記は動画の中でヘルスバーグ氏が行った、TypeScriptで書かれたVisual Studio Codeのコンパイルにかかる時間の比較です。

最初の処理は既存のTypeScriptコンパイラ(tscコマンド)によるもので、約63秒。次の処理(tsgoコマンド)が新たに開発中のGo言語によるネイティブバイナリのコンパイラによるもので約5.8秒と、10倍以上の高速化が示されました(赤線はPublickeyによる)。

fig

なぜC#やRustといった同氏が好む言語を使わないのか、という点に関して、同氏はさまざまな言語でプロトタイプを作った結果、すべてのプラットフォームで完全に最適化されたネイティブバイナリを生成できて、データレイアウトの細かな制御が可能で、ガベージコレクタによるメモリ管理が自動化され、優れた並列処理が可能などの理由によりGo言語を選択したと説明しています。

その上で、性能向上の要因の半分はネイティブコード化によるものであり、残りの半分は並行処理の利用によるものだとしました。

TypeScript 7.0でGo移植版が提供される見通し

既存のTypeScriptコンパイラやツールのTypeScrip/JavaScripttからGoへの移植はファイルや関数ごとにほぼ忠実に行われており、両者の結果は同じになるとのこと。

現時点でスキャナ、パーサ、バインダの移植はほぼ完了しており、型チェッカも80%程度完了。Language Server Protocol (LSP) を採用したランゲージサービスに取り組んでいるところだとしました。

TypeScriptは現在バージョン5.8となっており、バージョン6.xも引き続きTypeScript/JavaScriptベースで開発が進められる予定です。

Go言語を用いたネイティブバイナリのコンパイラやツール群は、既存のツール群と同様の品質や機能が揃ってきた時点でTypeScript 7.0としてリリースされる予定だとのことです。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
NEC、PC向けの顔認証機能をクラウドサービスで提供開始
IT関連
2021-07-20 02:48
富士通とベルギーのスタートアップ企業、ブロックチェーンビジネスで連携
IT関連
2022-12-01 02:05
「ChatGPT」を使用して「Excel」の数式を作成するには
IT関連
2023-04-23 06:24
GitHubを解雇された社員が復職を断り「友好的解決」を達成
ネットサービス
2021-03-17 06:18
【コラム】SEO担当者はGoogleアルゴリズムアップデートに慌てる必要はない
ネットサービス
2021-06-22 20:08
SBOMを導入・構築済みの組織はわずか14%–タニウム、SBOM実態調査
IT関連
2023-04-27 16:54
MSのAI新機能「Recall」、早くも悪用ツールが公開に
IT関連
2024-06-08 01:03
豚の個体数や体重・健康状態を把握できる養豚農家向けAIカメラシステム「PIGI」がベータ版公開
フードテック
2021-06-17 22:48
ファンの力で“蒸れ”抑える「快眠マット」「風ふとん」、アテックスが発売
くらテク
2021-05-19 19:33
ニール・ヤング、人気ポッドキャスターによるコロナ誤情報に抗議してSpotifyから楽曲を引き上げると宣言
IT関連
2022-01-27 01:59
Appleの紛失防止「AirTag」の「持ち物を探す」機能は、既にSafariからアクセスできる サービス開始は3月か?
-
2021-01-16 17:35
日本MS、「Microsoft Entra」のSSEソリューションを解説–各SaaSへのアクセスを安全に保護
IT関連
2023-07-22 22:34
AIで泳ぎの映像を自動編集、スイミング上達に活用 ルネサンスが水泳教室で新サービス
ロボット・AI
2021-02-09 07:15
プレステ版Robloxが登場しそう、PlayStationコンソールのソフトウェアエンジニアを募集中
IT関連
2022-03-11 06:50