【ITニュース解説】A Factory Reset on Factory Functions

2025年09月05日に「Dev.to」が公開したITニュース「A Factory Reset on Factory Functions」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

JavaScriptのファクトリー関数は、同じような構造のオブジェクトを大量に生成するのに便利。関数内でオブジェクトを作成し、必要なデータを引数として渡すことで、オブジェクトのプロパティを簡単に設定できる。オブジェクト内に共通の関数を持たせることも可能。これにより、コードの重複を避け、効率的にオブジェクトを生成できる。

出典: A Factory Reset on Factory Functions | Dev.to公開日:

ITニュース解説

JavaScriptにおけるファクトリー関数について解説する。ファクトリー関数は、同じような構造を持つオブジェクトを大量に生成する際に役立つ。オブジェクトを手動で何度も記述する手間を省き、効率的な開発を可能にする。

まず、オブジェクトの構造を定義する。例えば、ユーザー情報を格納するオブジェクトを考える。

1const person1 = {
2  firstName: "Mary Jane",
3  lastName: "Watson",
4  age: 23,
5  career: "modeling",
6  hobbies: ["stalking Peter Parker", "partying"]
7}

このオブジェクトを元に、同様のオブジェクトを複数作成する場合、ファクトリー関数を使用すると便利だ。

ファクトリー関数は、新しいオブジェクトを作成し、それを返す関数だ。最初は空のオブジェクトを返すだけの簡単な関数から始める。

1function factory() {
2  const newObj = {};
3  return newObj;
4}

次に、オブジェクトに格納するデータを受け取るための引数を関数に追加する。

1function factory(firstName, lastName, age, career, hobbies) {
2  const newObj = {};
3  return newObj;
4}

引数として受け取ったデータを、オブジェクトのプロパティとして設定する。ES6の記法を使うと、プロパティ名と変数が同じ場合、firstName: firstNameのように書く代わりに、firstNameとだけ書くことができる。

1function factory(firstName, lastName, age, career, hobbies) {
2  const newObj = {
3    firstName,
4    lastName,
5    age,
6    career,
7    hobbies
8  };
9  return newObj;
10}

これで基本的なファクトリー関数の完成だ。この関数を呼び出すことで、指定したデータを持つ新しいオブジェクトを生成できる。

さらに、ファクトリー関数によって生成されるオブジェクトに、共通の関数を追加することもできる。例えば、ユーザーのフルネームと年齢を返す関数をオブジェクトに追加する。

1function factory(firstName, lastName, age, career, hobbies) {
2  const newObj = {
3    firstName,
4    lastName,
5    age,
6    career,
7    hobbies,
8    full: function() {
9      return `${firstName} ${lastName}, ${age}`;
10    }
11  };
12  return newObj;
13}

ここでは、テンプレートリテラルを使用して文字列を生成している。テンプレートリテラルは、バッククォート( )で囲み、${変数名}で変数の値を埋め込むことができる。従来の文字列結合(firstName + " " + lastName + ", " + age)よりも簡潔に記述できる。

実際にファクトリー関数を使用してみる。

1const person2 = factory("Peter", "Parker", 23, "photographer", ["rescuing civilians", "preaching the importance of the responsibility that comes with power", "taking selfies"]);
2
3console.log(person2.full()); // logs "Peter Parker, 23"!

person2は、ファクトリー関数によって生成されたオブジェクトであり、指定したデータとfull関数を持っている。

ファクトリー関数は、Webサイトのデータベースにユーザー情報を登録する際など、同じ構造のオブジェクトを大量に生成する場合に非常に便利だ。フォームから入力されたデータを元にオブジェクトを生成し、データベースに保存するといった処理を効率的に行うことができる。

ファクトリー関数を活用することで、コードの重複を避け、保守性を向上させることができる。オブジェクトの構造が変更になった場合でも、ファクトリー関数を修正するだけで、全てのオブジェクトに反映されるため、変更管理が容易になる。

【ITニュース解説】A Factory Reset on Factory Functions | いっしー@Webエンジニア