PyCon JP 2022

AST(Abstract Syntax Tree)に入門する
2022/10/14 , pyconjp_2
言語: 日本語

AST(Abstract Syntax Tree、抽象構文木)は、Pythonインタープリターがソースコードを解析した結果を木構造で保持したもので、これがさらにbytecodeに変換された後、実行されます。また、CPythonでは、astモジュールを使って、ASTの中身を覗いたり、ASTの中身を書き換えることができるようになっており、この機能は、testingフレームワークやlinterなどのライブラリの中で活用されています。
このセッションでは、ASTを初めて知る方に向けて、ASTの概要と、astモジュールの活用事例について紹介します。


CPythonでは、コードを解釈して実行する過程で、AST(Abstract Syntax Tree、抽象構文木)を生成します。astモジュールを用いると、生成されたASTにアクセスでき、また書き換えることもできるようになります。

このセッションでは、ASTを初めて知る方に向けて、まずASTとは何か?という説明と、astモジュールを使うことでどのようなことが可能になるのかについて、具体的な事例をいくつか紹介します。

  • 自己紹介(1分)
  • 本セッションの概要説明(2分)
  • Pythonコードはどのようにして実行されるか(5分)
  • 読み込まれたソースコードが、CST(Concrete Syntax Tree)→AST(Abstract Syntax Tree)→バイトコードと変換されて実行される過程について説明します。
  • ASTの構造(5分)
  • ASTを構成するノードの種類について説明します。
  • ASTを可視化できるツールを紹介します(instavizなど)
  • astモジュールについて(5分)
  • ユーティリティ関数であるget_docstringや、NodeVisitor、NodeTransformerクラスとその使い方について紹介します。
  • astモジュールの活用事例
  • 紹介したastモジュールの関数やクラスを活用するアイデアとその簡単なプロトタイプを紹介します。
  • (1) 自作linterを書いてみる(5分)
  • 例:未使用の変数をチェックできるようにする、等
  • (2) 自作testingフレームワークを書いてみる(5分)
  • 例:assert実行時にデバッグのための情報を合わせて出力する、等
  • まとめ(2分)
  • SIerのR&D、アラヤCTO(AIスタートアップ)を経て、アルゴリズムエンジニア@atama plus。現職では、Django、Pythonを使って主にwebアプリの開発を行っています。
  • 興味:機械学習、強化学習、DDD