Hatena::ブログ(Diary)

HM weblog

 | 

2009-01-14

var要素は「變數名」ではない

var要素をプログラムコードではない通常の文章に使う (agenda)

參照先の例文に見られるやうに、HTMLでvar要素になれるものはそもそもプログラムコードに限定されない。プログラムコード中の變數名をvar要素にしてゐる文書を以前どこかで見掛けた記憶がある(自分も最初そのやうに勘違ひし掛けたやうな記憶がある)のだけれど、それは間違ひ。もしそれが正しいのであれば何でプログラムの變數名だけが特別扱ひされてゐるの? 同じくプログラムの豫約語とか函數名といったそのへんをマーク附けする要素型が無いのは何故? とかなんとか。

もりやまは、或テキストが状況によって變化するものである場合それをvar要素にしてゐる。たとへばパス名に含まれるユーザ名だとか、プログラムの函數のドキュメントで例示するときの引數の名前とか。

例:

<p>次の二行を<code class="path"><var>プロファイルディレクトリ</var>/hostperm.1</code>に追加して、Firefoxを再起動。</p>
Firefoxで「NoScript」とか「Adblock Plus」を使はずに「はてなスター」だけを無效にする - HM weblog

次の例はもりやまが書いたものではないが、プログラムの函數(メソッド)の引數名に使用されてゐる實例:

<dt><a name="gsub" id="gsub"></a><code>gsub(<var>pattern</var>, <var>replace</var>)</code><!-- RDLabel: "gsub" --></dt>

(中略)

<dd>
<p>文字列中で <var>pattern</var> にマッチする部分<em>全て</em>を <var>replace</var> で
置き換えます。

(後略)

組み込み関数 - Rubyリファレンスマニュアル

これらのプロファイルディレクトリとかpatternとかは、讀者ごとに様々な文字列になり得る。たとへば上記の、Stringクラスのメソッドgsub(pattern, replace)が實際に使はれてゐるプログラムでは、その表現形は

text.gsub(/<\/p>/, "(探しても見つからなかったけれど、設定で出來るのかも知れないね。出來たらごめん)</p>")

かも知れないし

text.gsub(/すべきだ。/, "すべきだ。それが出來るプロなら。")

かも知れない。

またパス名の例では、單に「プロファイルディレクトリ/hostperm.1」として説明すると、實際に「プロファイルディレクトリ」といふ名前のディレクトリを指してゐるのか否かが明白にならない。varでマーク附けることで讀者や状況ごとに、たとへばC:\Windows\Application Data\Mozilla\Profiles\noa\lj66cael7.exampleとか/home/ayano/.mozilla/firefox/y4p0eypx.exampleといふ風に「展開」して讀んでもらふことを期待出來るだらう。

かういふ風に「變數としての性質を持つ内容」を<var>でマーク附けするのだ。と理解してゐる。

以下はHTML4の仕樣書の邦譯と原文からvar要素型の説明部分。

VAR:
変数またはプログラム引数のインスタンスを示す。
Paragraphs, Lines, and Phrases (ja)
VAR:
Indicates an instance of a variable or program argument.
Paragraphs, Lines, and Phrases

此の変数といふ説明が、變數名をvar要素にしてしまふやうな「誤解」のもとだらう。よく讀むと後者はプログラム云々と言ってゐるが、前者は單に変数と言ってゐる。正直言って英語のことはよく分らないが、しかし此のvariableは「プログラムコード中の變數名」のことではないはず。

instanceインスタンスと譯してゐるのもどうかなと。このinstanceって次の意味なんぢゃないの? :

2 (実)例, 例証. ⇒EXAMPLE[類語]

to take a trivial instance
ごくありふれた例をあげるなら.

Yahoo!辞書 - instance

いづれにせよ仕樣書がもっと擇山exampleを示してくれてゐれば、もうちょっと分り易いんだけれどねえ。

追加情報

2.0

var要素をプログラムコードではない通常の文章に使う (agenda)の「參考文獻」に追加されたリンク經由:

プログラムの変数、状況によって値が変化する部分などを示します。

RFC1866 では以下のように説明されていました。

var要素 | ばけらの HTML リファレンス(未完成)

RFC1866?

"Hypertext Markup Language - 2.0" と題する RFC で、その名の通り HTML2.0 の仕様書です。

RFC1866 | 鳩丸ぐろっさり (用語集)

2.0!

The <VAR> element indicates a placeholder variable, typically rendered as italic. For example:

Type <SAMP>html-check <VAR>file</VAR> | more</SAMP> to check <VAR>file</VAR> for markup errors.

RFC1866 Hypertext Markup Language - 2.0

<VAR>要素は置き換え可能なものを示し、一般にイタリックで表示されます。

使用例: <VAR>file</VAR>のマークアップエラーをチェックするには、<SAMP>html-check <VAR>file</VAR> | more</SAMP>とタイプしてください。

RFC1866 Hypertext Markup Language - 2.0 (邦譯)

二つも古い版のはうにより分り易い説明があるだなんて、思ひもよらない。RFC1866は後でしっかり目を通して置かう。

5

はてなブックマークのコメントより:

HTML5だとThe var element represents a variable. This could be an actual variable in a mathematical expression or programming context, or it could just be a term used as a placeholder in prose.になってる。解釈がおおよそ同じ。

Comment by id:vantguarde (はてなブックマーク - var要素は「變數名」ではない - HM weblog)

該當箇所はHTML5の4.6.14 The var element以下。數學の變數をマーク附けする例がある。といっても數式に現れてゐる變數ではなく、その後の文章中に登場してゐる變數名がvar要素となってゐる點に注目:

<figure>
 <math>
  <mi>a</mi>
  <mo>=</mo>
  <msqrt>
   <msup><mi>b</mi><mn>2</mn></msup>
   <mi>+</mi>
   <msup><mi>c</mi><mn>2</mn></msup>
  </msqrt>
 </math>
 <legend>
  Using Pythagoras' theorem to solve for the hypotenuse <var>a</var> of
  a triangle with sides <var>b</var> and <var>c</var>
 </legend>
</figure>
4.6 Text-level semantics ― HTML 5

かうして見ると、var要素型には二つの目的があるやうに思ふ。一つは「置換へ可能な内容を示す」こと。これはパス名の例や、var要素をプログラムコードではない通常の文章に使う (agenda)の例文にあるやうな類。あるいはRFC1866で擧げられてゐた例のやうにコマンドライン引數とか。

もう一つは「通常の文章中から變數をその名前で參照する」場合。上記のMathMLの例なんかがそれだ。數學の變數の字面は特に「置換へ可能な内容」ではない。ではなぜマーク附ける必要があるのか。これは多分英語でないと效果がよくわからないだらう。日本語の場合、文章中で參照したい「變數名」なんてものは大概アルファベットだから、地の文である日本語との區別は容易に附く:

  • 函数Xの第一引数arrayは配列です。

といふ風に。ぶっちゃけマーク附ける必要は無い。けれど英語だとさうは行かない:

  • The first argument array of function X is array.

そこでマーク附けて、地の文と區別するのではないだらうか:

  • The first argument array of function X is array.

arrayといふ變數名はちょっとわざとらしいが、日常語と同じ形の名詞などがプログラムなどの變數名になることは多々ある(たとへばdateとかtextとか)ので、それらを通常の文章中で引用や參照する場合には地の文と區別する方法が、特に英語では必要となる筈。

之は地の文と差別化する目的の「強調」の一種だ。var要素についての言及は無いが、em要素とstrong要素 - 徒書に書かれてゐるem要素・dfn要素・cite要素は、どれもこの語句は通常の意味とはちょっと違うよという箇所を表すという点で仲間なのではないかと思うのですem要素とstrong要素 - 徒書といふ解釋に、僕は同感・納得してゐる。そしてさういふ意味で、varもemの仲間(といふ一面も合せ持つ要素型)なのではないか。

追加情報2

數學の變數の字面は特に「置換へ可能な内容」ではない例ではaは斜辺長、b,cは隣辺長のplaceholderであり、様々な数値に置換えられ得るので、やはり"変えられるもの"の一つだと思う。

Comment by id:kits (はてなブックマーク - var要素は「變數名」ではない - HM weblog)

たしかに。何か勘違ひしてゐたみたい。(TODO: 當該箇所を修正する)

 |