JavaScriptと関数型プログラミングの使用方法を現役エンジニアが解説【初心者向け】

初心者向けにJavaScriptと関数型プログラミングの使用方法について現役エンジニアが解説しています。関数型プログラミングとは、関数の組み合わせで記述するプログラミング手法です。手続き型プログラミングと比較して、変数の再代入の禁止や関数の参照透過性が保つことなどが違います。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

JavaScriptと関数型プログラミングの使用方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使って初心者向けに解説します。

JavaScriptについてそもそもよく分からないという方は、JavaScriptとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、JavaScript/jQuery講座の内容をもとにしています。

 

田島悠介

今回は、JavaScriptに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

JavaScriptと関数型プログラミングの使用方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

目次

 

関数型プログラミングとは

関数型プログラミングとは、解決しようとする問題に対し、その問題の性質を関数の組み合わせで記述するプログラミング手法です。

特徴としては、変数は再代入を禁止する関数は参照透過性が保たれているとなっています。後者の参照透過性とは引数が同じであれば、何回関数を実行しても同じ結果が出力されるということを指しています。

簡単に言うと、関数の実行によって外部の変数にも影響を与える状態のことを参照透過性がないということです。この参照透過性がない状態のことを副作用と呼ばれています。

関数型のプログラミング言語例としては、HaskellやLISP、Scalaがあります。

[PR] JavaScript・jQueryで挫折しない学習方法を動画で公開中

手続き型プログラミングとは

関数型プログラミングに対して、問題を解く手順をコンピュータが実行すべき命令の列として記述するプログラミングのことを手続き型プログラミングといいます。

命令を1行ずつ実行することから命令型プログラミングともいいます。ここでいう手続きとは、関数、プロージャー、メソッドなどのことを指しています。

手続き型プログラミングにより、モジュール性の高い構造化プログラミングコードを同じプログラム内でコピーすることなく再利用することが出来るようになります。

手続き型プログラミング言語例としては、Python、Perl、PHPなどがあります。

JavaScriptと関数型プログラミングの関係

ここまで、関数型プログラミングと手続きプログラミングについて紹介しました。ここでJavaScriptはどちらに当てはまるかという話になりますが、JavaScriptそのものは手続き型の言語になります。

ですが、関数型の書き方でプログラムを書くことができます。実際にJavaScriptのコードを見てみると、関数型で記述されている書き方をよく見かけます。例えば以下の書き方です。

function calc(x,y) {
  return function (x, y) { 
     return x + y; 
  }
}
var result = calc(2, 3);
console.log(result()); // 5

このサンプルでは関数型の記述を紹介するためのサンプルなので回りくどい書き方ですが、関数型を使うことで処理を別の関数に引き渡してその結果を返す関数やそもそも関数そのものを変数として定義するという書き方も出来ます。

JavaScriptで関数型プログラミングを学ぶ(応用する)意義

JavaScriptは手続き型の言語ですが、現場でJavaScriptのコードを見ると関数型の記述をよく見かけます。つまり、命令型と関数型が混在したプログラムも存在するので関数型に慣れていない方がコードを読むとよくわからないということが起きます。

仕事でJavaScriptを使う際には知っておくと便利ですし、また他の言語を取り扱うときにも理解しやすいです。

筆者プロフィール

メンター三浦

モバイルゲームを運用している会社のエンジニアをしています。趣味でWEB開発やクラウドコンピューティングもやっており、ソフトもハードもなんでもやります。

TechAcademyジュニアではPythonロボティクスコースを担当しています。好きな言語はPython, Node.js。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、JavaScript・jQueryを使ったWebサービス公開を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。