VIDEO LESSON
JavaScriptのMath.cbrt():体積から立方体の辺の長さを求めるの解説動画
再生時間 8:24動画を別のタブで開く ↗
動画の字幕・文字起こしを読む
再生中の字幕を濃い黒で表示し、一番上に追従します。字幕の行を選ぶと、その位置から再生できます。
- 0:00こんにちは。
- 0:00今回はジャバスクリプトのマス・シービーアールティーを紹介します。
- 0:06これは、数値の立方根を求める標準のメソッドです。
- 0:10立方体の体積は、一辺の長さを三回掛けると求められます。
- 0:14逆に、体積が分かっているとき、辺の長さへ戻す計算が立方根です。
- 0:19たとえば体積が六十四なら、辺は四です。
- 0:22なぜなら四かける四かける四が六十四だからです。
- 0:26名前のシービーアールティーは、英語のキューブ・ルート、つまり立方根に由来します。
- 0:32寸法の計算や立体モデルの拡大など、体積と長さを変換する場面で役立ちます。
- 0:38この動画では、基本の書き方、特殊な値の扱い、そして体積を検証してから辺を求める実例までを、
- 0:43順番に確かめていきます。
- 0:47まず動作環境です。
- 0:49マス・シービーアールティーはジャバスクリプト標準の機能で、ブラウザーとノード・ジェイエスの両方で利用できます。
- 0:57二千十五年七月以降、主要ブラウザーを横断して使える機能とされており、現行のクローム、
- 1:02エッジ、ファイアフォックス、サファリが対象です。
- 1:06記事のサンプルはノード・ジェイエス二十二系または二十四系を想定し、追加パッケージや実験的な設定は使いません。
- 1:14古いブラウザーや組み込みの表示部品では、使う前にタイプオブで関数かどうかを確認してください。
- 1:21結果がフォルスなら、その環境ではそのまま実行できません。
- 1:25ビルドで文法を変換しても、存在しない標準機能そのものは追加されない点も覚えておいてください。
- 1:32基本の書き方を見ましょう。
- 1:34呼び出し方は、マス・シービーアールティー、かっこ、エックスです。
- 1:39エックスには立方根を求めたい数値を渡し、戻り値としてナンバー型の計算結果をそのまま受け取ります。
- 1:47入力そのものを書き換えることはありません。
- 1:51二十七の立方根は三、六十四は四、百二十五は五です。
- 1:55マスはコンストラクターではないため、新しくインスタンスを作る必要はありません。
- 2:02いつもマス・シービーアールティーという形で直接呼び出してください。
- 2:07戻り値はプロミスではなく同期的に得られる数値なので、アウェイトやコールバックも不要です。
- 2:15通常の値と特殊な値の結果をまとめて確認します。
- 2:20六十四の立方根は四、マイナス八の立方根はマイナス二です。
- 2:25マイナス二を三回掛けるとマイナス八になるため、立方根は負数にも定義できるのです。
- 2:34ゼロの立方根はゼロ、無限大は無限大、マイナス無限大はマイナス無限大が返ります。
- 2:42ナン、つまり数値でない特殊な値を渡しても例外は発生せず、結果がナンになります。
- 2:50無限大も自動では拒否されません。
- 2:53つまり、計算が成功して見えても、入力が異常だった可能性は残ります。
- 3:00表示する前に、入力が妥当かどうかを別に確かめる設計が大切です。
- 3:06また、ビッグイントを直接渡す用途には対応していないため、扱うのは通常の数値と考えてください。
- 3:16ここで大切な区別をします。
- 3:18立方根としては、マイナス八からマイナス二が返るのは数学的に正しい結果です。
- 3:24マイナス二十七ならマイナス三になります。
- 3:28ところが、体積として考えるなら、負の体積は現実には存在しません。
- 3:33計算できることと、業務の入力として受け入れてよいことは別問題なのです。
- 3:39マス・シービーアールティー自体は、用途を知らないので、負数を渡せばそのまま立方根を返してしまいます。
- 3:47だからこそ、体積を求める処理では、呼び出しの前に負数を拒否する検証を置きます。
- 3:54次の実例では、その検証を小さな関数にまとめます。
- 3:58実例として、体積から辺を求めるエッジフロムボリュームという関数を作ります。
- 4:05最初に、引数がナンバー型で、かつ有限の数値かどうかを調べます。
- 4:11文字列や無限大、ナンはここでタイプエラーとして止めます。
- 4:16次に、値がゼロ未満でないかを確認し、負数ならレンジエラーとして報告します。
- 4:24この順番がポイントで、まず数として扱えるかを見て、次に体積として許される範囲かを見ます。
- 4:32どちらの検査も通った場合だけ、マス・シービーアールティーで立方根を計算して返します。
- 4:40検証と計算の役割を分けることで、読みやすく、直しやすい関数になります。
- 4:47計算結果を読みます。
- 4:49体積ゼロなら辺はゼロ、八なら二、六十四なら四、百二十五なら五です。
- 4:54いずれも、辺を三回掛けると元の体積に戻ることを確かめられます。
- 5:00表示では、トゥーフィックスドでに、小数点以下二桁へそろえてから単位をつけています。
- 5:06ただし、トゥーフィックスドの戻り値は文字列です。
- 5:10見た目を整えた後の値を、そのまま次の計算に使うのは避けてください。
- 5:16続けて計算する場合は、整形する前の数値であるエッジを使ってください。
- 5:21表示用の整形と、計算用の値を分けて扱うことが、実務での小さなコツです。
- 5:27一つずつ三回掛けて確かめる習慣をつけると、立方根の感覚がつかみやすくなります。
- 5:33不正な入力を渡した場合も確認します。
- 5:36マイナス八は、数値としては有限ですが、体積の範囲を外れるためレンジエラーになります。
- 5:42文字列の六十四は、数字に見えても型が違うためタイプエラーです。
- 5:47無限大とナンも、有限でない数値としてタイプエラーで止まります。
- 5:51ここで注目したいのは、文字列の六十四を表示すると引用符が付かず、数値の六十四と同じ見た目になることです。
- 5:59見た目だけでは区別できないからこそ、型の検査が欠かせません。
- 6:03これらの結果は、ノード・ジェイエスの実機でも確認済みで、記事の期待出力と一致しました。
- 6:09実行方法は二通りです。
- 6:11ブラウザーでは、通常のウェブページを開き、開発者ツールのコンソールへ実例のコード全体を貼り付けて実行します。
- 6:18画面要素を操作しないため、専用のエイチティーエムエルは要りません。
- 6:23ノード・ジェイエスでは、コードをキューブエッジ・ジェイエスというファイルに保存し、
- 6:28ターミナルでノード、スペース、ファイル名と入力して実行します。
- 6:33最初にバージョンを確認するコマンドも併せて実行すると安心です。
- 6:37ウェブサーバーの起動や、エヌピーエム・インストールは必要ありません。
- 6:42どちらの方法でも、出力先に結果がそのまま表示されます。
- 6:45コード全体を関数で囲んでいるので、繰り返し実行しても変数名が衝突しにくい構成になっています。
- 6:52失敗例と制約を三つ押さえます。
- 6:54一つ目は、分数の累乗で代用すると負数で失敗することです。
- 6:58マス・パウでマイナス八の三分の一乗を計算すると、結果はナンになってしまいます。
- 7:03立方根が目的なら、専用のマス・シービーアールティーを使ってください。
- 7:08二つ目は単位です。
- 7:09このメソッドは単位を知らないため、リットルの数値をそのまま渡しても、センチメートルにはなりません。
- 7:16八リットルなら八千立方センチメートルへ変換してから計算します。
- 7:21三つ目は精度です。
- 7:22二の立方根のような結果は近似値なので、三回掛け直した値が元の数と完全に一致するとは限りません。
- 7:29合否の判定では、許容できる誤差を決めて比べてください。
- 7:33活用場面とまとめです。
- 7:35立方体を仮定した容器や教材で、体積から辺の長さを表示するのが基本の使い方です。
- 7:41立体モデルでは、体積比の立方根から拡大率を決められます。
- 7:46たとえば体積を八倍にしたい場合、辺は八倍ではなく二倍です。
- 7:51辺を八倍にすると体積は百倍どころか五百十二倍になってしまうため、体積の倍率と長さの倍率を区別することが大切です。
- 8:01実際の容器が直方体など複雑な形なら、体積だけから辺は一意に決まらない点にも注意してください。
- 8:09まずは形の前提と単位を決め、入力検証と表示を加えて、小さく試してみてください。
- 8:15お疲れさまでした。
- 8:17迷ったときは、辺を三回掛けて元の体積に戻るかどうかで、結果を確かめてください。
この動画で学べること
Math.cbrt()で立方根を計算し、体積から立方体の辺の長さを求める方法を解説。引数・戻り値、ブラウザーとNode.jsの実行手順、負数の扱い、入力検証と計算精度の制約を学べます。
解説記事・サンプルコードを読む:JavaScriptのMath.cbrt():体積から立方体の辺の長さを求める →