JavaScriptでFunctional Programmingの原則を取り入れる方法
- 作成日 2025.03.12
- javascript
- javascript
Functional Programming(FP)は、JavaScriptでコードの可読性、再利用性、保守性を向上させるための強力なパラダイムです。本記事では、FPの基本原則を解説し、JavaScriptでそれをどのように活用するかを具体例を通じて示します。
目次
第一級関数の活用
JavaScriptでは関数が第一級オブジェクトとして扱われます。これにより、関数を変数に代入したり、引数として渡したり、戻り値として返すことが可能です。
const greet = name => `Hello, ${name}!`;
const callGreet = func => func('Alice');
console.log(callGreet(greet)); // Hello, Alice!純粋関数の作成
純粋関数は、同じ入力に対して常に同じ出力を返し、副作用を持たない関数です。
const add = (a, b) => a + b;
console.log(add(2, 3)); // 5副作用の排除
副作用を排除することで、コードの予測可能性が向上します。例えば、グローバル変数の変更を避けます。
// 副作用のある関数
let count = 0;
const increment = () => count++;
// 副作用のない関数
const incrementPure = value => value + 1;
console.log(incrementPure(2)); // 3イミュータブルデータの利用
データの状態を変更せず、新しい値を返します。
const originalArray = [1, 2, 3];
const newArray = originalArray.concat(4); // [1, 2, 3, 4]
console.log(originalArray); // [1, 2, 3]高階関数
高階関数は、関数を引数に取るか、関数を返す関数です。
const multiply = factor => num => num * factor;
const double = multiply(2);
console.log(double(5)); // 10カリー化
カリー化は、複数の引数を持つ関数を1つの引数を受け取る関数の連鎖に変換する技法です。
const add = a => b => a + b;
console.log(add(2)(3)); // 5関数の合成
小さな関数を組み合わせて複雑な処理を構築します。
const toUpperCase = str => str.toUpperCase();
const exclaim = str => `${str}!`;
const shout = str => exclaim(toUpperCase(str));
console.log(shout('hello')); // HELLO!部分適用
部分適用により、関数の一部の引数を固定します。
const multiply = (a, b) => a * b;
const double = multiply.bind(null, 2);
console.log(double(4)); // 8再帰の活用
ループの代わりに再帰を使います。
const factorial = n => (n === 0 ? 1 : n * factorial(n - 1));
console.log(factorial(5)); // 120配列メソッドの活用
map, filter, reduceなどの配列メソッドを活用します。
const numbers = [1, 2, 3, 4];
const doubled = numbers.map(num => num * 2);
const evens = doubled.filter(num => num % 2 === 0);
const sum = evens.reduce((acc, num) => acc + num, 0);
console.log(sum); // 12ポイントフリースタイル
引数を明示せずに関数を記述します。
const add = (a, b) => a + b;
// ポイントフリースタイル
const sum = [1, 2, 3].reduce(add);
console.log(sum); // 6ラムダ式を利用した簡潔な記述
短い処理にはラムダ式を使い、コードを簡潔にします。
const numbers = [1, 2, 3, 4];
console.log(numbers.map(x => x * 2)); // [2, 4, 6, 8]まとめ
Functional Programmingの原則を取り入れることで、JavaScriptのコードはよりクリーンで管理しやすくなります。これらのテクニックを活用し、効率的な開発を実現しましょう。
-
前の記事
PHPのエラー『Notice: Constant Redefined in Script』の解決方法 2025.03.12
-
次の記事
Railsのエラー『ArgumentError: invalid date』の解決方法 2025.03.12
コメントを書く