WEBVTT

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

2
00:00:00.960 --> 00:00:03.202
今回はエブリーを紹介します。

3
00:00:03.202 --> 00:00:09.925
これは、配列のすべての要素が、決めた条件を満たしているかどうかを調べるメソッドです。

4
00:00:09.925 --> 00:00:16.008
全部が条件を満たせばトゥルー、一つでも外れる要素があればフォルスが返ります。

5
00:00:16.008 --> 00:00:20.490
たとえば、全員が合格点以上かどうか、全ての入力欄が埋まっているかどうか、

6
00:00:20.490 --> 00:00:24.972
といった全件チェックの場面で役立ちます。

7
00:00:24.972 --> 00:00:32.175
この動画では、書き方と引数、戻り値、記事の基本例、コールバックの引数、成人の確認の実例、

8
00:00:32.175 --> 00:00:39.378
よく似たサムとの違い、そして空配列や途中で判定が終わる注意点まで、実行結果と一緒に学びます。

9
00:00:39.378 --> 00:00:42.580
全て、という言葉が鍵になるメソッドです。

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

11
00:00:44.268 --> 00:00:48.422
記事の互換性情報では、クロームでは一以降、エッジでは十二以降、ファイアーフォックスでは一・五以降、

12
00:00:48.422 --> 00:00:52.577
サファリでは三以降で使えます。

13
00:00:52.577 --> 00:00:56.472
ノード・ジェイエスではゼロ・一〇・ゼロ以降に対応しています。

14
00:00:56.472 --> 00:01:00.366
これらの数値はエムディーエヌの互換性データに基づく目安です。

15
00:01:00.366 --> 00:01:05.040
エブリーは古くからある基本的な機能で、現在の主要な環境では広く使えます。

16
00:01:05.040 --> 00:01:10.753
追加の読み込みは不要で、配列に最初から関数として備わっていることを、実機で確認済みです。

17
00:01:10.753 --> 00:01:14.777
対応開始の版は、推奨版という意味ではない点にも注意しましょう。

18
00:01:14.777 --> 00:01:20.360
長く使われている分、解説やサンプルも豊富で、調べながら学びやすいメソッドでもあります。

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

20
00:01:21.949 --> 00:01:28.147
対象の配列に続けてエブリーと書き、カッコの中に、条件を判定する関数を渡します。

21
00:01:28.147 --> 00:01:34.344
リファレンス名にあるプロトタイプは、実際の呼び出しで毎回書く必要はありません。

22
00:01:34.344 --> 00:01:39.906
この判定する関数をコールバックと呼び、要素ごとに自動で呼び出されます。

23
00:01:39.906 --> 00:01:46.263
第二引数として、判定の中で使うディスを指定する値も渡せますが、通常は省略します。

24
00:01:46.263 --> 00:01:52.143
戻り値は、全部が条件を満たすときはトゥルー、そうでないときはフォルスです。

25
00:01:52.143 --> 00:02:00.089
フォーイーチのように結果を受け取らないメソッドとは違い、エブリーは判定結果そのものが成果になります。

26
00:02:00.089 --> 00:02:03.108
まずは、この基本の形を押さえましょう。

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

28
00:02:04.870 --> 00:02:09.997
八十点、七十点、九十点という三人分の点数が入った配列があります。

29
00:02:09.997 --> 00:02:15.605
この配列にエブリーを呼び、六十点以上かどうかを判定する処理を渡します。

30
00:02:15.605 --> 00:02:22.655
実行するとトゥルーが表示され、記事の期待出力と一致し、ノードの実機結果とも一致しました。

31
00:02:22.655 --> 00:02:26.981
三つとも六十点以上なので、全て満たす、という結果です。

32
00:02:26.981 --> 00:02:34.831
もし一人でも五十九点のような低い点数が混ざれば、結果はフォルスに変わることも実機で確認しています。

33
00:02:34.831 --> 00:02:40.920
条件と全要素、という二つの視点でコードを読むと、結果を予測しやすくなります。

34
00:02:40.920 --> 00:02:47.008
点数と合格ラインを自分で変えて実行すると、フォルスになる条件も体感できます。

35
00:02:47.008 --> 00:02:50.100
コールバックが受け取る引数を詳しく見ます。

36
00:02:50.100 --> 00:02:57.166
第一引数は今判定している要素の値、第二引数はゼロ始まりの位置、第三引数は対象の配列そのものです。

37
00:02:57.166 --> 00:03:06.440
スライドの例では、エーとビーの配列で、値と位置と長さを表示しながら、常にトゥルーを返して最後まで進む様子を実機で確認しました。

38
00:03:06.440 --> 00:03:11.740
必要な引数だけを受け取ればよく、多くの場合は値だけを使うのが一般的です。

39
00:03:11.740 --> 00:03:21.015
判定の中でトゥルー相当の値を返すかどうかで結果が決まるため、リターンし忘れると意図しないフォルスになる点にも注意してください。

40
00:03:21.015 --> 00:03:24.548
引数の順番は、値、位置、配列、と決まっています。

41
00:03:24.548 --> 00:03:27.304
実例として、年齢の確認を見ます。

42
00:03:27.304 --> 00:03:34.367
二十歳、二十五歳、十九歳の三人について、十八歳以上かどうかをエブリーで判定します。

43
00:03:34.367 --> 00:03:39.535
実行するとトゥルーになり、全員が成人であることが分かります。

44
00:03:39.535 --> 00:03:46.253
次に、二人目を十七歳に変えた配列で同じ判定をすると、今度はフォルスになります。

45
00:03:46.253 --> 00:03:48.665
どちらも実機で確認しました。

46
00:03:48.665 --> 00:03:55.039
このようにエブリーは、対象者全員に同じ条件を適用したい場面に向いています。

47
00:03:55.039 --> 00:04:00.637
年齢制限の確認、在庫が全てあるかの確認、必須項目が全て入力されたかの確認など、

48
00:04:00.637 --> 00:04:06.236
全件を一括で判定したいときに、そのまま使える形です。

49
00:04:06.236 --> 00:04:14.160
条件を十八歳以上から二十歳以上へ変えるなど、判定基準を差し替えて試すのも良い練習になります。

50
00:04:14.160 --> 00:04:17.144
記事の境界例で、空配列の扱いを確かめます。

51
00:04:17.144 --> 00:04:20.838
要素が一つもない配列にエブリーを呼ぶと、条件を満たさない要素が存在しないため、

52
00:04:20.838 --> 00:04:24.532
結果はトゥルーになります。

53
00:04:24.532 --> 00:04:28.368
スライドの一行目がその確認で、実機でもトゥルーでした。

54
00:04:28.368 --> 00:04:32.914
しかし、入力必須の場面では、空なのに合格と判定されては困ります。

55
00:04:32.914 --> 00:04:39.450
そこで記事では、長さがゼロより大きいことと、エブリーの判定を組み合わせた例が示されています。

56
00:04:39.450 --> 00:04:45.701
空の回答一覧にこの組み合わせを使うと結果はフォルスになり、記事の期待出力と一致しました。

57
00:04:45.701 --> 00:04:51.100
空でもよいのか、必ず中身が必要か、要件に合わせて組み合わせることが大切です。

58
00:04:51.100 --> 00:04:53.681
よく似たサムとの違いを整理します。

59
00:04:53.681 --> 00:04:58.388
エブリーは、全ての要素が条件を満たすときにトゥルーになります。

60
00:04:58.388 --> 00:05:03.246
一方サムは、一つでも条件を満たす要素があればトゥルーになります。

61
00:05:03.246 --> 00:05:08.712
スライドの例では、二、三、四という配列で、偶数かどうかを判定しています。

62
00:05:08.712 --> 00:05:13.343
三という奇数が混ざるためエブリーはフォルスですが、偶数が一つでもあるためサムはトゥルーになり、

63
00:05:13.343 --> 00:05:17.973
どちらも実機で確認しました。

64
00:05:17.973 --> 00:05:22.073
全員が満たすかを確認したいならエブリー、該当者がいるかを確認したいならサム、

65
00:05:22.073 --> 00:05:26.172
と問いの立て方で選んでください。

66
00:05:26.172 --> 00:05:29.664
二つを並べて実行すると違いが一目で分かります。

67
00:05:29.664 --> 00:05:36.800
名前が似ていても問いは正反対に近いので、コードを読むときはまず、全部か一つかを確認しましょう。

68
00:05:36.800 --> 00:05:40.440
注意点の第一は、判定が途中で終わることです。

69
00:05:40.440 --> 00:05:48.216
エブリーは、条件を満たさない要素が見つかった時点で、残りの要素を判定せずにフォルスを返します。

70
00:05:48.216 --> 00:05:53.841
スライドの例では、十、二十、五、三十のうち、三番目の五が十未満のため、コールバックは三回だけ呼ばれて終わり、

71
00:05:53.841 --> 00:05:59.466
三十は判定されませんでした。

72
00:05:59.466 --> 00:06:03.602
実機でも、結果はフォルス、回数は三と確認しました。

73
00:06:03.602 --> 00:06:09.144
これは無駄な処理を省く効率のよい仕様ですが、全ての要素に必ず処理を実行したい場合は、

74
00:06:09.144 --> 00:06:14.687
エブリーではなくフォーイーチなどを選んでください。

75
00:06:14.687 --> 00:06:18.492
途中で終わる前提を理解しておくことが大切です。

76
00:06:18.492 --> 00:06:20.579
注意点をもう一つ確認します。

77
00:06:20.579 --> 00:06:26.244
空きのある配列では、要素が入っていない空き位置でコールバックは呼ばれません。

78
00:06:26.244 --> 00:06:32.654
スライドの例では、一、空き、三という三件の並びで判定し、呼ばれた回数は二回だけでした。

79
00:06:32.654 --> 00:06:36.381
結果はトゥルーで、回数とともに実機で確認しました。

80
00:06:36.381 --> 00:06:43.387
つまり、空きは条件を満たさない要素として数えられるのではなく、最初から判定の対象外になります。

81
00:06:43.387 --> 00:06:50.394
データに空きが混ざる可能性がある場合は、件数や中身を先にそろえてから判定する習慣が役立ちます。

82
00:06:50.394 --> 00:06:56.208
空配列のトゥルーとあわせて、要素がない場合の扱いをセットで覚えておきましょう。

83
00:06:56.208 --> 00:07:02.320
特に、ほかの処理で作った配列を受け取る場合は、空きの有無を意識しておくと安心です。

84
00:07:02.320 --> 00:07:03.323
まとめです。

85
00:07:03.323 --> 00:07:11.514
エブリーは、配列の全ての要素が条件を満たすかどうかを判定し、トゥルーかフォルスを返すメソッドです。

86
00:07:11.514 --> 00:07:13.185
ポイントは三つです。

87
00:07:13.185 --> 00:07:19.036
まず、コールバックは値と位置と配列を受け取り、要素ごとに判定すること。

88
00:07:19.036 --> 00:07:25.890
次に、一つでも条件を外れる要素があれば、その時点でフォルスとなり判定が終わること。

89
00:07:25.890 --> 00:07:33.412
そして、空配列ではトゥルーになるため、入力必須の場面では長さの確認と組み合わせることです。

90
00:07:33.412 --> 00:07:39.764
まずは記事の基本例と境界例を実行し、結果を予測してから確かめてみてください。

91
00:07:39.764 --> 00:07:41.268
お疲れさまでした。

92
00:07:41.268 --> 00:07:49.292
全てか、一つでもか、と問いを言葉で区別できるようになれば、サムとの使い分けも自然に身につきます。
