カスタム単位変換ツール
カスタム単位:モデリング、数式、ベストプラクティス
'基本単位'または別のカスタム単位に固定された独自の測定単位を定義します。線形係数または完全な数式をモデル化し、プロジェクトまたはドメインのための一貫したファミリーを整理します。
基本概念
参照ベースのモデリング
参照は別のカスタム単位または'基本単位'です。
変換式は、入力値を参照単位の空間にマッピングします(システムは意図的に単位に依存しません)。
- 次元の安全性参照を選択することで、カスタム単位をそのファミリーに暗黙的に関連付けます。ファミリーの一貫性を保ちます(例:同じ基本を参照する関連単位)。
- 構成可能性単位の名前を変更せずに後で参照を変更できます—数式の調整のみが必要です。
- 監査可能性各単位には、単一の明確な定義があります:参照 + 数式。
係数 vs 数式
単純な単位は定数係数を使用します(例:1 foo = 0.3048 × 基本)。
高度な単位は関数を含む数式を使用できます(例:10 * log(x / 1e-3))。
- 定数係数固定された線形関係(長さのスケール、面積比など)に最適です。
- 数式派生または非線形のスケール(比率、対数、べき乗)には数学関数を使用します。
- 定数組み込みの定数(PI, E, PHI, SQRT2, SQRT3, LN2, LN10, LOG2E, LOG10E, AVOGADRO, PLANCK, LIGHT_SPEED, GRAVITY, BOLTZMANN など)。
命名、記号、一貫性
短く、曖昧さのない記号を選択します。既存の標準との衝突を避けます。
組織内での意図を文書化します—何を測定し、なぜ存在するのか。
- 明瞭さ簡潔な記号を推奨します(1〜4文字推奨、UI では最大6文字まで許可)。
- 安定性データセットや API 間で記号を安定した識別子として扱います。
- スタイルSI に似た大文字小文字の使い分けを適切に行います(例:'foo', 'kFoo', 'mFoo')。
- カスタム単位 = 参照単位 + 変換式。
- 参照が次元を固定し、数式が値のマッピングを定義します。
- 線形スケールには定数係数を優先し、特殊なケースには数式を使用します。
数式言語
数式は、数値、変数 x(入力値)、エイリアス値、定数(PI, E, PHI, SQRT2, SQRT3, LN2, LN10, LOG2E, LOG10E, AVOGADRO, PLANCK, LIGHT_SPEED, GRAVITY, BOLTZMANN)、算術演算子、および一般的な数学関数をサポートします。数式は、選択された参照単位での値に評価されます。
演算子
| 演算子 | 意味 | 例 |
|---|---|---|
| + | 加算 | x + 2 |
| - | 減算/単項否定 | x - 5, -x |
| * | 乗算 | 2 * x |
| / | 除算 | x / 3 |
| ** | べき乗(** を使用、^ は自動変換) | x ** 2 |
| () | 優先順位 | (x + 1) * 2 |
関数
| 関数 | シグネチャ | 例 |
|---|---|---|
| sqrt | sqrt(x) | sqrt(x^2 + 1) |
| cbrt | cbrt(x) | cbrt(x) |
| pow | pow(a, b) | pow(0.3048, 2) |
| abs | abs(x) | abs(x) |
| min | min(a, b) | min(x, 100) |
| max | max(a, b) | max(x, 0) |
| round | round(x) | round(x * 1000) / 1000 |
| trunc | trunc(x) | trunc(x) |
| floor | floor(x) | floor(x) |
| ceil | ceil(x) | ceil(x) |
| sin | sin(x) | sin(PI/6) |
| cos | cos(x) | cos(PI/3) |
| tan | tan(x) | tan(PI/8) |
| asin | asin(x) | asin(0.5) |
| acos | acos(x) | acos(0.5) |
| atan | atan(x) | atan(1) |
| atan2 | atan2(y, x) | atan2(1, x) |
| sinh | sinh(x) | sinh(1) |
| cosh | cosh(x) | cosh(1) |
| tanh | tanh(x) | tanh(1) |
| ln | ln(x) | ln(x) |
| log | log(x) | log(100) |
| log2 | log2(x) | log2(8) |
| exp | exp(x) | exp(1) |
| degrees | degrees(x) | degrees(PI/2) |
| radians | radians(x) | radians(180) |
| percent | percent(value, total) | percent(25, 100) |
| factorial | factorial(n) | factorial(5) |
| gcd | gcd(a, b) | gcd(12, 8) |
| lcm | lcm(a, b) | lcm(12, 8) |
| clamp | clamp(value, min, max) | clamp(x, 0, 100) |
| sign | sign(x) | sign(-5) |
| nthRoot | nthRoot(value, n) | nthRoot(8, 3) |
数式のルール
- x は入力値です。エイリアス値も利用可能です。
- 明示的な乗算を使用します(例:2 * PI、2PI ではない)。
- 利用可能な定数:PI, E, PHI, SQRT2, SQRT3, LN2, LN10, LOG2E, LOG10E, AVOGADRO, PLANCK, LIGHT_SPEED, GRAVITY, BOLTZMANN。
- 三角関数の角度はラジアンです(変換にはヘルパー関数 degrees() と radians() を使用)。
- 他のカスタム単位を名前(snake_case)または記号で参照します。現在の toBase 値は定数として挿入されます。
- べき乗には ** を使用します(エンジンは ^ を ** に自動変換します)。
- スマートな入力正規化:×、÷、π、²、³ は自動的に *、/、PI、^2、^3 に変換されます。
- 利用可能なヘルパー関数:degrees(), radians(), percent(), factorial(), gcd(), lcm(), clamp(), sign(), nthRoot()。
- 強化されたエラー検出により、一般的な間違い(負数の対数、負数の平方根、ゼロ除算)を防ぎます。
- カスタム単位の参照:数式内で他の単位を??数として使用します(例:「x * A」、ここで A は別のカスタム単位)。
- 空白は無視されます。優先順位を制御するために括弧を使用します。
- 数式は、有効な入力に対して有限の数値を生成する必要があります。
- 明示的な乗算を使用します(例:2 * PI)。
- 三角関数の角度はラジアンです。
- log(x) は底10、ln(x) は自然対数(底 e)です。
次元解析と戦略
このカスタムシステムは単位に依存しません。関連する単位を同じ'基本単位'(または共有参照)に固定してファミリーをモデル化します。設計するファミリー全体で意味の一貫性を保ちます。
モデリング戦略
| 戦略 | 使用場面 | 注意点 |
|---|---|---|
| 直接係数 | 線形関係(例:1 foo = k × 基本)。 | 定数を使用します(x なし)。安定かつ正確。 |
| べき乗スケーリング | 基本スケールから派生(k^2, k^3)。 | pow(k, n) を使用します。ここで k は基本スケールです。 |
| 比率または正規化 | 参照レベルに対して定義された単位(例:x / ref)。 | インデックスのような尺度に便利です。数式内で ref を明示的に保ちます。 |
| 対数スケール | 知覚または電力比スケール(例:dB スタイル 10 * log(x/ref))。 | ドメインが正であることを確認し、参照値を文書化します。 |
| アフィン写像 | オフセットを伴う稀なケース(a * x + b)。 | オフセットはゼロ点を変更します—概念的に正当化される場合にのみ適用します。 |
エディターと検証
名前、記号(最大6文字)、カラータグ、参照(基本単位または別のカスタム単位)、および係数/数式を持つ単位を作成します。エディターは、強化されたエラー検出機能で数式をリアルタイムに検証し、循環参照を防ぎます。
- 参照オプションには'基本単位'と既存のカスタム単位が含まれます。サイクルを作成する可能性のある安全でないオプションは自動的に除外されます。
- 変数:入力値には x(または value)を使用します。他のカスタム単位を snake_case 名または記号で参照します。現在の toBase 値は定数として挿入されます。
- サポートされている定数:PI, E, PHI, SQRT2, SQRT3, LN2, LN10, LOG2E, LOG10E, AVOGADRO, PLANCK, LIGHT_SPEED, GRAVITY, BOLTZMANN。
- コア関数:sqrt, cbrt, pow, abs, min, max, round, trunc, floor, ceil, sin, cos, tan, asin, acos, atan, atan2, sinh, cosh, tanh, ln, log, log2, exp。
- ヘルパー関数:degrees(), radians(), percent(), factorial(), gcd(), lcm(), clamp(), sign(), nthRoot() が強化された UX を提供します。
- 演算子:+、-、*、/、**(べき乗)。スマートな入力正規化:×、÷、π、²、³ は自動的に変換されます。
- リアルタイム検証とプレビュー(例:10 x → 結果)、複雑度の分類(単純/中程度/複雑)、および文脈に応じた提案。
- 強化されたエラー検出は、一般的な間違い(非正数の対数、負数の平方根、ゼロ除算)を捕捉します。
- 高度なサイクル検出により、単位が自身に(直接または間接的に)依存するのを明確なエラーメッセージで防ぎます。
- カテゴリ別の例、クリック可能な数式スニペット、および簡単な挿入のためのカスタム単位ボタンを備えたインタラクティブなヘルプパネル。
ベストプラクティス
- 可能であれば定数係数を優先します。数式は必要な場合にのみ使用します。
- 安定しており、広く理解され、変更される可能性が低い参照単位を選択します。
- 循環参照の連鎖を避けます。グラフを非巡回的に保ちます。
- サンプル値を追加し、独立した計算機や既知の恒等式で相互検証します。
- 記号を短く、一意に保ち、組織内で文書化します。
- 対数を使用する場合は、参照値、底、および x の意図するドメインを記録します。
- 3〜5つの代表的な値でテストし、往復変換を確認します。
- 循環参照を避け、安定した参照単位を選択します。
- 仮定(ドメイン、オフセット、典型的な範囲)を文書化します。
スターターテンプレートと例
これらの例は、このカスタム専用システムにおける一般的なモデリングパターンを示しています。必要に応じて定数と参照を置き換えてください。
| 名前 | 数式 | 参照 | 注意点 |
|---|---|---|---|
| 基本スケール単位 (foo) | 0.3048 | 基本単位 | 1 foo = 0.3048 × 基本を定義します(単純な線形係数)。 |
| べき乗スケール (foo²) | pow(0.3048, 2) | 基本単位 | 基本スケールから派生(k^2)。 |
| 体積スケール (foo³) | pow(0.3048, 3) | 基本単位 | 基本スケールから派生(k^3)。 |
| 参照からのインデックス | x / 42 | 基本単位 | 固定レベルで正規化します(ドメイン x > 0)。 |
| 電力比 (dB スタイル) | 10 * log(x / 0.001) | 基本単位 | 1 mW に対する対数尺度(例)。x > 0 であることを確認してください。 |
| 幾何学的係数 | 2 * PI * 0.5 | 基本単位 | 定数と乗算の例。 |
| 他のカスタム単位を参照 | A * 2 | カスタム単位 A | 数式内で他の単位の記号/名前を定数として使用します。 |
| 複雑な単位関係 | sqrt(x^2 + base_length^2) | 基本単位 | カスタム単位 'base_length' を定数として使用したピタゴラスの関係。 |
| オフセット付きスケール単位 | x * scale_factor + offset_unit | 基本単位 | 他の2つのカスタム単位を定数として使用した線形変換。 |
| 参照単位のパーセンテージ | percent(x, reference_value) | 基本単位 | ヘルパー関数を使用して、入力を別のカスタム単位のパーセンテージとして表現します。 |
| クランプされた単位範囲 | clamp(x * multiplier, min_unit, max_unit) | 基本単位 | clamp ヘルパーを使用して、2つのカスタム単位定数の間に値を制約します。 |
| GCD を使用した単位比率 | x / gcd(x, common_divisor) | 基本単位 | カスタム単位定数と共に GCD ヘルパーを使用した数学的関係。 |
| 角度変換チェーン | degrees(x * PI / reference_angle) | カスタム角度単位 | カスタム角度単位と degrees() ヘルパー関数を使用して度に変換します。 |
ガバナンスとコラボレーション
- 所有者とレビュー日を含む、承認されたカスタム単位のカタログを維持します。
- 定義が進化する際にはバージョニングを使用します。記号の破壊的変更を避けます。
- 定数と参照の出所(標準、文献、内部文書)を記録します。
- 検証テスト(範囲チェック、サンプル変換、単調性)を自動化します。
よくある質問
定数係数と数式のどちらを使用すべきですか?
関係が線形で固定されている場合は、定数係数を優先します。マッピングが x に依存する場合や関数(べき乗、対数、三角関数)が必要な場合にのみ数式を使用します。
参照単位はどのように選択すればよいですか?
意図する次元を捉え、安定しており、広く理解されている単位を選択します(例:長さにはメートル、面積には m²)。参照は次元的な意味を固定します。
角度は度ですか、ラジアンですか?
ラジアンです。三角関数を使用する前に、度を PI/180 で乗算して変換します。
カスタム単位を連鎖させることはできますか?
はい、ただしサイクルを避けてください。グラフを非巡回的に保ち、明瞭さを保つために連鎖を文書化します。