Akihiro MOTOKI
amoto****@gmail*****
2011年 1月 19日 (水) 22:54:21 JST
元木です。 すでに新しい翻訳の方を投稿頂いていますが、 こちらのメールの方につなげます。 At Sat, 15 Jan 2011 18:39:26 +0900 (JST), 長南洋一 <cyoic****@maple*****> wrote: > > 長南です。 > > 元木さんのメールより [JM:00105] > > > > > まず、引用は省略しますが、「説明」の最初のパラグラフが、自分でも > > > いまいち気に入っていません。「xargs は、コマンドラインが > > > 長くなりすぎるときは、標準入力から受け取った引き数を分割して > > > 実行する」ということを、ここで言っておいた方がよいと思うのです。 > > > そうでないと、「コマンドを一回以上実行する」という説明がちょっと > > > 唐突になりますし、「コマンドラインが長すぎてエラーになることがない」 > > > というのが xargs の売り物の一つなんでしょうから。でも、そのために > > > くどい文章になってしまいました。もっとすっきりした案があったら、 > > > お教えください。 > > > > これは難しいですね。 > > 意訳に近いですが、こんな案を考えてみました。 > > 長南さんが書かれているように、訳注があった方が > > ぐっと分かりやすくなると思いました。 > > > > xargsは、空白や改行で区切られた一連の項目群を標準入力から読み込み > > (空白はダブルクォート、シングルクォート、バックスラッシュによって > > 保護できる)、読み込んだ一連の項目群を引き数にして、指定した command を > > 実行する (デフォルトのコマンドは/bin/echoである)。 > > (コマンドライン長の上限を越える場合や、オプションによる特別な指定が > > ある場合は、項目群を適宜分割して command を実行するため)、 > > 指定した command が複数回実行される場合もある。 > > 「command を実行する」で切って、「一回以上実行する」の部分は、 > 補足説明として独立させるのですね。なるほど、よい案だと思います。 > ただ、カッコの中が長くて、本文が短いのは、美しくないというか、 > 読みにくいような気がします。 > > 思い切ってカッコをはずして、訳注を堂々と本文に組み込んでしまい > ましょうか。 > > xargsは、空白や改行で区切られた一連の項目を標準入力から読み込み > (空白はダブルクォート、シングルクォート、バックスラッシュによって > 保護できる)、それを引き数にして、指定した command を実行する > (デフォルトのコマンドは /bin/echoである)。このとき、command に > 対してユーザが指定した引き数 (上記書式の initial-arguments) が > あれば、標準入力から読み込んだ一連の項目は、その後ろに追加して行く。 > 形成されたコマンドラインがコマンドライン長の上限を越える > 場合や、オプションによる特別な指定がある場合は、入力を適宜 > 分割して command を実行するので、指定した command が複数回 > 実行されることもある。標準入力における空行は無視される。 > > 「一連の項目群」となさったのは、読み込んだ項目を一個づつ command に > 実行させるのではなく、まとめて command の引き数にするのが基本だ > ということを強調なさりたかったからでしょうが、ちょっと重複した > 言い方ではないかと思います。それで、「一連の項目」にして、 > 「追加する」を「追加して行く」に変更してみました。幾分あいまいに > なったかもしれません。 > > あるいは、独立した「訳注」にする手もあると思います。 2 案を出していただきましたが、どちらもありかなと思います。 個人的な好みでは、強いていうと、上の方に一票入れておきます。 「一連の項目群」と「群」をつけたのは、複数であることを強調しようと 思ったのが理由ですが、かなりくどい、という点には同意します。 > このとき、command に対してユーザが指定した引き数 (上記書式の > initial-arguments) があれば、標準入力から読み込んだ一連の項目は、 > その後ろに追加して行く。 の部分ですが、「〜は、追加して行く」というのが主語/述語があっておらず、 気持悪いので、主語/述語をあわせて頂けると助かります。 [...] > > > ここではセクション名に引かれて、「返り値」と訳しましたが、 > > > 「説明」セクションでは「終了ステータス」と訳していました。 > > > find のマニュアルを含めて、統一した方がよさそうです。 > > > 著者は exit status を使っていますから、セクション名だけ > > > 「返り値」を残して、原則「(終了) ステータス」にしましょうか。 > > > > コマンドの場合には、返り値というよりは、exit code とか exit status > > というのが普通ですね。セクション 1 はコマンドなので、章の名前も > > 「返り値」でなく「終了ステータス」でもいいかなと思い始めました。 > > > > 私は、セクション 2 (システムコール) や セクション 3 (ライブラリ関数) > > の manpage ばかり相手にして来たので、これまで気にならなかったようです。 > > こういう約束事はどこかに書いてあるのではないかと思って、あちこち > 捜してみました。man 7 man-pages で見つけました。翻訳を始める前に > 読んでおけばよかったと思います。元木さんがお訳しになったものだし、 > 引用する必要はないでしょうが、 > > 終了ステータス [通常はセクション 1, 8 のみ] > 返り値 [通常はセクション 2, 3 のみ] ポインタを示していなくて、お手間をかけたようですね。すみません。 [...] > 取り合えず、セクション名は「終了ステータス」にしておきます。 「終了ステータス」でいいかなと思います。 > > > -d オプションの説明でも program という言葉が使われています。 > > > > > > .\"O (省略) This can be used when the input consists of simply > > > .\"O newline-separated items, although it is almost always better to design > > > .\"O your program to use > > > .\"O .B \-\-null > > > .\"O where this is possible. > > > > > > この場合、design your program と言っていますから、program は > > > xargs ではないでしょう。では、xargs の入力を生成するプログラム > > > なのか。だとすると、そのプログラムが --null を使うというのが > > > おかしくなります。--null は xargs のオプションなんですから。 > > > そこで、わたくしは、your program を xargs を含むコマンドライン > > > (パイプラインというんでしたっけ) と考えて、次のように訳しました。 > > > > xargs への入力を生成するプログラムのことではないでしょうか。 > > > > xargs に対して、わざわざ -d delimiter のように特殊な区切り文字を > > 指定させるくらいなら、前段のプログラムの出力の区切り文字の方を工夫して、 > > 受け側の xargs では --null オプションで対処できるようにした方が > > いいだろう、と著者は言いたいのだと解釈しました。 > > > > > 入力が、項目を区切るのが改行のみであるような単純な構成の場合なら、 > > > このオプションを利用してもよいが、ほとんどたいていの場合、 > > > なるべくなら、xargs --null を使うように、実行するプログラムを > > > 組み立てる方が望ましい。 > > 「怪我の功名」みたいですが、だいたいわたしの訳でよかったのですね。 > もう少し明晰にするなら、 > > なるべくなら、xargs の --null を使うように、出力側のプログラムを > 設計する方が望ましい。 感想ですが、個人的には 「組み立てる」よりは「設計する」の方がしっくり来ます。 -- Akihiro MOTOKI <amoto****@gmail*****>