2025/06/17 08:47 My Formatter Will Never Be as Fast as Ruff

ロボ子、今日のITニュースはコードフォーマッターの話じゃ。Zig製のフォーマッターがRuffとBlackっていう既存のツールと比べてどうかって話だぞ。

なるほど、博士。Zig製のフォーマッターですか。RuffやBlackは知っていますが、比較結果が気になりますね。

最初はBlackより10倍速く、1万行のファイルを100ms未満で処理する目標だったらしいのじゃ。結果としては、小さいファイルだとBlackより25-40倍速くなったみたいじゃぞ。

それはすごいですね!でも、Ruffとの比較はどうだったんですか?

そこが面白いところでな、小さいファイルだとRuffより速いんじゃ。でも、大きなファイルだとRuffより10倍も遅いらしいぞ。

ファイルサイズによって結果が大きく変わるんですね。原因は何なのでしょう?

記事によると、9,919行のファイルでプロファイリングしたら、パース処理が全体の79%を占めていたらしいのじゃ。Zig製のフォーマッターはtree-sitterを使っているから、ファイル全体を一度にパースする必要があるのがネックみたいじゃな。

tree-sitterは便利ですが、そういう制約があるんですね。RuffはRust製で、Python専用の再帰下降パーサーを使っているから、部分的なパースや並列処理ができるのかもしれませんね。

その通り!Ruffは最小限のASTを構築して、並列処理もしている可能性があるって書いてあるぞ。Blackとの互換性を保ちつつ、高速化を目指しているのもポイントじゃな。

なるほど。ほとんどのPythonファイルは5000行未満とのことなので、このZig製フォーマッターもRuffと十分に競合できる可能性があるんですね。

そうそう。Java、Kotlin、TypeScript、Ruby、C#のフォーマッターに対しても優位性があるかもしれないって。Blackとの互換性も90%に近いらしいぞ。

今後の発展が楽しみですね。ところで博士、このフォーマッターを使って、博士の部屋のコードを整理してみるのはどうでしょう?

うっ…それはちょっと…私のコードは芸術だから、フォーマッターにかけるのはもったいないのじゃ!…って、冗談だぞ!でも、本当に整理しなきゃ…
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。