【入門編】 コンポーネントの合成(Composition) – React実践ガイド

こんにちは。Reactの世界へようこそ。
Reactを学び始めると、最初は「仮想DOM?」「フック?」「Props?」と、専門用語のラッシュに溺れそうになりますよね。でも大丈夫、安心してください。

今日は、Reactを魔法のように便利にしてくれる「コンポーネントの合成(Composition)」という考え方について、お話しします。難しく聞こえますが、実は私たちの日常生活の中に溢れている、とても温かい考え方なんですよ。

—

「継承」ではなく「ブロック遊び」で考える

プログラミングの世界では、昔から「継承(Inheritance)」という言葉が使われてきました。親から子へ、機能を受け継いでいく手法ですね。でも、Reactが選んだ道は少し違います。

Reactの基本は「合成(Composition)」。これは例えるなら、レゴブロックやお弁当箱のようなものです。

例えば、あなたがお弁当を作るとします。
「卵焼き」というパーツ、「ブロッコリー」というパーツ、「唐揚げ」というパーツを、一つの大きなお弁当箱の中に「合成」して詰めますよね。これがReactのコンポーネント設計です。

「唐揚げ」に「卵焼きの機能」を継承させるのではなく、「唐揚げは唐揚げとして独立させ、必要な場所にポンと置く」。このシンプルさが、大規模なアプリを作るときに、あなたのコードを崩壊から守ってくれる最強の武器になるんです。

—

実際にコードで見てみよう:お弁当箱の例

まずは、一番シンプルな「部品」を作ってみましょう。

// 1. 小さな部品(コンポーネント)を作る
function Ingredient({ name }) {
return

{name}

;
}

// 2. それらを組み合わせて「お弁当箱」を作る
function BentoBox() {
return (

今日のお弁当



);
}

どうでしょう? `Ingredient` という部品を何度も使い回して、中身を変えるだけでいろんなメニューが作れそうですよね。これが「合成」の第一歩です。

—

魔法の道具「children」を知っていますか?

Reactの合成を語る上で欠かせないのが、`children` という魔法の引数です。
これを使うと、「枠組みだけ作っておいて、中身は使うときに決める」という、極めて柔軟な設計ができるようになります。

「カード型UI(枠線で囲まれたきれいなボックス)」を想像してください。

// 外側の枠だけを作るコンポーネント
function Card({ children }) {
return (

{/ ここに、あとから流し込まれた中身が表示される! /}
{children}

);
}

// 使うときはこうする
function App() {
return (

タイトルです

この中身は、使うときに自由に決められます。



);
}

この `Card` コンポーネントは、中に何が入るかを知る必要がありません。ただ「渡されたものをきれいに囲む」という役割に徹しています。これこそが、再利用性の高いコンポーネントの極意です。

—

つまずきやすいポイント:どこで分割すべき?

初心者の頃は「どこまで細かく分ければいいの?」と悩むのが普通です。そんなときは、こう考えてみてください。

1. 「これ、他の画面でも使いそうだな?」と思ったら別ファイルにする(ボタン、入力欄、見出しなど)
2. 一つの関数が長すぎて読みづらいな、と思ったら切り出す

最初から完璧を目指さなくていいんです。まずは動くものを作ってみて、「あ、これとこれは同じ形だ」と気づいたときに、そっと切り出して「合成」してあげる。その繰り返しで、あなたのコードは少しずつ洗練されていきます。

—

最後に:完璧主義を捨てよう

Reactのアーキテクチャは、プログラミングというより「レゴの組み立て」や「お料理」に近いです。うまくいかない日があっても大丈夫。コードが汚れてしまったら、また外して、組み直せばいいだけですから。

この「小さなパーツを組み合わせて、大きな物語を作る」という考え方を大切にしてみてください。そうすれば、いつか複雑なWebアプリを設計するときも、きっと「あ、これはあのお弁当箱の考え方と同じだ!」と気づく瞬間が来ます。

そのときが、あなたがReactの本当の楽しさに触れた瞬間です。
焦らず、楽しく、一つひとつのパーツを組み上げていきましょう。応援しています!

コメント

タイトルとURLをコピーしました