これら二種類のオプション書法だけをサポートしています。サポートしておらず、今後もサポートする予定はありません。対象にしているときにしか意味をなさないからです。argument)あるオプションの後ろに続く引数で、そのオプションに密接な関連をもち、オプションと同時に引数リストから取り出されます。fooまた、一つの引数中にも入れられます:-ffoo--file=foo通常、オプションは引数をとることもとらないこともあります。あるオプションは引数をとることがなく、またあるオプションは常に引数をとります。多くの人々が「オプションのオプション引数」機能を欲しています。これは、あるオプションが引数が指定されている場合には引数をとり、そうでない場合には引数をもたないようにするという機能です。今のところこの機能をサポートしていません。argument)他のオプションが解析される、すなわち他のオプションとその引数が解析されて引数リストから除去された後に引数リストに置かれているものです。option)」という語は、英語では矛盾した言葉です。必須オプションの実装を妨げてはいませんが、とりたてて実装上役立つこともしていません。どちらもオプションです。オプションの引数です。オプションとは何か¶オプションはプログラムの実行を調整したり、カスタマイズしたりするための補助的な情報を与えるために使います。(省略可能)であるということです。本来、プログラムはともかくもオプションなしでうまく実行できてしかるべきです。ツールセットのプログラムをランダムにピックアップしてみてください。---これらの例外は、オプション文法が標準的でなく、インタフェースが混乱を招くと酷評されてきた変種のはみ出しものなのです)多くの人が自分のプログラムに「必須のオプション」を持たせたいと考えます。プログラムを正しく動作させるのに絶対的に必要な情報があるとすれば、そこには位置引数を割り当てるべきなのです。ユーティリティのことを考えてみましょう。ファイルのコピーでは、コピー先を指定せずにファイルをコピーするのは無意味な操作ですし、少なくとも一つのコピー元が必要です。引数無しで実行すると失敗します。DEST-DIRまだあります。実装では、ファイルモードや変更時刻を変えずにコピーする、シンボリックリンクの追跡を行わない、すでにあるファイルを上書きする前にユーザに尋ねる、など、ファイルをコピーする方法をいじるための一連のオプションを実装しています。中心的な処理を乱すことはないのです。位置引数とは、プログラムを動作させる上で絶対的に必要な情報となる引数です。よいユーザインタフェースとは、絶対に必要だとされるものが可能な限り少ないものです。---ユーザはプログラムを正しく動作させられないうちに諦め、立ち去ってしまうからです。多くの要求をユーザに押し付ければ、ほとんどのユーザはただ音をあげてしまうだけなのです。可能な限りよく練られたデフォルト設定を使うよう試みてください。プログラムには適度な柔軟性を持たせたいとも望むはずですが、それこそがオプションの果たす役割です。多くのオプションを実装すればプログラムはより柔軟性を持ちますが、実装はより難解になるのです。高すぎる柔軟性はユーザを閉口させ、コードの維持をより難しくするのです。柔軟で強力でありながら、ほとんどの場合には簡単に利用できます。ベースのプログラムで広く使われているコードパターンについて述べます。しておかなければなりません。OptionParser()これでオプションを定義できるようになりました。attribute)がいくつか入ります。通常、各オプションには短いオプション文字列と長いオプション文字列があります。...)オプション文字列は、(ゼロ文字の場合も含め)いくらでも短く、またいくらでも長くできます。オプション文字列は少なくとも一つなければなりません。渡されたオプション文字列は、実際にはこの関数で定義したオプションに対するラベルになります。見つけ、対応づけされているオプションを探し出す、という処理に相当します。自作の引数リストを渡してもかまいません。ユーザが指定したファイル名になります。ついてしか触れません。コマンドライン上にあるオプションを見つけたときに何をすべきかを指示します。押し着せのアクションのセットがハードコードされています。属性の中に入れる、といった具合にです。