モジュール:Convert/documentation/変換データ/説明

このページはモジュール:Convertで使用される単位変換データの一覧です。導入予定の単位は一時的にモジュール:Convert/extraに置かれることもあります。単位に関する議論はTemplate‐ノート:Convertにて提起してください。

このページはモジュール:Convert/makeunitsで読み込まれます。makeunitsはこのページのウィキテキストから単位変換データを抽出して、モジュール:Convert/dataの書式に基づきLuaのソースコードを出力します。出力されたソースコードはそのまま/dataにコピーできます。

換算係数と基礎物理定数[編集]

{{Convert}}で使用される単位の換算係数は下記の国際標準と国内標準文書に基づきます。

  • Organisation Intergouvernementale de la Convention du Mètre (2014) [2006]. The International System of Units (SI) (PDF) (英語). Bureau International des Poids et Mesures. 2018年6月26日閲覧この文書は4.2節"Other non-SI units not recommended for use"においてNISTの文書へのリンクがあります。
  • Thompson, Ambler; Taylor, Barry N. (November 2008). Guide for the Use of the International System of Units (SI) - Publication 811, 2008 Edition, 2nd printing (PDF) (英語). National Institute of Standards and Technology, U.S. Department of Commerce. 2018年6月26日閲覧

NISTの文書では換算係数が小数点以下7桁まで示されます。太字の換算係数は正確な値を示しますが、正確な値が小数点以下7桁以上ある場合は四捨五入で表示されるため、正確な値ではなくなります。モジュール:Convertでは四捨五入された値を使用せず、正確な値を使用します。例えば、NISTの文書では1平方マイル = 2.589 988 E+06平方メートルとありますが、Template:Convertでは1平方マイル = 2,589,988.110336平方メートルになります。

基礎物理定数の値はNISTの発表する値を使用します。この値は4年ごとに更新され、2021年6月現在のモジュール:Convertでは2014年版の値を使用しています。SI基本単位の記事などでは4年ごとにNIST発表値に更新すべきですが、差が小さいためモジュールでは頻繁に更新する必要はありません(更新が非推奨になっているわけではありません)。

歴史的に使用された単位は下記などの出典に記載されています。

  • Fenna, Donald (2002). A Dictionary of Weights, Measures, and Units (英語). Oxford University Press. ISBN 978-0-19-107898-9

表の書式[編集]

見出し[編集]

makeunitsはこのページにおける下記の節にあるウィキテキストを読み込みます。

== 変換データ ==
== 入力用複合単位 ==
== 出力用複合単位 ==
== 複数の変換先 ==
== 既定の変換先 ==
== リンク先 ==
== 毎つき単位の自動定義 ==
== オーバーライド ==
== 数形別の名称 ==スロベニア語版で使用。数のパターンが3つある言語(単数形、双数形、複数形)で適用されるため、日本語版では使用しません。)

これらの節における第3レベルの節(例:=== 長さ ===)は特定の種類の単位を定義する表が含まれます。表組みでは|で始まる行が読み込まれ、|-|}で始まる行は無視されます。読み込まれる行では||区切りでセルの内容を分け、セルの内容では先頭と末尾のホワイトスペースが除去されます。「変換データ」の節においてはセルが空の場合はそれぞれ既定値が与えられます。例えば、単位の英語名で単数形しか入力しなかった場合は複数形に「単数形+s」という既定値が与えられます。

各列の第2セルには単位の略号を指定しますが、特定の値を指定することで別の効果があります(後述)。略号が長い場合はcolspan="11" |と指定することで改行を防ぐことができ、makeunitsは第2セルの先頭にあるcolspanを無視します。

別称[編集]

単位コード(テンプレートを使用するときに入力する単位名)の中にはほかの単位コードの別称になっているものがあります。例えば、ft2sqftの別称であり、ft2を定義する列では単位の略号に=sqftと入力する形で示します。別称は必ず元の単位が定義された後でなければ、正しく動作しません(例えば、sqftの定義は必ずft2より後にあります)。

別称の定義は単位の略号以外何も指定しない列がほとんどですが、下記の引数が使用できます。

  • default = 単位コード - 元の単位と異なる既定の変換先を指定します。
  • link = 内部リンク先 - 元の単位と異なる(単位名の)内部リンク先を指定します。
  • multiplier = 数値(例:multiplier = 100) - 元の単位に倍率をかける場合に使用。例えば、単位コード100kmでは略号に=kmを、倍率にmultiplier = 100を指定します。
  • sp = us - 常に英語で表示する場合に使用します。
  • symbol = 略号表示 - 元の単位と異なる略号を表示する場合、その略号を指定します。
  • symlink = 内部リンク先 - 略号表示のときに異なる内部リンク先を使用する場合、その内部リンク先を指定します。

比率単位[編集]

単位の中には、2つの単位の比率として定義されるものがあります。例えば、L/kmは「リットル毎キロメートル」という定義であり、単位の略号に==L/kmと入力する形で示します。=1つが別称を示すのに対し、==2つは比率定義を示します。

単位の比率のほかにも「単位毎の金額」という単位もあります。モジュール:Convertでは$£を通貨記号として認識し、通貨記号を含む単位を「単位毎の金額」として表示します。例えば、|120|$/acreは「$120毎エーカー」(略号表示では「$120/acre」)と表示されます。通貨記号を含む単位はこのページには入力しません。

別称で使用できるdefaultなどの引数は比率単位にも使用できます。

使用できない単位の定義[編集]

廃止された単位コードなど使用すべきでないものは一般的には定義する必要がありません。未定義の単位を使用すると「不明な単位」のエラーが表示されますが、移行先などをエラーメッセージに表示したい場合は単位の略号に!エラーメッセージのように入力します。使用できない単位の定義列ではそれ以外の引数はありません。

エラーメッセージで単位の略号を表示する場合、%{%}で囲むようにしてください(例:%{mpg%})。これはモジュール:Convertによる出力で単位コードの表示を統一するためです。

単位名表示[編集]

単位名の中には略号が一般的に使用されず、単位名をそのまま表示するものがあります。単位略号の先頭に~と入力することでこれを示すことができます。

例外指定で使用する単位コード[編集]

単位略号の中には*で始まるものがあります。例えば、pitchの略号は*µmと指定されています。既定の変換先リンク先の節で例外を指定するとき、単位略号が使用されますが、pitchの略号µmはマイクロメートルと衝突します。そのため、衝突を回避するよう*を先頭につけます。

SI接頭語[編集]

SI接頭語のセルは下記の値を使用します。

  • (空) - SI接頭語を使用しない場合
  • SI - SI接頭語を使用する場合。
  • SI2 - SI接頭語の二乗(平方)を使用する場合。
  • SI3 - SI接頭語の三乗(立方)を使用する場合。

例えば、km2ではSI2を指定し、元の単位mの1000 × 1000倍であることを示します。mm3ではSI3を指定し、元の単位mの0.001 × 0.001 × 0.001倍であることを示します。

名称[編集]

単位名の単数形は必須で、複数形は必須ではありません。複数形を指定しない場合、英語名では単数形の末尾に"s"を付け加えた値が単位名の複数形になり、日本語名では単数形がそのまま複数形として使われます。指定が必要な例としては"foot"(フット)と"feet"(フィート)があります。

単位名に%sを使用した場合、表示ではSI接頭語に置換されます(SI接頭語を使わない場合は空文字列に置換されます)。なお、接頭語が先頭にある場合は省略できます。

英語名の例外[編集]

ヘクタールの英語名hectareアールare)とSI接頭語ヘクトhecto)に由来しますが、綴りがアールの先頭に接頭語をつけたもの(hectoare)と異なります。その場合、haの単位を定義して、オーバーライドの節で例外であることを記載することで解消できます。

スケール[編集]

  • 単位×スケール=元の単位

スケールは上記の式で計算できます。例えば、0.3048国際フィート=1メートルなので、footの定義では既定の変換先にmを、スケールに0.3048を指定します。3桁ごとにコンマで区切ること(例:1,000,000)や、指数表記を使用すること(例:1e6)もできます。正確な値を指定するとき、分数を使用することもできます(例:1/12)。

追加処理[編集]

追加処理のセルはほとんどの単位では空ですが、単位の換算が「単位×スケール=元の単位」以外の式で行われるときに指定します。指定する値がモジュール自体に組み込まれる必要があります。例えば、セルシウス度など温度単位の換算では「追加処理」のセルにケルビンとのオフセット数値を入力します。

マッハ数など計算処理が表で入力するには複雑すぎるものはモジュール側で処理を実装し、表には処理の名称を入力する形になります(詳しくはmakeunitsset_builtins関数を参照)。

変換先の既定値[編集]

「既定の変換先」には、テンプレート呼び出しで変換先の単位を指定しなかった場合に変換先として使用する単位を指定します。SI接頭語つきの単位コードで変換データの節にその単位コードの行がない場合(例:cm2m2の行でSI接頭語にSI2を指定する形で定義されるため、cm2の行は存在しない)、既定の変換先の節で元の単位と異なる既定変換先を指定できます。工学表記を使用する単位も同様に既定の変換先の節で既定変換先を指定できます。

変換先の指定は単位コードか、判定式を指定できます。判定式を指定する場合、!区切りで3つまたは4つの値を指定します。例えば、in(インチ)では下記のように指定できます。

v < 36 ! mm ! cm

1つ目の値はブーリアン型の値(trueまたはfalse)に評価できる式を指定します。trueに評価された場合は2つ目+4つ目の値が、falseに評価された場合は3つ目+4つ目の値が変換先の単位コードになります。上記の例では入力値が36未満の場合はmm、36以上の場合はcmになります。

Ml(メガリットル)では下記のように指定できます。

v < 28.316846592 ! e3 ! e6 ! cuft

式がtrueの場合はe3cuftに、falseの場合はe6cuftになります。

入力における複合単位[編集]

複合単位(composite unit)は2つの単位で構成されます。例えば、テンプレートにおける|2|ft|6|inの入力は2フィート6インチを指します。このような単位は入力用複合単位の節で定義されます。

複合単位の定義は常に2つの単位で構成されますが、テンプレート入力では3つ以上の単位を指定することもできます。例えば、_mi_ch_ch_ftの定義を使用することで、1|mi|2|ch|3|ftのようにマイルチェーンフィートをすべて含む入力ができます。これにヤードを加えて4|mi|3|yd|2|ft|1|inのように指定することもできます。

出力における複合単位[編集]

複合単位(mulitple unit)は出力にも使用できます。例えば、ftinは変換先をXフィートYインチという表現で出力できます。このような単位は出力用複合単位の節で定義されます。

リンク先の仕様[編集]

「リンク先」のセルにはその列の単位に関連する記事名を入力します。節リンクも入力できます。記事名の先頭に+*または@がある場合は下記の特別処理が行われます。

  • + - 単位記号の先頭にある「US」(英語名)または「米」(日本語名)が米国慣用単位にリンクされます。例:US gal
  • * - 単位記号の先頭にある「U.S.」(英語名)または「米」(日本語名)が米国慣用単位にリンクされます。例:U.S. gal
  • @ - 単位記号の先頭にある「imp」(英語名)または「英」(日本語名)が帝国単位にリンクされます。例:imp gal

リンク先の節はSI接頭語つきの単位における内部リンク先の例外を定義します。SI接頭語なしの単位とリンク先が異なる場合に指定します。

表組みにおけるパイプ(|)は文字参照で表記する必要があります。例えば、[[ガロン|gal]]と指定する場合は[[ガロン&#124;gal]]と入力します。makeunitsでは&#124;を自動的に|に変換します。

単位コードの衝突[編集]

SI接頭語つきの単位コードがほかの単位コードと同じ綴りになり、衝突を起こすことがあります。例えば、Paにはpascalパスカル、圧力の単位)とareアール)+SI接頭語「ペタ」の組み合わせ(すなわち、「ペタアール」、peta-are)は衝突を起こします。これはオーバーライドでどちらを優先するかを明記することができます。上記の例ではオーバーライドに基づきパスカルが優先されます。

特殊な単位[編集]

単位コードの中にはテンプレートでの使用を想定せず、別の単位コードにおける例外を設定するために定義されています。例えば、ftのリンク先はフィートですが、psi/ftの単位ではftのリンク先を破砕圧力勾配にする必要があります。そのため、-ft-fracという単位(ftの別称で、リンク先を破砕圧力勾配に変更した単位)が作成されました。このような単位は単位コードの先頭が-(ハイフン)で始まります。

「例外の例外」が必要な場合は先頭を--(ハイフン2つ)にした単位コードを定義できます。ただし、このような単位は現時点では存在しません。

工学表記[編集]

下記のデータで定義された単位以外では工学表記の接頭語つきの単位も使用できます(例:e6km=百万キロメートル)。工学表記の接頭語には下記があります。テンプレートで|lk=onと指定した場合は元の単位の内部リンクがつけられます。

工学表記は標準的な単位(すなわち、複合単位、複雑な追加処理を含む単位以外)で使用できます。温度変化の単位にも使用できますが、温度の単位には使用できません。

単位種類別の追加説明[編集]

エネルギーとトルク[編集]

慣習に基づき、「力・長さ」の順で書かれる単位(例:lbft、kgf.m)がトルクの単位として、「長さ・力」の順で書かれる単位(例:ftlbf)がエネルギーの単位として扱われます(ポンド・フィートフィート重量ポンドを参照)。

しかし、歴史的に使用されてきた単位の中には上記の慣習と異なる使い方がなされるものもあり、既定では種類の違う単位を変換することができない(例えば、長さの単位を温度の単位に変換することはできません)ため、問題が生じます。このようなケースでも変換できるよう、モジュール:Convert/makeunitsではspecialsというテーブルが定義され、特定の単位にalttypeの値をつけます。この値が定義された単位は2つの種類を持つことになり、エネルギーとトルクの両方として扱われます。

2021年6月現在、下記のエネルギー単位にはalttype = "torque"が定義されています。

  • 基本単位:ftlb, ftlb-f, ftlbf, inlb, inlb-f, inlbf, inoz-f, inozf
  • 別称:ft.lbf, ft·lb-f, ft·lbf, in.lb-f, in.lbf, in.oz-f, in.ozf, in·lb-f, in·lbf, in·oz-f, in·ozf

下記のトルク単位にはalttype = "energy"が定義されています。

  • 基本単位:Nm
  • 別称:N.m, N·m

上記の定義により、下記の変換(トルク単位のNmからエネルギー単位のftlbfへの変換)が正しく動作します。

  • {{convert|1|Nm|ftlbf}} → 1ニュートンメートル (0.74 ft⋅lbf)