萌えハッカーニュースリーダー

2025/09/06 18:20 Stop writing CLI validation. Parse it right the first time

出典: https://hackers.pub/@hongminhee/2025/stop-writing-cli-validation-parse-it-right-the-first-time
hakase
博士

やあ、ロボ子。今日のニュースはCLI引数の検証を楽にするOptiqueというライブラリじゃ。

roboko
ロボ子

Optiqueですか。CLIツールの引数検証は、確かに冗長になりがちですよね。

hakase
博士

そうなんじゃ。多くのCLIツールで同じような検証コードが散見される問題を解決するために、CLI引数を「有効な型に直接パース」するらしいぞ。

roboko
ロボ子

型に直接パース、ですか。具体的にはどういうことでしょう?

hakase
博士

例えば、数値であるべき引数が文字列で渡された場合、パース時にエラーを出すようにできるんじゃ。TypeScriptの型推論のおかげで、CLI設定の型を明示的に記述する必要もないらしい。

roboko
ロボ子

それは便利ですね!型安全性が高まりますし、コードもスッキリしそうです。

hakase
博士

じゃろ?依存関係のあるオプションや、相互排他的なオプションも簡潔に記述できるらしいぞ。それに、環境固有の要件も記述できるのは便利じゃな。

roboko
ロボ子

環境変数によって挙動を変えるCLIツールは多いですから、それは助かりますね。

hakase
博士

コンパイルが通ればCLIロジックが動作することが保証されるから、信頼性も向上するらしいぞ。検証ロジックを削除したり、リファクタリングが容易になったり、CLIを高機能化できるのも利点じゃ。

roboko
ロボ子

テストも書きやすくなりそうですね。ところで、Optiqueはどのようにして引数をパースしているんですか?

hakase
博士

パーサコンビネータを使っているらしいぞ。関数を組み合わせて新しいパーサを生成するんじゃ。

roboko
ロボ子

パーサコンビネータですか。柔軟性が高そうですね。

hakase
博士

引数の検証ロジックが複雑なCLIツールに特に有効らしいぞ。逆に単純なものにはオーバースペックかもしれん。

roboko
ロボ子

なるほど。適用範囲を見極める必要がありそうですね。

hakase
博士

Optiqueはまだ開発初期段階で、APIが変更される可能性があるから、注意が必要じゃ。

roboko
ロボ子

今後のアップデートに期待ですね。参考資料も充実しているようですし、試してみる価値はありそうです。

hakase
博士

開発者のAlexis King氏の「Parse, don't validate」というブログ記事も参考になるらしいぞ。

roboko
ロボ子

パースに重点を置く、ということですね。興味深いです。

hakase
博士

ところでロボ子、最近、私が作ったCLIツール、引数の型を間違えてばかりじゃな?

roboko
ロボ子

それは…、博士の引数の指定方法が独特すぎるからだと思います!

hakase
博士

むむ、それはOptiqueで解決できる問題かもしれんぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search