WEBVTT

1
00:00:00.000 --> 00:00:00.974
こんにちは。

2
00:00:00.974 --> 00:00:06.171
今回はジャバスクリプトのマス・シービーアールティーを紹介します。

3
00:00:06.171 --> 00:00:10.069
これは、数値の立方根を求める標準のメソッドです。

4
00:00:10.069 --> 00:00:14.454
立方体の体積は、一辺の長さを三回掛けると求められます。

5
00:00:14.454 --> 00:00:19.488
逆に、体積が分かっているとき、辺の長さへ戻す計算が立方根です。

6
00:00:19.488 --> 00:00:22.574
たとえば体積が六十四なら、辺は四です。

7
00:00:22.574 --> 00:00:26.309
なぜなら四かける四かける四が六十四だからです。

8
00:00:26.309 --> 00:00:32.805
名前のシービーアールティーは、英語のキューブ・ルート、つまり立方根に由来します。

9
00:00:32.805 --> 00:00:38.651
寸法の計算や立体モデルの拡大など、体積と長さを変換する場面で役立ちます。

10
00:00:38.651 --> 00:00:43.280
この動画では、基本の書き方、特殊な値の扱い、そして体積を検証してから辺を求める実例までを、

11
00:00:43.280 --> 00:00:47.908
順番に確かめていきます。

12
00:00:47.908 --> 00:00:49.220
まず動作環境です。

13
00:00:49.220 --> 00:00:57.241
マス・シービーアールティーはジャバスクリプト標準の機能で、ブラウザーとノード・ジェイエスの両方で利用できます。

14
00:00:57.241 --> 00:01:02.053
二千十五年七月以降、主要ブラウザーを横断して使える機能とされており、現行のクローム、

15
00:01:02.053 --> 00:01:06.866
エッジ、ファイアフォックス、サファリが対象です。

16
00:01:06.866 --> 00:01:14.741
記事のサンプルはノード・ジェイエス二十二系または二十四系を想定し、追加パッケージや実験的な設定は使いません。

17
00:01:14.741 --> 00:01:21.449
古いブラウザーや組み込みの表示部品では、使う前にタイプオブで関数かどうかを確認してください。

18
00:01:21.449 --> 00:01:25.532
結果がフォルスなら、その環境ではそのまま実行できません。

19
00:01:25.532 --> 00:01:32.240
ビルドで文法を変換しても、存在しない標準機能そのものは追加されない点も覚えておいてください。

20
00:01:32.240 --> 00:01:34.439
基本の書き方を見ましょう。

21
00:01:34.439 --> 00:01:39.851
呼び出し方は、マス・シービーアールティー、かっこ、エックスです。

22
00:01:39.851 --> 00:01:47.969
エックスには立方根を求めたい数値を渡し、戻り値としてナンバー型の計算結果をそのまま受け取ります。

23
00:01:47.969 --> 00:01:51.520
入力そのものを書き換えることはありません。

24
00:01:51.520 --> 00:01:55.748
二十七の立方根は三、六十四は四、百二十五は五です。

25
00:01:55.748 --> 00:02:02.344
マスはコンストラクターではないため、新しくインスタンスを作る必要はありません。

26
00:02:02.344 --> 00:02:07.925
いつもマス・シービーアールティーという形で直接呼び出してください。

27
00:02:07.925 --> 00:02:15.367
戻り値はプロミスではなく同期的に得られる数値なので、アウェイトやコールバックも不要です。

28
00:02:15.367 --> 00:02:20.133
通常の値と特殊な値の結果をまとめて確認します。

29
00:02:20.133 --> 00:02:25.936
六十四の立方根は四、マイナス八の立方根はマイナス二です。

30
00:02:25.936 --> 00:02:34.225
マイナス二を三回掛けるとマイナス八になるため、立方根は負数にも定義できるのです。

31
00:02:34.225 --> 00:02:42.307
ゼロの立方根はゼロ、無限大は無限大、マイナス無限大はマイナス無限大が返ります。

32
00:02:42.307 --> 00:02:50.388
ナン、つまり数値でない特殊な値を渡しても例外は発生せず、結果がナンになります。

33
00:02:50.388 --> 00:02:53.704
無限大も自動では拒否されません。

34
00:02:53.704 --> 00:03:00.543
つまり、計算が成功して見えても、入力が異常だった可能性は残ります。

35
00:03:00.543 --> 00:03:06.967
表示する前に、入力が妥当かどうかを別に確かめる設計が大切です。

36
00:03:06.967 --> 00:03:16.499
また、ビッグイントを直接渡す用途には対応していないため、扱うのは通常の数値と考えてください。

37
00:03:16.499 --> 00:03:18.659
ここで大切な区別をします。

38
00:03:18.659 --> 00:03:24.809
立方根としては、マイナス八からマイナス二が返るのは数学的に正しい結果です。

39
00:03:24.809 --> 00:03:28.132
マイナス二十七ならマイナス三になります。

40
00:03:28.132 --> 00:03:33.451
ところが、体積として考えるなら、負の体積は現実には存在しません。

41
00:03:33.451 --> 00:03:39.267
計算できることと、業務の入力として受け入れてよいことは別問題なのです。

42
00:03:39.267 --> 00:03:47.577
マス・シービーアールティー自体は、用途を知らないので、負数を渡せばそのまま立方根を返してしまいます。

43
00:03:47.577 --> 00:03:54.058
だからこそ、体積を求める処理では、呼び出しの前に負数を拒否する検証を置きます。

44
00:03:54.058 --> 00:03:58.047
次の実例では、その検証を小さな関数にまとめます。

45
00:03:58.047 --> 00:04:05.298
実例として、体積から辺を求めるエッジフロムボリュームという関数を作ります。

46
00:04:05.298 --> 00:04:11.374
最初に、引数がナンバー型で、かつ有限の数値かどうかを調べます。

47
00:04:11.374 --> 00:04:16.861
文字列や無限大、ナンはここでタイプエラーとして止めます。

48
00:04:16.861 --> 00:04:24.113
次に、値がゼロ未満でないかを確認し、負数ならレンジエラーとして報告します。

49
00:04:24.113 --> 00:04:32.736
この順番がポイントで、まず数として扱えるかを見て、次に体積として許される範囲かを見ます。

50
00:04:32.736 --> 00:04:40.968
どちらの検査も通った場合だけ、マス・シービーアールティーで立方根を計算して返します。

51
00:04:40.968 --> 00:04:47.827
検証と計算の役割を分けることで、読みやすく、直しやすい関数になります。

52
00:04:47.827 --> 00:04:49.475
計算結果を読みます。

53
00:04:49.475 --> 00:04:54.912
体積ゼロなら辺はゼロ、八なら二、六十四なら四、百二十五なら五です。

54
00:04:54.912 --> 00:05:00.019
いずれも、辺を三回掛けると元の体積に戻ることを確かめられます。

55
00:05:00.019 --> 00:05:06.774
表示では、トゥーフィックスドでに、小数点以下二桁へそろえてから単位をつけています。

56
00:05:06.774 --> 00:05:10.728
ただし、トゥーフィックスドの戻り値は文字列です。

57
00:05:10.728 --> 00:05:16.165
見た目を整えた後の値を、そのまま次の計算に使うのは避けてください。

58
00:05:16.165 --> 00:05:21.767
続けて計算する場合は、整形する前の数値であるエッジを使ってください。

59
00:05:21.767 --> 00:05:27.533
表示用の整形と、計算用の値を分けて扱うことが、実務での小さなコツです。

60
00:05:27.533 --> 00:05:33.959
一つずつ三回掛けて確かめる習慣をつけると、立方根の感覚がつかみやすくなります。

61
00:05:33.959 --> 00:05:36.551
不正な入力を渡した場合も確認します。

62
00:05:36.551 --> 00:05:42.600
マイナス八は、数値としては有限ですが、体積の範囲を外れるためレンジエラーになります。

63
00:05:42.600 --> 00:05:47.064
文字列の六十四は、数字に見えても型が違うためタイプエラーです。

64
00:05:47.064 --> 00:05:51.529
無限大とナンも、有限でない数値としてタイプエラーで止まります。

65
00:05:51.529 --> 00:05:59.018
ここで注目したいのは、文字列の六十四を表示すると引用符が付かず、数値の六十四と同じ見た目になることです。

66
00:05:59.018 --> 00:06:03.338
見た目だけでは区別できないからこそ、型の検査が欠かせません。

67
00:06:03.338 --> 00:06:09.531
これらの結果は、ノード・ジェイエスの実機でも確認済みで、記事の期待出力と一致しました。

68
00:06:09.531 --> 00:06:11.053
実行方法は二通りです。

69
00:06:11.053 --> 00:06:18.527
ブラウザーでは、通常のウェブページを開き、開発者ツールのコンソールへ実例のコード全体を貼り付けて実行します。

70
00:06:18.527 --> 00:06:23.094
画面要素を操作しないため、専用のエイチティーエムエルは要りません。

71
00:06:23.094 --> 00:06:28.077
ノード・ジェイエスでは、コードをキューブエッジ・ジェイエスというファイルに保存し、

72
00:06:28.077 --> 00:06:33.059
ターミナルでノード、スペース、ファイル名と入力して実行します。

73
00:06:33.059 --> 00:06:37.350
最初にバージョンを確認するコマンドも併せて実行すると安心です。

74
00:06:37.350 --> 00:06:42.056
ウェブサーバーの起動や、エヌピーエム・インストールは必要ありません。

75
00:06:42.056 --> 00:06:45.792
どちらの方法でも、出力先に結果がそのまま表示されます。

76
00:06:45.792 --> 00:06:52.159
コード全体を関数で囲んでいるので、繰り返し実行しても変数名が衝突しにくい構成になっています。

77
00:06:52.159 --> 00:06:54.295
失敗例と制約を三つ押さえます。

78
00:06:54.295 --> 00:06:58.284
一つ目は、分数の累乗で代用すると負数で失敗することです。

79
00:06:58.284 --> 00:07:03.838
マス・パウでマイナス八の三分の一乗を計算すると、結果はナンになってしまいます。

80
00:07:03.838 --> 00:07:08.681
立方根が目的なら、専用のマス・シービーアールティーを使ってください。

81
00:07:08.681 --> 00:07:09.963
二つ目は単位です。

82
00:07:09.963 --> 00:07:16.942
このメソッドは単位を知らないため、リットルの数値をそのまま渡しても、センチメートルにはなりません。

83
00:07:16.942 --> 00:07:21.357
八リットルなら八千立方センチメートルへ変換してから計算します。

84
00:07:21.357 --> 00:07:22.639
三つ目は精度です。

85
00:07:22.639 --> 00:07:29.333
二の立方根のような結果は近似値なので、三回掛け直した値が元の数と完全に一致するとは限りません。

86
00:07:29.333 --> 00:07:33.179
合否の判定では、許容できる誤差を決めて比べてください。

87
00:07:33.179 --> 00:07:35.074
活用場面とまとめです。

88
00:07:35.074 --> 00:07:41.790
立方体を仮定した容器や教材で、体積から辺の長さを表示するのが基本の使い方です。

89
00:07:41.790 --> 00:07:46.613
立体モデルでは、体積比の立方根から拡大率を決められます。

90
00:07:46.613 --> 00:07:51.608
たとえば体積を八倍にしたい場合、辺は八倍ではなく二倍です。

91
00:07:51.608 --> 00:08:01.252
辺を八倍にすると体積は百倍どころか五百十二倍になってしまうため、体積の倍率と長さの倍率を区別することが大切です。

92
00:08:01.252 --> 00:08:09.175
実際の容器が直方体など複雑な形なら、体積だけから辺は一意に決まらない点にも注意してください。

93
00:08:09.175 --> 00:08:15.892
まずは形の前提と単位を決め、入力検証と表示を加えて、小さく試してみてください。

94
00:08:15.892 --> 00:08:17.442
お疲れさまでした。

95
00:08:17.442 --> 00:08:24.159
迷ったときは、辺を三回掛けて元の体積に戻るかどうかで、結果を確かめてください。
