0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

10倍の高速化をするTypeScript7はなぜGoを選んだのか

Posted at

こんにちは!秋霜堂の石川です。
数日前、衝撃的なニュースが飛び込んできました。Microsoftが発表したTypeScript7です。
https://devblogs.microsoft.com/typescript/typescript-native-port/

TypeScript7 コンパイラ言語の変更

最大の変更点はTypeScriptコンパイラがJavaScriptからGo言語に移行したこと。つまり、TypeScript 6(JavaScript版)とTypeScript 7(Go版)が共存する形になります。この大胆な変更は、特に大規模プロジェクトでのスケーラビリティ問題を解決し、処理速度を劇的に向上させるために行われたのこと。

初期のテスト結果では新バージョンは一部のケースで処理速度が10倍も向上しているとのことです。これは実用面で大きな意味を持ち、例えば開発体験の大幅な改善が期待できそうです。最新のハイスペックCPUを持っていない開発者や、性能が控えめなノートPCを使っている方には特に朗報でしょう。

小規模なアプリケーションだと恩恵が少なそうですが、例えば、Next.jsで100ページ、1000ファイルを扱うプロジェクトを考えるとその差は歴然かと思います。

なぜGo言語が選ばれたのか

なぜRustなど他の高性能言語ではなくGoだったのでしょうか?

それは「新しいコードベースを可能な限り互換性のあるものにし、構造を維持する必要があった」tで、Goのコーディングスタイルは既存のTypeScriptコードベースのパターンと非常に似ており移行作業をスムーズに進められる利点が買われたそうです。

また、TypeScriptコンパイラでは多態的なノードを含むツリー構造の処理や上下方向のトラバーサルといったグラフ処理が頻繁に行われます。Goはこのような処理を効率的に行うことができるため、JavaScript版のコードに近い形で実装する必要があることから選ばれたのでしょう。

新バージョン導入時の注意点

大規模な変更にはトラブルはつきものです。

未成熟なコードベース

このプロジェクトは公開されてからまだ日が浅く、TypeScript 5.8などの古いバージョンと比べるとコードベースの成熟度が低いのは確実です。例えば、新しいTypeScript 7についてChatGPTなどに聞いても精確な回答は期待できませんし、Qiitaなどでの情報も十分とは言えません。

問題に直面した人が「パイオニア」として新たな発見をインターネットへ共有する立場になるかもしれないということで、これは開発者として刺激的ではありますが既存プロジェクトでは一定のリスクをがついてくることを理解しておく必要があります。

Go言語の導入

これは長所かつ短所ですが、JavaScript向けに作られた膨大なコードやモジュールが存在する中でコンパイラの基盤となる言語が変わるということは、Go言語特有の課題がウェブ開発の世界に持ち込まれることを意味します。

Go言語の詳細について詳しいWeb系エンジニアはおそらく少ないため、必然的に新たな課題や問題の発生は不可避と言えそうです。

まとめ

個人的には非常に革新的で魅力的な変更で期待しています。処理速度は早いに越したことがないということはもちろん、Webの世界にJavaScriptの枠を超えた他言語の新しいアイデアを取り入れることにも繋がりますし、何しろコミュニティの活発化が期待できます。


秋霜堂株式会社はWebを中心としたソフトウェア開発企業です。エンジニアとして案件を探している方 / 発注先を探している方など、少しでも気になった方はぜひお問い合わせください!
https://syusodo.co.jp

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?