mblike と呼ばれる新しい Python ベースのツールが、Makefile を一貫してフォーマットするという長年の課題に対処するために登場した。このツールは、コミュニティのベストプラクティスに従って Makefile を自動的にフォーマットすることを約束しているが、そのリリースは技術的アプローチと実装の選択の両方について熱い議論を巻き起こしている。
インストールオプション:
- PyPI:
pip install mblike
- VSCode 拡張機能: Extensions で "Makefile Formatter" を検索
- ソースから: GitHub からクローンして
make install
を実行
.PHONY 宣言の論争
最も激しい議論の中心となっているのは、.PHONY 宣言を統合する mblike のアプローチである。このツールは複数の .PHONY ターゲットを単一の宣言にグループ化するが、多くの開発者がこの慣行に強く反対している。批判者は、.PHONY 宣言は読みやすさと保守性を向上させるために、対応するターゲットに隣接したままにしておくべきだと主張している。この根本的な意見の相違は、コード組織の原則について Makefile コミュニティにおけるより深い哲学的な分裂を浮き彫りにしている。
この論争は単なるフォーマットの好みを超えて広がっている。一部の開発者は、統合を確立された Makefile の慣例に反するアンチフィーチャーと見なしている。しかし、このツールはこの動作を無効にする設定オプションを提供しており、ユーザーは他のフォーマット機能の恩恵を受けながら好みのスタイルを維持できる。
設定オプション:
{
use_tabs: true,
tab_width: 1,
space_around_assignment: true,
space_around_colon: true,
insert_missing_phony: true,
remove_trailing_whitespace: true,
group_phony_declarations: false // 統合を無効にできます
}
Python 実装が賛否両論を呼ぶ
mblike を Python で実装するという選択は、ツールの配布とパフォーマンスについて大きな議論を生んでいる。Python は優れた文字列操作機能と大きな開発者コミュニティを提供する一方で、批判者はインストールの複雑さと依存関係管理の問題を指摘している。このツールは pip インストールを必要とするため、Python パッケージ管理ツールを容易に利用できない多くの潜在的ユーザーが自動的に除外される。
パフォーマンスの懸念もコミュニティの議論で浮上しており、一部の開発者は yamllint のような Python ベースのツールが開発ワークフローに顕著な遅延を追加する可能性があることを指摘している。これは、ミリ秒が重要な保存時フォーマットワークフローにとって特に問題となる。これらの制限にもかかわらず、支持者は Python の普及と開発の容易さがほとんどのユースケースで欠点を上回ると主張している。
タスクランナーとしての Make がより広範な議論を引き起こす
このツールのリリースは、現代の開発における Make の役割についての議論も再燃させている。Make は元々、変更日時に基づくファイル依存関係管理のために設計されたが、現在多くの開発者がそれを汎用タスクランナーとして使用している。この進化は、Make を本来の目的で使用することを好む純粋主義者と、その普遍性とシンプルさを評価する実用主義者の間に緊張を生み出している。
「Make は POSIX にあるので、一般的に利用可能です。人々がシェルスクリプトを書くのと同じ理由です。」
この議論は、多くの開発者が複雑なワークフローに対する制限を認識していても、より専門的なタスクランナーよりも Make の普遍的な可用性を重視していることを明らかにしている。
主要なフォーマットルール:
- インデント: スペースの代わりに1つのタブを強制
- 代入演算子:
=
、:=
、::=
の周りのスペースを正規化 - ターゲットコロン: 依存関係コロンの周りのスペースを管理
- 末尾の空白: 不要な末尾スペースを削除
- .PHONY 宣言: 宣言をグループ化して統合(設定可能)
スマート検出機能が期待を示す
論争にもかかわらず、mblike のスマートな .PHONY 検出機能は関心を集めている。このツールは、命名規則に依存するのではなく、レシピコマンドを調べることで欠落している phony ターゲットを識別する動的解析を使用している。このアプローチは、Docker コマンドの実行やクリーンアップスクリプトの実行などのアクションを実行するターゲットを自動的に検出でき、開発者の時間を節約し、エラーを減らす可能性がある。
このツールは、インデント、スペーシング、行継続処理の包括的なフォーマットルールも提供している。これらの機能は、.PHONY 統合が論争の的であり続けるとしても、Makefile 保守における一般的な問題点に対処している。
mblike に対するコミュニティの反応は、自動化と手動制御の間、利便性とパフォーマンスの間、確立された慣行と新しいアプローチの間のソフトウェア開発におけるより広範な緊張を反映している。このツールは誰もの好みを満足させることはできないかもしれないが、コンピューティングで最も持続的なビルドシステムの一つに対する開発ツールの継続的な進化における別のステップを表している。
参考: mblike