
277
17
章
purrr
でイテレーション
17.1
はじめに
15章ではコピー&ペーストせずに、関数を作ることにより、コードの重複がなくなることがいか
に重要かという話をしました。コードの重複をなくすことには、次の 3 つの利点があります。
●
コードの意図が明確になる。何が同じかではなく、何が違うかに目が行くからだ。
●
要求の変化に追随しやすい。要求の変化に対して、コードでコピー&ペーストしたすべての箇
所を覚えておいて変更するのではなく、1 か所変更するだけで済む。
●
バグが少なくなる。コードのあらゆる箇所がもっと使われるようになるからだ。
重複をなくすツールの1つが関数で、繰り返し使われるコードパターンを独立させて、たやすく再
利用や更新できるようにします。もう1つのツールがイテレーションで、複数の入力に対して同じこ
とを行います。例えば、異なる列やデータセットに同じ演算を行います。本章では、重要なイテレー
ショ
ンパラダイムを2つ学びます。命令型プログラミングと関数型プログラミングです。命令型には、
for
ループや
while
ループがあり、イテレーションが明示されているので、何が起こっているか明白
で、手始めに学ぶのに良いでしょう。しかし、ループは色々とうるさくて、
for
ループごとに複製さ
れるかなりの記録のためのコードが必要となります。関数型プログラミング(FP)はそのような類似
のコードを抽出して除き、ループパターンの共通部分を関数にします。FPの言葉をマスターすれば、
よく出てくるイテ