「Shef」と呼ばれる新しいコマンドラインツールが、シェルスクリプティングにおける YAML ベースのアプローチの利点について開発者間で議論を巻き起こしています。このツールは、シェルレシピを作成するための強力な CLI ツールと自称し、 Make 、 GitHub Actions 、および CyberChef の要素を組み合わせて、シェルコマンド用の YAML 駆動型インターフェースを作成しています。
開発者間の YAML 疲れ
Shef に対するコミュニティの反応は、経験豊富な開発者の間で YAML DSL に対する疲労感が高まっていることを浮き彫りにしました。多くのコメント投稿者は、シェルコマンドをさらに別の YAML ベースのドメイン固有言語でラップすることの価値に懐疑的な見方を示しました。同様のアプローチの過去の試みとの比較はすぐに行われ、ある開発者は Maven 1 と Apache Jelly との類似点を指摘し、そのような XML ベースのスクリプティングが最終的に放棄されたことを説明しました。
「レシピを YAML で書く代わりにシェル関数(または複数のプラットフォームで動作する Python)を使用するユースケースが見当たりません...それはすぐに、より良い構成構文の利点がない疑似プログラミング言語になってしまうでしょう。」
この感情は複数のコメントで共有され、 Kubernetes や他の YAML を多用するツールを日常的に扱う開発者たちは、ワークフローにさらに YAML のレイヤーを追加することに特に抵抗を示しました。
生のシェルスクリプト vs 構造化されたアプローチ
議論の中心テーマは、 Shef が従来のシェルスクリプティングに比べて十分な利点を提供し、その存在を正当化できるかどうかでした。ツールの作成者はインタラクティブなユーザープロンプトと追加機能が基本的な bash スクリプティングを超える利点であると主張しましたが、多くの開発者は「少し努力するだけで、シェルスクリプティングはそれほど難解ではない」と主張しました。
複数のコメント投稿者は、シェルスクリプトが複雑になりすぎた場合、新しい抽象化レイヤーを導入するよりも Python のような完全なプログラミング言語に切り替える方が良いアプローチであると提案しました。他の人々は、 Taskfile のような同様の機能を提供する既存のツールを指摘しましたが、そこでも開発者はしばしば生のシェルコマンドに戻ってしまうとのことでした。
Shefの主な特徴
- インタラクティブなユーザープロンプト
- コマンドのパイピング
- 複雑な制御構造とループ
- 条件付きロジックを備えた再利用可能なワークフロー
- YAMLベースのレシピ形式
コミュニティの懸念点
- YAMLが疑似プログラミング言語になっていること
- 生のシェルスクリプトと比較した複雑さ
- インストール要件(当初は Go ツールが必要)
- 以前に放棄されたアプローチ(例:Apache Jelly)と類似したパターン
インストールの障壁と実用的な考慮事項
Shef の初期リリースは、ソフトウェアを試すためにユーザーが Go ツールをインストールする必要があるというインストールプロセスで批判を受けました。開発者はこの制限を認め、すぐにプロジェクトを更新してリリースにバイナリアセットを含めることで、コミュニティのフィードバックに対応しました。
一部のユーザーは、ツールの賢い名前(chef と shell をかけたもの)や、他のレシピ内でレシピを再利用する可能性など、ツールの特定の側面を評価しました。あるコメント投稿者は README に asciinema の録画を追加してツールの機能をより良く示すことを提案し、開発者はすぐにその提案を実装しました。
代替アプローチ
Shef をめぐる議論は、いくつかの開発者が同様の問題に対する独自の代替アプローチを共有するきっかけとなりました。一部は Ansible にインスパイアされたが小規模な操作向けに設計された Python ベースのツールについて説明しました。他の人々は Go と YAML の組み合わせよりも CDK のような強く型付けされたアプローチの利点を挙げました。
これらの代替案は、複雑なシェル操作を処理する最良の方法についての意見の多様性を強調しており、多くの開発者は新しいドメイン固有言語を作成するよりも、既存のプログラミング言語を活用することを好んでいます。
Shef はシェルスクリプトをよりアクセスしやすく、インタラクティブにするための興味深いアプローチを示していますが、開発者コミュニティの反応は、 YAML ベースのスクリプティングソリューションへの関心がより伝統的なプログラミングアプローチを支持して衰えている可能性を示唆しています。それにもかかわらず、ツールの作成者はプロジェクトに対して熱意を持ち続け、フィードバックに対応しており、 Shef がコミュニティの意見に基づいて進化し続ける可能性があることを示唆しています。