TypeScriptの学習をはじめようとしたところ、「WEB+DB vol.133のTypeScript特集も読むといいよ」と教わったので読んでみました。
その特集の中で気になったツールや単語をメモっていきます。

ちなみに、自分はKotlinを使ったAndroidアプリ開発者で、TypeScriptはほぼ書いたことがありません。
(node.jsはある程度書けるが...)

そのため、当記事はTypeScript初心者向けとなります。

ESLint

    • JavaScriptのためのリンタ

 

    • リンタのデファクトスタンダード

 

    • カスタマイズしやすいのが特徴

 

    • 設定は共有可能

 

    • フォーマッタとしても使えるが、Prettierのほうが貫したコーディングスタイルを強制できる

 

    • 欠点は、、、

Prettierと組み合わせると複雑になり、初学者が設定でつまずく要因となる
大規模プロジェクトになるとパフォーマンスに問題がでてくる

Prettier

    • フォーマッタのデファクトスタンダード

 

    • JavaScriptだけでなくやTypeScriptだけでなく、HTMLやCSS,GraphQLやMarkDownもサポートしている

 

    • 設定項目が少ないのが特徴

 

    • 欠点は、、、

Prettierのコーディングスタイルが気に入らない場合はそれを無効化できない

(カスタマイズ性が低い?)

大規模プロジェクトになるとパフォーマンスに問題がでてくる

Rome

    • Rust製

 

    • フロントエンドの開発のオールインワンツール

 

    • 現在のフロントエンドのツール郡を置き換えることを目標としている

 

    • パフォーマンスが良い

 

    • 2023年6月時点ではまだ開発中

 

    フォーマッタとリンタのみリリースされている

Deno

    • JavaScript/TypeScriptランタイム

 

    • 開発に必要なツールをビルトインで提供している

 

    • フォーマッタ deno fmt とリンタ deno lint が紹介されていた

 

    • Rust製

 

    リンタは主にDenoをターゲットとしており、ESLintを置き換えるわけではないらしい

トランスパイル

    • TypeScriptコードをJavaScriptに変換する工程のこと

 

    なぜなら、TypeScriptコードをブラウザは実行できない

トランスパイラ

    • トランスパイルしてくれるプログラムのこと

 

    • Babelが有名

 

    • 昔は新しいJavaScript構文を古い構文に変換してた

IE対応や、ES6をES5に変換など

現在は新たな役割として以下に使われている

TypeScriptのトランスパイル
JSXのトランスパイル

Babel

    • トランスパイラとして有名

 

    • プラグインシステム(独自の定義)のを追加が便利らしい

便利すぎてプラグインブーム?になったようだ

JavaScript製で、パフォーマンスに懸念がでてきている

バンドラ

    • フロントエンド開発の欠かせないツール

 

    • importやexportで分割されたコードを解決しつつ、1つのJavaScriptファイルに変換する

 

    • ホットリロードの役割も持っている

 

    変換速度の高速化が求められているため、GoやRust製のツールが出始めている

SWC

    • Vercelという会社が開発したトランスパイラ

 

    • Rust製で高速

 

    • BabelのかわりにSWCを選ぶプロジェクトも出始めている

 

    • BabelをSWCに置き換えるとビルド時間が35%削減されたらしい

 

    次のデファクトスタンダードを期待される期待の星らしい

turbopack

    • Vercelという会社が開発したバンドラ

 

    • Rust製で高速

 

    • 現時点ではアルファ版

 

    webpackを置き換えるのが目的らしい?

esbuild

    • トランスパイラとバンドラが合体したツール

 

    • Go製で高速

 

    • Bubelやwebpackより高速化なのが売り

 

    • TypeScriptとJSXのトランスパイルもサポート済み

 

    このツール1つでトランスパイラとバンドラが実行できるのが便利らしい

webpack

    • バンドラのデファクトスタンダード

 

    • loaderという拡張機能でCSSや画像ファイルをimportして使用できる

 

    • ツールの設定の自由化がとても高い

 

    JavaScript製で、パフォーマンスに懸念がでてきている

ES Module

    • 分割されたJavaScriptファイル(モジュール)をimport/exportでつなぐしくみのこと

 

    import/exportでつながったモジュールは非常に遅いため、バンドラで1つのJavascriptファイルにしておくのが定番

AST

    • Abstract Syntax Tree(抽象構文木)

 

    • ソースコードを扱いやすいように加工されたデータ構造のこと

 

    • ESLintやPrettierの構文チェックで使わている

 

    • Babelやwebpackも使っているが、両者でASTが異なるため、無駄な変換が発生してパフォーマンスが遅いらしい

 

    • SWC + turbopack の組み合わせで同じASTフォーマットを扱えれば、高速化が期待できるらしい

 

    esbuildも同じASTフォーマットなので?高速らしい

最後に感想

    • Rust製のツールがかなり高速なようで、期待値がかなり高いらしい

将来はRust製ツールが主流になる、と筆者は述べていた
Goも早いが、Rustはもっと早い
プラグインをRustで書く時代がくるかもしれないため、Rust覚えるといいかも

フロントエンドにRustの波が徐々にきてます!
まずはSWCから慣れて行きましょう!

广告
将在 10 秒后关闭
bannerAds