HN452
愛されるCLIツールを作るために:コマンドライン・インターフェース設計ガイドライン
Command Line Interface Guidelines
subset・4日前
Command Line Interface Guidelines
コマンドライン・インターフェース(CLI)は、開発者の生産性を大きく左右する強力なツールです。使いやすく、直感的で、他のツールとも連携しやすい「最高なCLIツール」を開発するためのベストプラクティスを網羅したガイドラインです。ユーザーがストレスなくコマンドを打てる、そんな体験を提供するための設計原則や命名規則、標準的なエラーハンドリングの手法などを詳しく解説しています。
数分間フリーズしたままだとユーザーは壊れたんじゃないかと疑い始めるから、コマンドの出力が少なすぎるのは問題だ。
いや、それは違うな。プログラムのデバッグ目的でトレースオプションがあるのは便利だけど、出力することがプログラムの仕様に含まれていないなら、余計なものを出すべきじゃない。プログラムが特定の計算の後に特定の出力を出すのが仕様なら、たとえ計算に3週間かかろうと、それ以外の出力をすべきではないんだ。
「cp -r from to」は、終わるかエラーになるまで静かであるべきだろう。
進捗報告について合意されたプロトコルがあるなら、それは素晴らしいね。例えば、ファイルディスクリプタ3を「stdprogress」として定義するとかさ。プログラムがそこに特別なフォーマットでメッセージを投げて、親ジョブのコントロールシェルがそれを横取りしてプログレスバーを表示する(パイプラインの要素ごとに複数行表示したりなど)。悪くない案だけど、こういう付加機能は標準出力に混ぜるべきじゃない。少なくともデフォルトでやるべきことではないよ。