トーク

セッション
ts-morphで、人間も編集できるコード生成を実現しよう!
DAY2 / 14:00 〜 14:30 (トグルルーム)
概要
/* This file is auto generated. Do not edit manually */
というコメントに見覚えのある方は多いのではないでしょうか。
このセッションでは、自動生成したコードと、プログラマが書いたコードを両立させるアプローチについて説明します。
背景と内容
昨今、OpenAPIなどのスキーマファイルからコードを生成するアプローチはポピュラーなものとなっています。
しかし、クラスを使ったアプローチをするフレームワーク・言語と違い、私が業務で利用している Fastify は生成したコードを人の手で編集したい要求があります。
// ここのテンプレート部分は自動生成したい
server.post("/hoge", hogeSchema, async (req) => {
// 関数呼び出しの中身は、自分で実装したい & 次生成した場合に消えたら困る。
someLogic(req.body.id)
})
1つのファイルの中で、「自動生成したいコード」と「人の手で編集しコード生成時にも消してほしくないコード」が入り混じることになります。これは、従来のトップダウンなコード生成では実現が難しく、現状の実装を解析し、必要な部分だけ再生成する戦略が必要です。
今回は、この解析部分と自動生成部分にts-morphを利用し、自動生成と手動編集を両立させる方法を扱います。
対象
- コード生成に興味がある方
- ASTに触れてみたい方
- Fastify・Expressなどを利用したバックエンド開発を効率化したい方

池奥裕太/@yuta-ike
エムスリー株式会社 / デジスマチーム / ソフトウェアエンジニア
2024年にエムスリー株式会社に新卒入社。デジスマ診療のプロダクト開発や、新規サービスのバックエンド・インフラを担当。TSKaigiスタッフ。好きなエディタはFigmaです。 2024年度 未踏クリエイター。
https://zenn.dev/yuta_ike