AST
ソースコードの構文構造をツリー形式で表現したデータ構造
ランタイム開発ツール
「AST」の技術書を見る (7 冊) →AST とは
AST (Abstract Syntax Tree、抽象構文木) は、ソースコードの構文構造をツリー形式で表現したデータ構造である。コンパイラ、トランスパイラ、リンター、フォーマッターなど、コードを解析・変換するツールの基盤技術だ。
ソースコードから AST へ
ソースコードから AST へのコード例を示す。
// ソースコード
const x = 1 + 2;
// AST (簡略化)
// VariableDeclaration (const)
// └── VariableDeclarator
// ├── Identifier: "x"
// └── BinaryExpression (+)
// ├── NumericLiteral: 1
// └── NumericLiteral: 2
AST を使うツール
AST を使うツールを以下に示す。
| ツール | AST の用途 |
|---|---|
| TypeScript | 型チェック、JS への変換 |
| ESLint | コードの静的解析、ルール違反の検出 |
| Prettier | コードのフォーマット |
| Babel | ES6+ → ES5 のトランスパイル |
| SWC | 高速トランスパイル (Rust 製) |
| webpack / Vite | import の依存関係解析 |
| jscodeshift | 大規模なコード変換 (codemod) |
ESLint カスタムルール
ESLint カスタムルールのコード例を示す。
// no-console ルールの簡略版
module.exports = {
create(context) {
return {
// AST ノードの種類で訪問するノードを指定
CallExpression(node) {
if (node.callee.object?.name === 'console') {
context.report({ node, message: 'console の使用は禁止です' });
}
},
};
},
};
ESLint はソースコードを AST に変換し、各ノードをルールに渡す。ルールはノードの種類と内容を検査し、違反を報告する。
AST Explorer
AST Explorer で、ソースコードがどのような AST に変換されるかをブラウザ上で確認できる。ESLint ルールや Babel プラグインの開発に必須のツールだ。
コンパイルのパイプライン
コンパイルのパイプラインを図で示す。
ソースコード → 字句解析 (トークン列) → 構文解析 (AST) → 変換 → コード生成
- 字句解析 (Lexer): ソースコードをトークン列に分割
- 構文解析 (Parser): トークン列を AST に変換
- 変換 (Transform): AST を操作 (最適化、型チェック)
- コード生成 (Codegen): AST からコードを出力
AST の関連書籍も参考になる。
この記事は役に立ちましたか?
関連用語
関連する記事
DevOps 本ガイド - CI/CD とインフラ自動化を学ぶ技術書の選び方
DevOps の文化・原則から CI/CD、IaC、オブザーバビリティまで学べる技術書の選び方と学習順序を紹介します。
あの有名 OSS のコードは、この本の影響を受けている
広く使われているオープンソースソフトウェアの設計には、特定の技術書の影響が色濃く反映されています。OSS のコードと技術書の関係を知ると、両方の理解が深まります。
月曜朝イチのコードが金曜夕方より美しい理由
週の始まりに書くコードと終わりに書くコードでは、品質に明確な差があります。この現象の原因と、コード品質を週を通じて維持するための読書習慣を考えます。