AWS Step Functions用のコンパイラを作って気づいたこと
2026-10-06
Step Functions用のコンパイラを作ったら、いくつか気づいたことがありました。
作ったのはsfnxというツールです。ツール自体の説明はZennの記事にまとめました。
以下、裏話として、その気づいたことを記します。
コンパイラを作るのは楽しい
コンパイラ自作は、もともと楽しそうだと思っていましたが、予想以上に楽しい経験でした。
バランスを取らないといけない部分がいろいろあり、作者のセンスが問われるからです。
- ステートをどこまで畳み込むべきか(コンパイル速度とのトレードオフ)
- PythonとJSONataの挙動の違いをどこまで吸収すべきか(ASLの読みやすさとのトレードオフ)
現状のv3系では、ほどよいバランスになっていると自負しています。
ツールを作るなら、AIユーザビリティテストが重要
v2系では、ステートの畳み込みや挙動の吸収にこだわることで、バランスが崩れていました。
たとえば、Pythonと同じくゼロ除算をエラーにするため、以下のようなJSONataを出力するなどです。
{% $count_val = 0 ? $error('division by zero') : $total / $count_val %}崩れたバランスを整えるために考えたのが「AIユーザビリティテスト」でした。サブエージェントにsfnxを使うタスクを指示し、気になったところや、期待と異なる挙動を報告してもらう流れです。
このテストにおいて、上記のJSONataは「冗長」と指摘されました。サブエージェント自身がPython側でゼロをチェックしており、与えたタスクでは処理が重複していたのです。
報告された内容の修正とテストを繰り返すことで、バランスが自然に整っていきました。上記のJSONataは、v3系では以下のようにシンプルになっています。
{% $total / $count_val %}このAIユーザビリティテスト、なかなか便利なので、ai-usability-testスキルとして公開しました。よろしければお試しください。