カテゴリ: JavaScript 更新日: 2026/02/07

JavaScriptのオブジェクトのデストラクチャリング(分割代入)の基本|初心者でもわかる使い方

JavaScriptのオブジェクトのデストラクチャリング(分割代入)の基本
JavaScriptのオブジェクトのデストラクチャリング(分割代入)の基本

先生と生徒の会話形式で理解しよう

生徒

「JavaScriptのオブジェクトから特定の値だけを簡単に取り出す方法ってありますか?」

先生

「ありますよ。『デストラクチャリング』という便利な書き方を使うと、オブジェクトの中身を分割して変数に取り出せます。」

生徒

「デストラクチャリングって難しそうですが、具体的にはどういうことですか?」

先生

「簡単に言うと、オブジェクトの中から欲しい情報だけを取り出して変数に分けるイメージです。具体例を見てみましょう!」

1. オブジェクトとプロパティのおさらい

1. オブジェクトとプロパティのおさらい
1. オブジェクトとプロパティのおさらい

JavaScriptのオブジェクトは、名前(プロパティ名)と値のセットでできています。たとえば、下のように人の情報をまとめたオブジェクトがあります。


const person = {
  name: "太郎",
  age: 25,
  job: "エンジニア"
};

ここで、nameagejobがプロパティ名で、それぞれ値が設定されています。

2. デストラクチャリング(分割代入)とは?

2. デストラクチャリング(分割代入)とは?
2. デストラクチャリング(分割代入)とは?

デストラクチャリングとは、オブジェクトの中のプロパティを簡単に取り出して、それぞれを別々の変数にまとめて代入する方法です。まるで箱の中身を分けるようなイメージです。

通常、オブジェクトの値を取り出すときは、次のように書きます。


const name = person.name;
const age = person.age;

これをデストラクチャリングを使うと、一行で書けます。


const { name, age } = person;

この書き方で、personオブジェクトからnameageの値を取り出して、それぞれ同じ名前の変数に入れています。

3. なぜデストラクチャリングが便利?

3. なぜデストラクチャリングが便利?
3. なぜデストラクチャリングが便利?

たとえばオブジェクトの中にたくさんの情報がある場合、一つずつperson.nameperson.ageのように書くと長くなってしまいます。デストラクチャリングを使うとスッキリ書けて、コードが読みやすくなります。

さらに、取り出す変数名を自由に変えたいときも対応できます。


const { name: userName, age: userAge } = person;
console.log(userName); // 太郎
console.log(userAge);  // 25

このように、nameというプロパティの値をuserNameという変数に代入しています。

4. デフォルト値も設定できる

4. デフォルト値も設定できる
4. デフォルト値も設定できる

もしオブジェクトの中にないプロパティを取り出そうとした場合、変数にはundefined(「未定義」という意味)になります。そんな時、デフォルトの値を決めておくことも可能です。


const { hobby = "未設定" } = person;
console.log(hobby); // 未設定

この例では、personhobbyがなかったので、hobby変数には「未設定」という値が入ります。

5. 実際に使ってみよう

5. 実際に使ってみよう
5. 実際に使ってみよう

それでは、実際にデストラクチャリングを使った例を見てみましょう。


const person = {
  name: "太郎",
  age: 25,
  job: "エンジニア"
};

const { name, age, hobby = "未設定" } = person;

console.log(name);  // 太郎
console.log(age);   // 25
console.log(hobby); // 未設定

このように一行で必要な値を取り出せて、デフォルト値もつけられます。

6. オブジェクトのデストラクチャリングで気をつけること

6. オブジェクトのデストラクチャリングで気をつけること
6. オブジェクトのデストラクチャリングで気をつけること
  • 変数名はオブジェクトのプロパティ名と同じにするのが基本です。
  • プロパティが存在しない場合はundefinedになりますが、デフォルト値を使うと防げます。
  • 複雑なネスト(入れ子)構造のオブジェクトでもデストラクチャリングは使えますが、初心者はまずは簡単な使い方に慣れましょう。

これらに気をつければ、コードがすっきりしてバグも減りやすくなります。

まとめ

まとめ
まとめ

ここまでJavaScriptのオブジェクトにおけるデストラクチャリング(分割代入)の基本について解説してきました。いかがでしたでしょうか。最初は「なんだか難しそうな名前だな」と感じた方も多いかもしれませんが、実際にコードを書いてみると、その便利さと効率の良さに驚くはずです。現代のJavaScript開発において、この分割代入はもはや必須のスキルと言っても過言ではありません。

分割代入をマスターするメリット

分割代入を使いこなせるようになると、まずコードの記述量が劇的に減ります。これまで何度も繰り返していた「オブジェクト名.プロパティ名」という冗長な書き方から解放され、直感的に必要なデータへとアクセスできるようになります。また、関数の引数としてオブジェクトを受け取るときなど、応用範囲が非常に広いのも特徴です。

例えば、大規模なアプリケーション開発では、一つのオブジェクトに数十個のプロパティが含まれることも珍しくありません。その中から「今この場所で必要な3つだけ」をスマートに取り出せるのが、デストラクチャリングの最大の魅力です。

さらに一歩進んだ応用テクニック

基本を理解したら、もう少し実践的な使い方も見ておきましょう。オブジェクトが入れ子(ネスト)になっている場合や、TypeScriptでの型定義と組み合わせた場合も、書き方の基本は同じです。

■ネストされたオブジェクトの展開

複雑なデータ構造から深くにあるプロパティを取り出す際も、分割代入なら一段ずつアクセスする手間が省けます。


const user = {
  id: 1,
  profile: {
    username: "js_expert",
    location: "Tokyo"
  }
};

const { profile: { username, location } } = user;

console.log(username); // js_expert
console.log(location); // Tokyo

js_expert
Tokyo

■TypeScriptでの型指定と分割代入

TypeScriptを使用している場合、分割代入を行う際にもしっかりと型定義を行うことで、より安全なコードを作成できます。


interface Product {
  id: number;
  title: string;
  price: number;
}

const item: Product = {
  id: 101,
  title: "ワイヤレスマウス",
  price: 3500
};

const { title, price }: Product = item;

console.log(`${title}の価格は${price}円です。`);

ワイヤレスマウスの価格は3500円です。

このように、分割代入は単なる「省略記法」ではなく、データの構造をコード上で明示し、読み手にとっても「何を使おうとしているのか」を一目で伝える役割を果たしてくれます。最初はドット記法(.)に慣れているため違和感があるかもしれませんが、意識して使っていくうちに、これなしではコードが書けなくなるほど快適に感じるでしょう。

開発現場でのリアリティ

実際のWeb開発の現場では、ReactやVue.jsといったモダンなフレームワークの中で、コンポーネントが受け取る「Props」の処理にこの分割代入が多用されます。また、APIから取得したJSONデータを処理する際にも欠かせません。今回学んだ「デフォルト値の設定」や「別名での代入」は、予期せぬエラーを防ぐための防護策としても非常に有効です。

まずは自分の書いているプログラムの中で、ドット(.)を使って何度も同じオブジェクトを参照している箇所を探してみてください。そこが分割代入を取り入れる絶好のチャンスです。小さな改善の積み重ねが、読みやすく保守性の高い、美しいソースコードへと繋がっていきます。

先生と生徒の振り返り会話

生徒

「先生、ありがとうございました!デストラクチャリングって最初は魔法か何かかと思いましたが、仕組みがわかるとすごく合理的ですね。特に、デフォルト値を設定できるのは安心感があります。」

先生

「その通りですね。プログラミングにおいて『データがないかもしれない』という不安を、構文レベルで解決できるのは大きな強みです。特にAPI連携などでは重宝しますよ。」

生徒

「あと、変数名を自由に変えられるのも便利だと思いました。既存の変数名とぶつかりそうな時に { name: userName } みたいに書けば解決できますもんね。」

先生

「よく気づきましたね!その柔軟性こそがJavaScriptらしさでもあります。ただ、あまりに深くネストされたオブジェクトを一気に展開しようとすると、逆に読みづらくなることもあるので、そこはバランスが大事です。」

生徒

「なるほど、何でもかんでも一行にまとめればいいってわけじゃないんですね。読みやすさを第一に考えて使いこなせるよう練習してみます!」

先生

「素晴らしい意気込みです。次は配列の分割代入についても学んでいくと、さらに表現の幅が広がりますよ。どんどん手を動かして、自分の血肉にしていきましょう。」

生徒

「はい!配列の方も楽しみです。まずは今回のオブジェクトの書き方を自分のプロジェクトに組み込んで復習してみます!」

関連記事:
カテゴリの一覧へ
新着記事
New1
TypeScript
TypeScriptでパスエイリアスを設定する方法!baseUrlとpathsでコードをスッキリ整理
New2
JavaScript
JavaScriptのfor文の書き方を初心者向けにやさしく解説
New3
JavaScript
JavaScriptの関数でよくあるエラーとその解決法まとめ
New4
JavaScript
JavaScriptのイベント処理でよくあるエラーとその対処法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのマウスイベントの使い方(click, mouseoverなど)
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptのtoStringとString関数の違いを初心者向けに解説
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptの純粋関数(pure function)と副作用の違いを理解しよう
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptで文字列をforループで1文字ずつ処理する方法!初心者向け解説
No.7
Java&Spring記事人気No7
TypeScript
TypeScript学習におすすめの無料教材・リファレンスサイト【初心者向け】
No.8
Java&Spring記事人気No8
TypeScript
TypeScriptの始め方:開発環境の構築手順【初心者向け】