【こんぽーねんと】

コンポーネント とは?

💡 UIを「部品化」して再利用する設計の単位
📌 このページのポイント
UIコンポーネント:画面を部品に分解 ページ全体 Header Card 146 Card 147 Button Button <Header /> ナビゲーション・ロゴ <Card /> 再利用可能なカード <Button /> クリック可能なボタン 部品化して再利用する 画面を独立した部品(コンポーネント)に分けて組み立てる
UIコンポーネントのイメージ
ひよこ ひよこ

コンポーネントって何?

ペンギン先生 ペンギン先生

UIを「部品」として切り出したもの。例えばボタン・ヘッダ・ユーザーカードをそれぞれコンポーネントとして作れば、複数のページで同じコンポーネントを使い回せる。変更も1箇所直せば全ページに反映される。

ひよこ ひよこ

このサイトのコンポーネントって?

ペンギン先生 ペンギン先生

このサイトはAstroで作られていて、ヘッダー・フッター・会話バルーンなどがコンポーネントとして分かれているよ。「Header.astro」「Balloon.astro」のような.astroファイルがそれぞれコンポーネント。

ひよこ ひよこ

どう分けるかはどう決めるの?

ペンギン先生 ペンギン先生

「再利用するか」「独立して管理したいか」が目安。あちこちで使うボタンはコンポーネント化する価値がある。1箇所にしか出ない10行のコードはわざわざコンポーネントにしなくていい。過度な分割はかえって複雑になる。

ひよこ ひよこ

コンポーネント設計で失敗しがちなパターンってあるの?

ペンギン先生 ペンギン先生

「Prop Drilling」は代表的な失敗パターンだね。親→子→孫→ひ孫とデータをバケツリレーで渡していくと、途中のコンポーネントが不要なpropsを受け取るだけの「パイプ役」になってしまう。ReactならContext APIやZustand、VueならPinia/Provideで解決できるよ。あと「God Component(神コンポーネント)」も要注意。1つのコンポーネントに何でも詰め込んで500行超えになると、テストも修正も困難になる。「1コンポーネント1責務」を意識するのが大事だよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
コンポーネントって出てきたら「UIや機能を再利用可能な部品として切り出したもの」と思えばOK!
📖 おまけ:英語の意味
「Component」 = 部品・構成要素
💬 機械工学の「コンポーネント(部品)」から転用。ReactがUI Component化のアーキテクチャを広め、現代フロントエンド開発の標準概念になった
← 用語集にもどる