4360こんばんはimaizumeです。etc)はどんな言語でも必ず出てくる基本構文だと思います。繰り返しの構文がある程度使えるようになったら、次はぜひ**mapやfilterといった高階関数を覚えてみましょう。mapは本来**写像関数**といい、ある配列要素を別の要素に対応付けて変換するための関数一般を表す言葉です。よってreduceやfilterなどの他の高階関数も、**厳密には繰り返しと同一ではありません**が、この記事ではあくまで最初に覚えるときのニュアンスを伝えるために、繰り返しの場合と対応付けする形で説明しています。同じ処理をしても、高階関数を使えば**for文に比べてコードが見やすくなる場合があります。`map`や`filter`にもチャレンジしてみてください。サポートがある主要な言語は以下のとおりです。**高階関数の基本であるmap関数の使い方を見ていきます。こんな感じの、配列の中身を出力する簡単なプログラムがあります。**このようにmap関数は、要素に対して行う処理を書いた関数を引数に与えてあげることで、for文同様配列内の各要素に対して同じ処理を繰り返し実行することができます。今の例では`function`内の処理は1行でしたが、もちろん複数行に渡る処理を記述しても構いません。図中の青い矢印の方向に処理が進んでいくというイメージを持つと理解がしやすいと思います。呼び出すとこのように各要素に対して順番に処理がなされていくわけです。以上がmap呼び出しの最も基本的な形になります。先程は配列内の値を出力しただけでした。今度は**それぞれの処理結果を新しい配列として受け取りたい場合を考えます。ある配列の各要素の値を2倍し新しい配列として受け取りたい場合、for文を使うとこのようなコードになります。forだと事前に新しい配列を入れるための変数を作成しておく必要がありますが、このような場合はmap関数の恩恵を受けることができます。先程と違い、**最終的に値を返却するために`return`を付けているのに注意してください**、これがないと新しい配列に値が戻りません。関数内での処理を行ったうえで、最後に値を`return`することにより、新しい配列の要素を戻すことができるのです。`return`付きのmap関数の呼び出しは、イメージにするとこんな感じになります。『関数を変数に入れる』という表現には最初慣れないかもしれないですが、これも覚えておくとさらに便利にmapが使えます。JavaScriptなどの言語では関数を定義した後、それをまるごと変数に入れて使い回すことができます。先ほどの例で出てきた値を2倍する関数も、一度変数に入れてから`map`に渡すことができます。**あとで何度も同じfunction内の処理を使う場合などは、このように関数を変数に入れておくと使い回しができて良いです。`map`と似たような関数に**`filter`があります。これは**各要素に対して条件判定を行い、その判定結果がtrueであったものを返す関数です。名前の通り、配列から特定の値だけを『フィルタリング』するときに使います。配列から2より大きいの値のみを抜き出したいときはこんな感じに書いてあげます。function内では最終的に`true`か`false`が返れば良いので、その手間はもっと複雑な処理をしても構いません。単純な評価であれば**if文すら不要になるためこちらも大変重宝します**。高階関数のスゴい所は、ドットでつなげることで処理した結果をさらに続けて次の処理へ繋げられることです(メソッドチェーン)。最初のうちはあまりメソッドチェーンを使う機会がないかもしれませんが、配列を加工する処理が複雑化してきたときにこの仕組みが役に立ちます。**変数を経由しないでも連続的に処理を記述できるため、コードの中で見なければならない部分が減ることが重要です。最後に上記で紹介したmapとfilter以外の高階関数についても少しだけ紹介しておきます。場合は`forEach`の方が適切です。使い方は`map`の場合と同じです。functionの引数が増えていますが、それぞれ配列の各要素、インデックス番号、参照している配列を参照するための変数です。**配列の中の値をまとめて1つの値を返したいような処理を行うための関数です。reduceを使うとこんなにスッキリ書くことができます。forを使った場合のsumに相当する変数)と各要素の値(`i`)をとります。この関数は2番目の要素から適用され、`prev`の初期値は最初の要素の値になります。集計をする場合は前の値に今の要素の値を足して返却していくだけで最後に集計値が返ります。(=OR判定)を返します**。配列の中の全ての要素が3以上であるかを判定するには`every`をこのように使います。1つでも条件を満たす要素があるかどうかは`some`でこのように判定します。以上高階関数のmapとfilterについて、入門的な説明でした。普段のプログラミングでも使えそうな場面はたくさんあるのではないでしょうか。for文で書いている所を書き直しコードの見通しを良くしたり、変数やif文を減らしてみたりしてください。ARKitでアプリ開発を行う際に意識した方が良いことを中心にまとめてみました。[day3](https://github.com/tutorialmaker/PracticePy/blob/maste⋯yuya2018年10月28日ホームページ作成で注意すること今回のホームページ作成でこれから先作るうえで注意しないといけないと思った点がいくつかあったのでまとめておこうと思います。この課題はDay9に依存する。Day9をクリアすることでチャレンジできる。creators.好きなことを好きなだけやろう。自分の成長のために時間を使おう。夢中になって、気付いたら朝が来て。学園祭前日のようなワクワクを、みんなで楽しもう。全人類が革新的な夢を実現できる、その日まで。