WEBVTT

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

2
00:00:00.980 --> 00:00:04.246
今回はアレイ・イズ・アレイを紹介します。

3
00:00:04.246 --> 00:00:09.472
これは、渡した値が配列かどうかを判定するための静的メソッドです。

4
00:00:09.472 --> 00:00:16.168
配列であればトゥルー、配列でなければフォルスという、わかりやすい真偽値が返ります。

5
00:00:16.168 --> 00:00:21.830
この動画では、書き方と一つの引数、戻り値、記事の基本例であるエーピーアイレスポンスの検証、

6
00:00:21.830 --> 00:00:27.491
配列風オブジェクトの境界例、タイプオブでは判定できない理由、エブリーと組み合わせた実例まで、

7
00:00:27.491 --> 00:00:33.153
実行結果と一緒に学びます。

8
00:00:33.153 --> 00:00:40.992
どこから来たデータかわからない場合でも、まず配列かどうかを確かめれば、安全に処理を始められます。

9
00:00:40.992 --> 00:00:46.708
判断の結果が真偽値で返るため、処理を分ける条件としてそのまま書けます。

10
00:00:46.708 --> 00:00:48.293
まず動作環境を確認します。

11
00:00:48.293 --> 00:00:51.951
アレイ・イズ・アレイは、古くから使える基本的なメソッドです。

12
00:00:51.951 --> 00:00:55.731
記事の互換性情報では、クロームでは四以降、エッジでは十二以降、ファイアーフォックスでは四以降、

13
00:00:55.731 --> 00:00:59.511
サファリでは五以降で使えます。

14
00:00:59.511 --> 00:01:03.291
ノード・ジェイエスではゼロ・一ゼロ・ゼロ以降に対応しています。

15
00:01:03.291 --> 00:01:07.315
記事が示すこれらの数値はエムディーエヌの互換性データに基づく目安で、対応範囲は非常に広く、

16
00:01:07.315 --> 00:01:11.339
現在の環境で使えない場面はまずありません。

17
00:01:11.339 --> 00:01:16.704
追加の読み込みは不要で、アレイに最初から関数として備わっていることを実機で確認済みです。

18
00:01:16.704 --> 00:01:20.240
古くからあるメソッドなので、安心して使える部類に入ります。

19
00:01:20.240 --> 00:01:21.784
書き方を確認します。

20
00:01:21.784 --> 00:01:29.039
大文字で始まるアレイに続けて、イズ・アレイと書き、カッコの中に判定したい値を一つだけ渡します。

21
00:01:29.039 --> 00:01:36.757
個々の配列から呼び出すのではなく、アレイという型そのものに付いている静的メソッドである点が特徴です。

22
00:01:36.757 --> 00:01:40.307
引数の値は型変換されず、そのまま判定されます。

23
00:01:40.307 --> 00:01:46.790
戻り値は、配列であればトゥルー、それ以外はフォルスで、渡した値自体は変更されません。

24
00:01:46.790 --> 00:01:55.280
スライドの例では、数値の配列がトゥルーになり、文字列エー・ビー・シーはフォルスになることを実機で確認しました。

25
00:01:55.280 --> 00:01:57.904
結果を条件分岐にそのまま使えます。

26
00:01:57.904 --> 00:02:02.844
配列の要素を数える必要はなく、外見の形だけを見て答えが返ります。

27
00:02:02.844 --> 00:02:04.540
記事の基本例を見ます。

28
00:02:04.540 --> 00:02:10.400
ペイロードというオブジェクトの中に、タグズという配列が入っているデータです。

29
00:02:10.400 --> 00:02:16.877
このタグズが本当に配列かどうかを、アレイ・イズ・アレイで調べるコードになっています。

30
00:02:16.877 --> 00:02:23.354
実行するとトゥルーが返り、記事の期待出力と一致し、ノードの実機結果とも一致しました。

31
00:02:23.354 --> 00:02:29.523
記事が説明するように、これはエーピーアイレスポンスの配列部分を検証する場面です。

32
00:02:29.523 --> 00:02:34.689
受け取ったデータが想定と違う形だった場合に、そのまま配列のメソッドを呼ぶとエラーになるため、

33
00:02:34.689 --> 00:02:39.855
処理を始める前の門番として使うと安全です。

34
00:02:39.855 --> 00:02:44.944
配列だとわかってから次の処理へ進む、という順番を意識してください。

35
00:02:44.944 --> 00:02:47.719
さまざまな値で判定結果を確かめます。

36
00:02:47.719 --> 00:02:51.496
要素が一つも入っていない空の配列でも、配列であることに変わりはないため、

37
00:02:51.496 --> 00:02:55.273
結果はトゥルーになります。

38
00:02:55.273 --> 00:03:02.365
一方、ジャバスクリプトという文字列は、文字の並びではありますが配列ではないためフォルスです。

39
00:03:02.365 --> 00:03:06.836
数値の百二十三や、通常のオブジェクトもフォルスになります。

40
00:03:06.836 --> 00:03:13.465
値が入っていないことを表すアンディファインドもフォルスであることを実機で確認しました。

41
00:03:13.465 --> 00:03:18.553
例外が投げられることはなく、どんな値を渡してもトゥルーかフォルスで答えが返るため、

42
00:03:18.553 --> 00:03:23.640
入力チェックの最初の段階に置きやすいメソッドです。

43
00:03:23.640 --> 00:03:29.036
空かどうかと、配列かどうかは別の確認だという点も意識しておきましょう。

44
00:03:29.036 --> 00:03:31.200
記事の境界例を確認します。

45
00:03:31.200 --> 00:03:40.354
ゼロという添字と、レングスという長さの項目を持つオブジェクトは、見た目が配列に似ている配列風オブジェクトです。

46
00:03:40.354 --> 00:03:47.012
しかし、結果はフォルスになることを実機で確認し、記事の期待出力とも一致しました。

47
00:03:47.012 --> 00:03:50.674
また、値がないことを表すナルもフォルスです。

48
00:03:50.674 --> 00:03:55.667
記事の期待出力はどちらもフォルスで、実機結果と一致しました。

49
00:03:55.667 --> 00:04:01.493
添字と長さがあるだけでは配列とは認められない、という厳密さが大切です。

50
00:04:01.493 --> 00:04:09.648
配列風の値を配列として扱いたい場合は、あとで学ぶアレイ・フロムなどで本物の配列へ変換してください。

51
00:04:09.648 --> 00:04:14.808
見た目の似通い方に惑わされないことが、この判定を使う意味です。

52
00:04:14.808 --> 00:04:17.953
タイプオブでは判定できない理由を確認します。

53
00:04:17.953 --> 00:04:24.673
タイプオブは値の種類を文字列で返す演算子ですが、配列に対して使うとオブジェクトと返ってきます。

54
00:04:24.673 --> 00:04:30.392
通常のオブジェクトに対しても同じくオブジェクトと返るため、両者を区別できません。

55
00:04:30.392 --> 00:04:34.824
さらに、ナルに対してもオブジェクトと返ることが知られています。

56
00:04:34.824 --> 00:04:40.829
記事も、タイプオブの配列はオブジェクトなので配列判定には使えない、と明記しています。

57
00:04:40.829 --> 00:04:44.117
スライドの三つの例はすべて実機で確認済みです。

58
00:04:44.117 --> 00:04:50.979
配列かどうかを知りたい場面では、タイプオブではなく、専用のアレイ・イズ・アレイを使ってください。

59
00:04:50.979 --> 00:04:57.556
大まかな種類の確認にはタイプオブ、配列の厳密な確認にはイズ・アレイ、と役割を分けてください。

60
00:04:57.556 --> 00:04:59.409
実務に近い実例を見ます。

61
00:04:59.409 --> 00:05:08.210
記事が紹介しているように、配列であることを確認したあとに、エブリーと組み合わせて各要素の型まで確認する使い方です。

62
00:05:08.210 --> 00:05:12.147
スライドの例では、タグズが配列であることと、すべての要素が文字列であることを、

63
00:05:12.147 --> 00:05:16.084
あわせて判定しています。

64
00:05:16.084 --> 00:05:19.636
結果はトゥルーになることを実機で確認しました。

65
00:05:19.636 --> 00:05:26.121
ここで大切なのは、配列であることと、要素が期待する型かどうかは別の話だという点です。

66
00:05:26.121 --> 00:05:29.054
記事もこの点を注意として挙げています。

67
00:05:29.054 --> 00:05:33.686
二段階で確認することで、受け取ったデータをより堅く扱えます。

68
00:05:33.686 --> 00:05:38.936
短いコードでも、二つの確認を重ねることで入力への信頼度が上がります。

69
00:05:38.936 --> 00:05:44.024
もう一つの実例として、一件と複数件をそろえる使い方を紹介します。

70
00:05:44.024 --> 00:05:50.701
データによって、値が一つだけ届く場合と、配列で複数届く場合が混在することがあります。

71
00:05:50.701 --> 00:05:55.392
トゥー・リストという関数では、アレイ・イズ・アレイで判定し、配列ならそのまま、

72
00:05:55.392 --> 00:06:00.082
配列でなければ配列で包んで返しています。

73
00:06:00.082 --> 00:06:09.304
シーエスエスという単独の文字列は、要素が一つの配列になり、もともと配列のものはそのまま残ることを実機で確認しました。

74
00:06:09.304 --> 00:06:16.458
形を先にそろえておくことで、その後の処理を一通りで書けるようになり、分岐が散らかりません。

75
00:06:16.458 --> 00:06:21.228
実際の入力検証でもよく使われる、基本的な整形のパターンです。

76
00:06:21.228 --> 00:06:23.195
注意点を三つ確認します。

77
00:06:23.195 --> 00:06:32.866
まず、関数の中で使えるアーギュメンツという引数一覧のオブジェクトは、配列風ではありますが配列ではないためフォルスです。

78
00:06:32.866 --> 00:06:38.848
次に、ユーイント・エイト・アレイのような型付き配列も、名前にアレイと付いていますが、

79
00:06:38.848 --> 00:06:44.831
通常の配列ではないためフォルスになることを実機で確認しました。

80
00:06:44.831 --> 00:06:51.059
そして、どんな値を渡しても例外は出ず、フォルスが返る点も覚えておきましょう。

81
00:06:51.059 --> 00:06:55.239
似ているから配列だろうと決めつけず、必ずアレイ・イズ・アレイで確かめる習慣が、

82
00:06:55.239 --> 00:06:59.419
思わぬエラーを防ぎます。

83
00:06:59.419 --> 00:07:04.336
名前や見た目だけで判断せず、実行して確かめることが大切です。

84
00:07:04.336 --> 00:07:05.296
まとめです。

85
00:07:05.296 --> 00:07:13.292
アレイ・イズ・アレイは、渡した値が配列かどうかを、トゥルーかフォルスの真偽値で返す静的メソッドです。

86
00:07:13.292 --> 00:07:15.371
判断のポイントは三つです。

87
00:07:15.371 --> 00:07:21.289
まず、添字とレングスを持つ配列風オブジェクトや、ナルはフォルスになること。

88
00:07:21.289 --> 00:07:29.286
次に、タイプオブでは配列と通常のオブジェクトを区別できないため、配列判定にはこのメソッドを使うこと。

89
00:07:29.286 --> 00:07:37.602
そして、配列であることと要素の型が正しいことは別なので、必要に応じてエブリーなどと組み合わせることです。

90
00:07:37.602 --> 00:07:45.119
まずは記事の基本例と境界例を実行し、入力を一つ変えて、結果を予測してから確かめてみてください。

91
00:07:45.119 --> 00:07:46.558
お疲れさまでした。

92
00:07:46.558 --> 00:07:52.316
データの形を最初に確かめる習慣は、この先の配列処理すべてに生きてきます。
