Reactとは?特徴・できること・メリットをわかりやすく解説

What is React and why use it for your app

React(リアクト)とは、WebサイトやWebアプリケーションのユーザーインターフェース(UI)を構築するためのオープンソースのJavaScriptライブラリです。

Reactの大きな特徴は、UIを再利用可能な「コンポーネント」に分けて開発できることです。ボタン、フォーム、ナビゲーション、カードなどのUI要素をコンポーネントとして作成し、それらを組み合わせて複雑な画面を構築できます。

ReactはMeta(旧Facebook)で開発され、現在もオープンソースプロジェクトとして発展しています。現在のReactは、WebアプリケーションのUI構築だけでなく、サーバーコンポーネントやActionsなど、よりインタラクティブで複雑なアプリケーションを開発するための機能も提供しています。

この記事では、Reactとは何か、どのような特徴があるのか、JavaScriptやフレームワークとの違い、コンポーネントやJSXの仕組み、Reactを使うメリットについて初心者にもわかりやすく解説します。

Reactとは?

Reactは、ユーザーインターフェースを構築するためのJavaScriptライブラリです。

Reactでは、Webページ全体を一つの大きなコードとして作るのではなく、UIを小さな再利用可能なコンポーネントに分割して開発します。

例えば、ECサイトであれば、

  • 商品カード

  • 検索ボックス

  • ナビゲーション

  • カートボタン

  • ログインフォーム

などをそれぞれコンポーネントとして作成できます。

一度作成したコンポーネントは、同じアプリケーション内の複数の場所で再利用できます。

このコンポーネントベースの設計によって、コードの再利用性を高めながら、大規模なUIを整理して開発しやすくなります。

Reactはフレームワーク?

Reactは一般的に「フレームワーク」と呼ばれることがありますが、正確にはUI構築のためのライブラリです。

ReactそのものはUIの構築に重点を置いています。一方、Webアプリケーション全体を構築する場合は、Reactと組み合わせてフレームワークを利用することがあります。

例えば、Next.jsなどのReactベースのフレームワークを使うことで、ルーティング、サーバーサイドの処理、データ取得など、より幅広いアプリケーション開発の機能を利用できます。

そのため、ReactとNext.jsは競合するものではありません。

React:UIを構築するライブラリ

Next.js:ReactをベースにWebアプリケーションを構築するためのフレームワーク

というように考えると分かりやすいでしょう。

Reactの主な特徴

Reactが広く利用されている理由には、いくつかの特徴があります。

コンポーネントでUIを構築できる

Reactでは、UIを独立したコンポーネントに分けて設計できます。

例えば、以下のようなコンポーネントを作成できます。

  • Button

  • Header

  • Navigation

  • ProductCard

  • Modal

  • Form

これらを組み合わせることで、複雑な画面も整理して構築できます。

コンポーネントを再利用できるため、同じUIを複数の場所で使用する場合にも便利です。

また、コンポーネントごとに責任を分けることで、コードの保守や変更もしやすくなります。

宣言的なUIを構築できる

Reactでは、UIを「どのように操作して変更するか」を細かく記述するのではなく、現在の状態でUIがどう表示されるべきかを記述します。

例えば、ボタンがクリックされたことで状態が変化した場合、開発者はその状態に応じたUIを定義します。Reactが必要なUI更新を処理するため、DOMを一つひとつ手動で操作する必要が少なくなります。

この考え方により、複雑なインタラクションを持つUIでもコードを整理しやすくなります。

インタラクティブなUIを作りやすい

Reactでは、ユーザーの操作やデータの変化に応じてUIを更新できます。

例えば、

  • ボタンをクリックするとメニューが開く

  • フォームへの入力内容に応じてメッセージを表示する

  • 商品をカートに追加すると数量を更新する

  • 検索条件に応じて結果を表示する

といったインタラクションを実装できます。

Reactの状態管理やイベント処理を利用することで、ユーザーの操作に応答する動的なUIを構築できます。

Reactのコンポーネントとは?

コンポーネントは、Reactを理解する上で最も重要な概念の一つです。

コンポーネントとは、UIを構成する再利用可能な部品のことです。

例えば、以下のようなコンポーネントを考えてみましょう。

function Button() {
  return <button>登録する</button>;
}

このようなコンポーネントを別の画面でも利用できます。

<Button />

より複雑なUIでは、複数のコンポーネントを組み合わせます。

例えば、

ページ

Header

ProductList

ProductCard

Button

というように、UIを階層的なコンポーネントとして構成できます。

この方法によって、UIを小さな単位に分解し、再利用や変更を行いやすくなります。

ReactのPropsとState

Reactコンポーネントを理解するには、**Props(プロップス)とState(ステート)**も重要です。

Propsとは?

Propsは、親コンポーネントから子コンポーネントへデータを渡すために使用します。

例えば、商品カードに商品名を渡す場合、

<ProductCard name="UXPin" />

のように指定できます。

コンポーネント側では、その値を利用してUIを表示します。

Propsを利用することで、同じコンポーネントを異なるデータで再利用できます。

Stateとは?

Stateは、コンポーネントが管理する状態を表します。

例えば、

  • メニューが開いているか

  • カウンターがいくつか

  • フォームに何が入力されているか

などをStateとして管理できます。

Stateが変化すると、Reactはその状態に応じてUIを更新します。

この仕組みによって、ユーザー操作に応じて変化するインタラクティブなUIを構築できます。

ReactのHooksとは?

Hooksは、Reactの関数コンポーネントでStateなどのReactの機能を利用するための仕組みです。

代表的なHooksには、

  • useState

  • useEffect

  • useContext

  • useMemo

  • useCallback

などがあります。

例えば、useStateを使うとコンポーネント内で状態を管理できます。

import { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <button onClick={() => setCount(count + 1)}>
      {count}
    </button>
  );
}

現在のReact開発では、関数コンポーネントとHooksが基本的な開発パターンになっています。

そのため、Reactを学ぶ場合は、古いクラスコンポーネントよりも関数コンポーネント、Props、State、Hooksを優先して理解するとよいでしょう。

ReactのJSXとは?

JSXは、JavaScriptの中にHTMLに似たマークアップを記述できる構文です。

例えば、

function Welcome() {
  return <h1>ようこそ!</h1>;
}

のように書くことができます。

JSXを使うことで、UIの構造とJavaScriptのロジックを近い場所に記述できるため、コンポーネントの内容を理解しやすくなります。

JSXはHTMLそのものではありません。

Reactでは、JSXを使ってコンポーネントがどのようなUIを返すのかを記述します。

ReactはJavaScriptをどのくらい知っていればいい?

Reactを学ぶには、JavaScriptの基本を理解しておくことをおすすめします。

特に以下の概念は、React開発で頻繁に使用します。

  • 変数とデータ型

  • 関数

  • アロー関数

  • オブジェクトと配列

  • 配列メソッド

  • 分割代入

  • スプレッド構文

  • 条件分岐

  • import / export

  • Promise

  • async / await

  • イベント処理

すべてを完璧に理解してからReactを始める必要はありません。

ただし、JavaScriptの基本的な構文やデータの扱い方を理解していると、ReactのコンポーネントやStateをより早く理解できます。

ReactとVanilla JavaScriptの違い

Vanilla JavaScriptとは、Reactのような追加ライブラリやフレームワークを使わず、JavaScriptそのものを使ってWebページを開発することを指します。

Vanilla JavaScriptでは、開発者がDOMを直接操作してUIを変更できます。

一方、Reactでは、アプリケーションの状態とUIの関係を宣言的に記述し、Reactが必要なUI更新を処理します。

小規模でシンプルなWebページであれば、Vanilla JavaScriptで十分な場合もあります。

一方、複数の画面や複雑なインタラクション、再利用可能なUIコンポーネントを必要とする大規模なアプリケーションでは、Reactのコンポーネントベースのアプローチが役立ちます。

Reactを使うメリット

Reactには、Webアプリケーション開発を効率化するさまざまなメリットがあります。

UIを再利用できる

コンポーネントを一度作成すれば、複数の画面で再利用できます。

同じボタンやフォーム、カードなどを何度も一から作る必要がないため、開発効率を高められます。

大規模なUIを整理しやすい

複雑な画面を小さなコンポーネントに分割できるため、アプリケーションの構造を整理しやすくなります。

豊富なエコシステムを利用できる

Reactには長年にわたって多くの開発者が参加してきたため、Reactと組み合わせて利用できるライブラリ、フレームワーク、開発ツールが豊富に存在します。

プロジェクトの要件に応じて、ルーティング、フォーム、データ取得、テストなどのツールを組み合わせられることもReactのメリットです。

デザインシステムと相性が良い

Reactのコンポーネントベースの設計は、デザインシステムとの相性も良い特徴があります。

例えば、企業独自のButton、Input、ModalなどをReactコンポーネントとして作成し、複数の製品や画面で再利用できます。

これによって、UIの一貫性を維持しながら開発を進めやすくなります。

Reactはどのような開発に向いている?

Reactは、特にインタラクティブなUIを持つWebアプリケーションに適しています。

例えば、

  • SaaSアプリケーション

  • ダッシュボード

  • ECサイト

  • 管理画面

  • ソーシャルメディア

  • データ入力システム

  • インタラクティブなWebサービス

などで利用できます。

ただし、すべてのWebサイトにReactが必要なわけではありません。

非常にシンプルな静的Webサイトであれば、HTML、CSS、JavaScriptだけで十分な場合もあります。

プロジェクトの規模や要件、チームの経験を考慮して技術を選択することが重要です。

React 19で何が変わった?

React 19では、Reactの開発体験や非同期処理を改善するための新しい機能が追加されました。

代表的なものには、Actions、useActionStateuseOptimisticuse APIなどがあります。

また、React 19では関数コンポーネントにrefを通常のPropsとして渡せるようになり、従来のforwardRefの利用を減らせるようになりました。

現在Reactを学ぶ場合は、React 19以降の考え方をベースに、公式ドキュメントで最新のAPIや推奨される開発方法を確認することをおすすめします。

なお、現在のReact公式ドキュメントではReact 19.2が最新バージョンとして案内されています。

Reactを学ぶにはどのくらい時間がかかる?

Reactを習得するまでの期間は、JavaScriptやWeb開発の経験によって大きく異なります。

JavaScriptやHTML、CSSの基礎をすでに理解している場合は、数週間から数か月程度でReactの基本概念を学べるでしょう。

ただし、「Reactを理解する」ことと「Reactを使って本格的なアプリケーションを開発できる」ことは別です。

実際のプロジェクトでは、

  • コンポーネント設計

  • State管理

  • データ取得

  • エラー処理

  • パフォーマンス

  • テスト

  • アクセシビリティ

  • TypeScript

  • フレームワーク

など、React以外の知識も必要になります。

そのため、学習期間を決めるよりも、小さなアプリケーションを実際に作りながらReactの概念を身につけることが重要です。

Reactコンポーネントを使ったプロトタイピング

Reactのコンポーネントベースの設計は、開発だけでなくプロトタイピングにも活用できます。

従来のデザインツールでは、Reactコンポーネントを視覚的に再現してプロトタイプを作成することが一般的でした。

一方、UXPin Mergeでは、開発で使用しているReactコンポーネントをデザイン環境で利用し、実際のコードに近いUIを使ってプロトタイプを作成できます。

これにより、デザイナーと開発者が同じコンポーネントを使ってデザインを検証し、デザインと実装の差を小さくできます。

特にデザインシステムを運用しているチームでは、実際のReactコンポーネントを使ってプロトタイプを作成することで、最終製品に近いUIを早い段階で検証できます。

まとめ:ReactはUIを効率的に構築するためのライブラリ

Reactは、WebサイトやWebアプリケーションのUIを構築するためのJavaScriptライブラリです。

Reactの主な特徴をまとめると、

  • 再利用可能なコンポーネントでUIを構築できる

  • PropsやStateを使って動的なUIを作成できる

  • Hooksによって関数コンポーネントでReactの機能を利用できる

  • JSXによってUIの構造を分かりやすく記述できる

  • 大規模なUIを整理して開発しやすい

  • デザインシステムやReactベースのフレームワークと組み合わせられる

という点が挙げられます。

Reactは万能な技術ではありません。プロジェクトの規模、必要な機能、チームのスキル、使用するフレームワークなどを考慮して採用することが重要です。

Reactを使ったプロダクト開発では、コードを書く前にUIやユーザーフローを検証することも重要です。

UXPinでは、Reactコンポーネントを活用した高精度なプロトタイプを作成し、デザイナーと開発者が同じUIを使ってデザインを検証できます。

Reactベースのプロダクトをより効率的にデザイン・検証したい場合は、UXPinをお試しください

2026年のおすすめデザインシステム9例

 

デザインシステムベスト8の事例

デザインシステム とは、製品の一貫性のある、ブランドのイメージに合ったインターフェースを構築するのに使われるコンポーネント、ルール、スタイルガイド、ドキュメントのセットです。大抵のブランドは独自のデザインシステムを構築していますが、その中で本記事では、そこから多くを学ぶことができる最も一般的なデザインシステムを9つ挙げてみました。ちなみにそのデザインシステムおよびその他のデザインシステムは、Adele というデザインシステムレポジトリで見つかります。

UXPin Merge でデザインシステムの導入とガバナンスを強化しませんか。デザインシステムからインタラクティブコンポーネントをすべてエディタに取り込んで、完全にインタラクティブなプロトタイプを作成し、デザインの一貫性を保ちましょう。UXPin Merge の詳細を読む

デザインシステムとは

デザインシステムとは、プロダクトチームがアプリ、Web サイト、EC ストア、その他開発が必要な UI デザインの UI(ユーザーインターフェース)を構築するのに使うすべてのデザインリソースの集合体です。

デザインシステムはデザイナーだけのものではなく、デベロッパー向けのものでもあり、必要なフロントエンドコードとドキュメント、デザインガイドライン、関連プラグイン、デザインパターン、スタイルガイド、再利用可能なコンポーネント、ルールとガイドライン、その他 Web デザインと開発ワークフローに役立つ構成要素がすべて含まれた、コードスニペットと開発リソースがすべて含まれています。

デザインシステムベスト8の事例

このようなデザインシステムは、オンラインの Web サイトとしてホストされて一般に公開されることもあれば(オープンソースのデザインシステム)、ブランド内部で使われることもあります。

そしてデザイン システムは、適用可能な手順や例、プロダクトデザインやコーディングのガイドライン、UI キットの一部などがすべて揃った貴重なドキュメントとして機能する膨大なデータライブラリと考えることができます。

このように、デザインシステムに関連するプロダクトデザインのコンセプトはたくさんあります。デザインシステムとパターンライブラリ、コンポーネントライブラリ、UI キットの違いを知りたい方は、以下のの記事をご覧ください:デザインシステム、パターンライブラリ、スタイルガイド、コンポーネントライブラリの違い

企業が独自のデザインシステムを構築する理由

Shopify、Google、AirBnB などの企業は、以下のような理由から独自のデザイン システムを構築しています:

  • 一貫性 – デザイン システムは、デザインと開発の「信頼できる唯一の情報源(Single source of truth)」として機能する。
  • 透明性 – デベロッパーは、デザイン上の決定の解釈をする必要なく、デザインシステムのコンポーネントを直接使用できる。
  • スケール – デザイナーはプロトタイプをより速く構築し、デベロッパーへの引き継ぎを効率化できる。
  • 再利用性 – デザインシステムにより、組織内で共有できる一貫したコンポーネントがあるプロトタイプの作成が促される。
  • 明確さ – デザインシステムで、デザイン上の決定が共有された知識に基づいて行われるようになり、それでチーム メンバーが理解しやすく、効果的に貢献しやすくなる。

デザインシステムから学ぶこと

デザインシステムの大半は、むしろ一般的なデザインパターンに従っています。

そしてシステムは、多くの場合はデザイン、コード、言語、コンポーネントなどの主要なカテゴリーを備えたトップナビゲーションを特徴とします。

このようなメインカテゴリには、より詳細な説明があるサブカテゴリがそれぞれあり、アトミックデザインの構造を最大限に活用しています。たとえば、そのサブカテゴリには、タイポグラフィ、色、フォーム、バナーなどがあります。

この直感的なナビゲーションに従うことで、デザインに関するベストプラクティスに関する貴重な情報を得ることができます。

デザインシステムを作成するメリット

適切に構築されたデザインシステムを導入することで、企業はチームワークを大幅に改善して、意思決定プロセスを効率化できますが、デザインシステムの作成で得られるのはそれだけではありません。

このようなガイドライン、要素、データの集まりにより、デザイナーとデベロッパー間のコミュニケーションの問題が最小限に抑えられ、潜在的な UX デザインのバグや UX 負債の発生の余地が最小限に抑えられます。

さらに、このようなリファレンスが豊富なライブラリーがあることで、プロトタイプから実際の製品になるまでに必要な時間が大幅に短縮されます。

例えば、PayPal Fluent UI を Merge のテクノロジーと共に使っています。これにより、インタラクティブなコンポーネントを UXPin ライブラリに組み込むことができ、そうすることで、デザイナーもプロダクトチームのメンバーも、このコンポーネントに簡単にアクセスし、何度も繰り返しデザインすることができます。

デザインシステムはデザイナーとデベロッパーの間の繋がりが絶たれるのを最小限にする素晴らしい方法ですが、それだけではまだ理想的なソリューションではありません。Merge テクノロジーの革新のおかげで、製品チームのメンバーは同じツールを手軽に使って、DesignOps のワークフロープロセスを改善することができます。つまり、デベロッパーとデザイナーの両方が1つのソースから同じ UI 要素にアクセスして使えるということです。

デザインシステムの課題と解決策

企業がデザインシステムを作ろうとしても、特に要素や文書、コードをすべて管理する際に、特定の問題や一貫性の断絶が起こる可能性があります。

主要なデザインリーダーの1つである Johnson & Johnson社 から、デザイン システムの課題とソリューションについて詳しく学びましょう。当社のウェビナーでは、J&J チームによってベストプラクティスがすべて紹介されました。

例1:ポルシェのデザインシステム

ポルシェのデザインシステムは、その包括的できちんと文書化された高水準のアプローチにより、デザインと実装に対する模範的なモデルとなっており、一流の Web アプリケーションを作成しようとするすべての人にとって貴重な参考資料となっています。

ポルシェのデザインシステムは、視覚的に魅力的で高品質な Web アプリケーションを作成するのに非常に重要なデザインの基礎と要素を提供するという点で際立っています。その主な強みの1つは、Figma 用のピクセルベースのライブラリと、UXPin でコード化されたライブラリにあり、それでデジタルクリエイターのデザインプロセスが効率化されます。さらに、デザインシステムにはコード化された Web コンポーネントと詳細な使用ガイドラインが含まれていることから、デザイン同様にスムーズで一貫性のある実装が保証されます。

このシステムは、ポルシェの厳格な品質基準と企業デザインの原則に忠実であることで真に際立っています。各コンポーネントは入念に製造、テストされ、美しさだけでなく機能的な信頼性も保証されており、このような総合的なアプローチによって、最終製品の美しさと堅牢性が保証され、尊敬を集めるポルシェのブランドが反映されるのです。

例2:Google のマテリアルデザインシステム

デザインシステム Google

最もよく使われているデザインシステムのひとつに、Google のマテリアルデザインがあります。Google は、デザインとデザインの原則について知っておくべきあらゆる事柄について細部まで踏み込んだマテリアル デザイン システムを作成して公開しました。マテリアルデザインのコンポーネントは UXPin のライブラリの1つであるため、UXPin ユーザーであれば誰でも簡単に使うことができます。

そしてユーザーは、このシステムのおかげでさまざまなデバイスやプラットフォーム、入力方法にわたって UI と UX を完全に統一する貴重な情報を得ることができます。

マテリアル デザインによって、他のブランドや個人は、アトミックデザイン、業界のイノベーション、独自のブランド表現に対する独自のアプローチを構築するための強力な基盤を持つことができます。

以下は、Google のマテリアルデザインシステムの主な特徴です:

  • スターターキット
  • デザインソースファイル
  • マテリアルのテーマ設定
  • レイアウト
  • タイポグラフィ
  • コンポーネント
  • モバイルガイドライン

Google のマテリアルデザインシステムは非常に成熟しているように見え、多くのデザインガイドラインがありますが、開発で使われる UI コンポーネントに関する文書も含まれています。そしてそのようなコンポーネントがデザインでも使えることをご存知ですか?UXPin Merge のテクノロジーで、デベロッパーのコンポーネントをデザインに活用しましょう。UXPin Merge へのアクセスリクエストはこちら

例3:Apple のヒューマンインターフェースガイドライン

Apple デザインシステム

Apple にはトップクラスのデザインシステムがあります。それは ヒューマンインターフェイースガイドラインと呼ばれるもので、Web デザインのエッセンスやパターンライブラリ、ダウンロード可能なテンプレートなど、膨大でかなり貴重なデザインシステムのリソースを提示しています。そして iOS の UI キットライブラリも UXPin アカウントで利用可能です。

このシステムは、スティーブ・ジョブズ氏の以下のデザイン原則に従っています:

  • 細部までこだわって精密に作り上げる
  • UX(ユーザーエクスペリエンス)とユーザーとのつながりを重視する。
  • より大きなスケールで本当に重要なことに集中する
  • 具体的なデザイン言語と実践により、ユーザーの反応を求める
  • 初心者から上級者まで、ハイテクが持つ親しみやすい側面を活かす
  • すべてをシンプルにする

Apple のデザインシステムの特徴

Apple のヒューマンインターフェースガイドラインは、iOS、macOS、vOS、watchOS のデザイナーとデベロッパーの両方のための実用的なリソース、ビジュアルガイドライン、スタイルガイドで構成されています。

それには、以下の使用方法に関するデザインシステムのドキュメントが含まれています:

  • メニュー
  • ボタン
  • アイコンと画像
  • フィールドとラベル
  • ウィンドウとビュー
  • タッチバー
  • インジケータ
  • セレクタ
  • 拡張機能
  • ビジュアルデザイン
  • ビジュアルインデックス
  • アプリのアーキテクチャ
  • システム機能
  • ユーザーインタラクション
  • テーマ

例 4:Atlassian のデザインシステム

デザインシステム Atlassian

Atlassian のデザインシステムは最高峰のひとつであり、連携をシームレスかつ簡単にすることで、世界中のチームに価値ある支援を提供することに重点を置いています。また、Atlassian のデザインガイドラインも UXPin のライブラリコレクションの一部です。

Atlassian のデザイン哲学は、デジタルエクスペリエンスを活用してチームと個々のチームメンバーの生産性と全体的な可能性を上げることであり、それは世界的に使われているコラボレーションツールである Trello と Jira に完璧に反映されています。

とはいえ、Atlassianのデザインシステムは、プロジェクト内の各ステップでのアジャイルな実践と効率的な追跡を特徴とし、最終的に製品の提供と開発において貴重な成果を生み出します。

Atlassian のデザインシステムの特徴

Atlassianのデザインシステムには以下が含まれます:

例5:Uber のデザインシステム

デザインシステム Uber

Uber によれば、動きはチャンスを呼び起こすものであり、それで彼らのデザインシステムが構成されているらしいです。

結局のところ、Uber のサービスは、配車サービス、乗り合い、フードデリバリー、スクーターや電動自転車を含むマイクロモビリティなど、「移動」が基本となっています。

サブブランドから社内ブランド、製品からプログラムに至るまで、この種のサービスが完璧に機能するために、Uber には世界と共有する効果的なデザインシステムが必要です。

Uber のデザインシステムの特徴

以下は、Uber のデザインシステムの主な特徴です:

  • ブランドアーキテクチャ
  • コンポジション
  • 声のトーン
  • モーション
  • イラストレーション
  • 写真
  • アイコノグラフィ
  • ロゴ
  • タイポグラフィ

例6:Shopify のデザインシステム Polaris

Shopify デザインシステム

Shopify はグローバルな EC プラットフォームであり、ブランドのビジネスの運営や成長に必要なあらゆるものが一箇所で提供されています。

彼らのデザイン理念が、より良い、より利用しやすい商業体験を生み出すことに重点を置いているのも納得です。

Polaris という Shopify の公開デザインシステムには、同社の中核となる以下のような価値観が反映されています:

  • ユーザーを思いやり、配慮する
  • やろうとすることを達成するための適切なツールを提供する。
  • ブランドイメージに合った最高レベルの職人技を楽しむ
  • 早くて正確なソリューションを提供することで、手間を最小限に抑える
  • 常にユーザーの信頼を築く
  • ユーザーに安心して使ってもらう

Polaris デザインシステムには、Shopify のプラットフォーム用のデザインについてのわかりやすく実践的なスタイルガイドがあり、UI コンポーネント、ビジュアルエレメント、コンテンツ、デザイン言語を活用し、より良い UX(ユーザーエクスペリエンス)と製品全般を生み出すための膨大な知識ベースを提供します。

Shopify のデザインシステムの特徴

Shopify のデザインシステムである Polaris には、上記の実践に忠実に従った主な機能が以下のように含まれています:

  • データの可視化
  • アクセシビリティ
  • インタラクションのステート
  • タイポグラフィ
  • アイコン
  • イラスト
  • スペーシング
  • リソース

例7:IBM のカーボンデザインシステム

IBM デザインシステム

IBM は、大企業の IT のニーズに応えることで、世界規模で事業を展開しています。

そのサービスは、ビジネスコンサルティング、資金調達、ソフトウェア開発、ITホスティング/管理から、「ソフトウェアからハードウェアへ」の製品まで多岐にわたります。

IBM の核となる信念は、科学、理性、知性を活用することで、人間の状態、社会、ブランドのいずれであれ、絶え間ない進歩を遂げることにあります。

IBM によれば、いいデザインは単なる要件ではなく、ユーザーに対する実際の責任であるらしいです。

IBM の デザインシステム の特徴

Carbon デザインシステム は、Adobe、Axure、Sketch のデザイナーやデベロッパー向けのツールやビジュアルリソースが以下のように豊富に提供されています:

  • データの可視化
  • パターン
  • コンポーネント
  • ガイドライン
  • チュートリアル

UXPin のユーザーだと、自分のアカウントで Carbon から必要なものがすべて見つかります。

例8:Mailchimp のデザインシステム

デザインシステム Mailchimp

Mailchimp は、メールマーケティングのリーダーとして有名だった時代から、メールだけにとどまらないオールインワンのマーケティングプラットフォームを提供するまでになりました。

Mailchimp の明確な目標は、ブランドアイデンティティとイメージを忠実に守りながら、中小企業の成長を支援するという一点です。

Mailchimp のデザインシステムの特徴

それが、Mailchimp のデザインシステムと、クリエイティブな表現、より良い UX、最高の品質に焦点を当てたその主な機能を作り上げた多くの理由のひとつでもあります:

  • データの可視化
  • グリッドシステム
  • タイポグラフィ
  • コンポーネント

例9:Salesforce Lightning のデザインシステム

Salesforce デザインシステム

 

Salesforce は、統合されたクラウドベースの CRM(顧客関係管理)ソフトウェアを通じて、ユーザーに個別化されたエクスペリエンスを提供するために全力を尽くしています。

Salesforce の CRM の目的は、マーケティング、Eコマース、IT、サービス、営業活動の改善であり、ユーザーも自身で同じことができます。

Salesforce のデザイン哲学は、ハワイ語で「意図的な家族」を意味する「オハナ」に反映されており、同社の活動と全体的な文化を推進する以下の4つの中核的な価値観があります:

  • イノベーション
  • 平等
  • 信頼
  • カスタマーサクセス

Salesforce のデザインシステムの特徴

Salesforce は、コンテンツ管理システムに携わる人が誰でも以下のような主要な機能を学んで恩恵を受けることができる、独自の Lightning デザインシステムを発表しました:

  • デザインガイドライン
  • プラットフォーム
  • アクセシビリティ
  • コンポーネント(多数)

ちなみに、Lightning のコンポーネントは UXPin アカウントライブラリにも含まれています。

デザインシステムを最大限に活用する:UXPin Merge のやり方

Merge tech は、デザインチームと開発チームの間にコミュニケーションギャップがある場合によく起こる一般的な課題に対する適切なソリューションとして作成されました。なので、さまざまな UI コンポーネント、コーディング、ドキュメントの不一致が生じ、製品の効率やメンテナンスに影響を及ぼすことがあります。

正しい方向への第一歩として、必要なコンポーネントをすべて整理するデザイン システムを使って、Merge はその UI 要素をすべてデザイン エディタに直接取り込んでくれます。

矛盾を避けることで時間と費用を節約できるだけでなく、当初思い描いていたものとまったく同じ最終製品を見る喜びも得られます。

Merge tech は、コードコンポーネントによるデザイン、つまりコードコンポーネントをデザインに変換することに重点を置いており、その点で、デザイナーは最終製品の視覚的な側面だけに基づいて(必要なインタラクションのフェイクだけ作りながら)単純にプロトタイプを作成するのではなく、すでにコード化されたコンポーネントを使ってプロトタイプのイメージをデザインできます。

そしてデザインチームは、すでにコード化されたコンポーネントを UXPin のエディタと同期させ、新しいデザインを作成するのに必要なコンポーネントをドラッグ&ドロップできるため、デザインチームと開発チームの間を行ったり来たりする必要はありません。

基本的に、デザイナーはインタラクションのフェイクを作ったり、追加したり、適切な色を探したりする必要はありません。

その一方で、デベロッパーはプロトタイプのプレビューを入手し、利用可能なプロダクションレディの要素で作業を続けることができます。

どのデザインシステムの例がお好きですか?

デザインシステムは、デザイン作業の最適化や改善を行い、チーム間の一貫性を促すことを目的とした、大量の UI コンポーネントとガイドラインで構成されています。

ただし、デザインシステムのメンテナンスや実装が不十分であれば、そのシステムは、多くの不便で混乱しやすいコードスニペット、ライブラリ、コンポーネントに過ぎなくなる可能性があります。

デザインシステムで、デザイナーがより複雑な UX の問題に対処できるようになる一方で、チームメンバーの一貫性を早く促すことができます。さらに、画期的な Merge のテクノロジーをミックスに加えることで、デザインシステムの編成を次のレベルに引き上げることができます。UXPin Merge の詳細はこちら

実際のReactコンポーネントと連携するAIデザインツールを開発

ほとんどのAIデザインツールには根本的な問題が存在します。それはピクセルを生成するだけで、コンポーネントを生成しないという点です。

UIを記述すると、AIはボタンやカード、入力フィールドのように見える矩形を描画します。デモでは非常に印象的に感じられるでしょう。しかしその後、エンジニアは実際のコンポーネントライブラリと一切連携していないため、すべてを一から再構築しなければなりません。

そこでUXPinはForgeを開発しました。これは実際のReactコンポーネントと連携するAIアシスタントです。エンジニアが本番環境で使用するコンポーネントと同一のものを扱います。デザイナーは視覚的に作業しますが、出力結果は本番環境対応のReactコードとしてエクスポートが可能です。

AIによって生成されたUIの問題点

まず、一般的な流れは以下の通りです。

  1. デザイナーがAIツールを使ってダッシュボードを生成する
  2. AIは静的なモックアップ(形、色、テキスト)を生成する
  3. デザイナーがそれをエンジニアに引き渡す
  4. エンジニアはデザインを見てコードベースを開き、実際のコンポーネントを使って作り直す
  5. デザイナーが差異に気づき、チケットを起票する
  6. 繰り返し

AIが生成したデザインは、最初から「本物」ではありませんでした。それはUIそのものではなく、UIの画像に過ぎなかったのです。

これは単なる効率化の問題ではありません。AIが解決すべきとされた設計から開発への引き継ぎプロセス全体の問題なのです。しかし多くのAIツールは、その問題を解消するどころか、プロセスのより早い段階へ移動させただけでした。

もしAIが実際のコンポーネントと連携したら?

UXPin Mergeは、本番環境のReact コンポーネントライブラリをデザインツールに直接同期します。再現品ではありません。SVGをインポートしたものでもありません。ブラウザ上でレンダリングされる、実際のコンポーネントそのものです。

デザイナーは、本物の <Button><Card><DataTable> コンポーネントをドラッグして配置します。実際の props を設定し、hover、disabled、loading、error といった実際の状態を確認できます。キャンバス上にあるものは、そのままコードベースに存在するものです。

Forgeはこれをさらに発展させます。ForgeにUIの生成や編集を依頼すると、単に図形を描くのではなく、あなたのコンポーネントライブラリにある実際のコンポーネントを配置し、設定するのです。

技術的な仕組み

コンポーネント同期

Mergeは、CLIまたはCI連携を通じて、本番環境のReact コンポーネントライブラリに接続します。コンポーネントはエディター内のiframeでレンダリングされ、デザイナーはブラウザ上で実際に動作しているコードをそのまま見て、使用できます。

対応内容:

  • React(主な対応対象)
  • Storybook 連携
  • npm パッケージ
  • Git 同期による継続的な更新

ライブラリが更新されると、デザインツール側も自動で更新されます。手動での再同期は不要です。バージョンの乖離も発生しません。

ビジュアル編集・実際のコンポーネント

デザイナーはコードを書くのではなく、キャンバス上にコンポーネントをドラッグするというビジュアル操作で作業します。ただし配置しているのは、完全な再現度を持つ実際のReact コンポーネントです。

  • すべてのpropsがUI上で公開・設定可能
  • コンポーネントの状態(hover、active、disabled、loading)が標準で組み込まれている
  • バリアントはライブラリで定義された通りに動作する
  • レスポンシブ挙動は本番環境と一致する

デザイナーが <Button variant="primary" disabled> を設定した場合、それは長方形にスタイルを当てているのではなく、実際のコンポーネントに対して実際のpropsを設定しているということです。

ForgeによるAI生成

Forge が UI を生成・編集する際も、これらの実コンポーネントを使って動作します。ライブラリ内で利用可能なコンポーネント、各コンポーネントが受け取れるprops、存在するバリアントを理解した上で処理を行います。

生成される結果はキャンバス上のビジュアルデザインですが、そこに配置されるすべての要素は、実際のコンポーネントであり、実際の設定を持っています。偽物のボタンや近似値のカード、デザインシステムに「なんとなく似ているオブジェクト」は一切ありません。

Forgeは会話のコンテキストも維持します。次のように反復的な指示が可能です。

  • 「保存の横にキャンセルボタンを追加して」
  • 「これをコンパクトバリアントにして」
  • 「横並びのレイアウトに切り替えて」

それぞれのプロンプトは、既存のデザインをベースに変更を加えます。最初から作り直すことはありません。手動編集に切り替えたい場合も、そのまま作業を続けるだけです。モード切り替えもエクスポートも不要です。すでに実際のデザインを編集している状態なのです。

UXP mailing animated asset GS 02 launch
UXPメール配信用アニメーション素材 GS 02 リリース

コードとしてエクスポート

引き渡しの準備ができたら、デザインを React コードとしてエクスポートできます。エクスポートされるコードは、キャンバス上の内容を正確に反映します。コンポーネント、props、構造はすべて同一です。

jsx
// Exported from UXPin
<Card padding="lg">
  <Form>
    <TextField label="Email" type="email" />
    <Button variant="primary" size="lg">Save</Button>
  </Form>
</Card>

エンジニアが受け取るのは、自分たちのコンポーネントライブラリを使ったコードです。翻訳は不要。作り直しも不要です。

APIアクセス

コンポーネントデータ(props、状態、バリアント、構造)は、API経由でも利用できます。これにより、ドキュメントツール、テストパイプライン、その他ワークフローとの連携が可能になります。

これによって何が変わるのか

デザイナーにとって:

  • 近似的なものではなく、実際のコンポーネントを使ってビジュアルに作業できる
  • すべての状態やバリアントが、オーバーレイによる擬似表現ではなく、標準で組み込まれている
  • プロトタイプが実際に動作する ― 本物のインタラクション、本物のレスポンシブ挙動
  • 新しいツールを学ぶ必要はない。依然としてデザインキャンバスで作業できる

エンジニアにとって:

  • エクスポートすると、本番環境でそのまま使えるReact コードが得られる
  • 実際のコンポーネントライブラリを使用しており、翻訳や作り直しは不要
  • propsや構造が、設計された内容と完全に一致する
  • 「そのコンポーネントはそういう動きじゃない」というやり取りがなくなる

チームにとって:

  • デザインとコードの間に、単一の信頼できる情報源が生まれる
  • デザインシステムの採用がツールによって強制される ― デザイナーは存在するものしか使えない
  • AIは、あなたのコンポーネントにしかアクセスできないため、ブランドから逸脱できない
  • 翻訳工程が存在しないため、反復が速くなる

制限事項とトレードオフ

機能しないケースについても正直に述べます。

コンポーネントライブラリが必要(補足あり):チームがまだコード化されたReact コンポーネントで作業していない場合、Forgeの効果は限定的です。これは、すでにデザインシステムへ投資しているチーム向けに作られています。もしFigmaでピクセルを置くだけで、コード化されたライブラリがない場合、現時点ではこのツールは適していません。

  • 補足:幸いなことに、UXPin MergeはすでにMUI、ShadCN、Bootstrapなどのグローバルなコンポーネントライブラリとネイティブ統合されています。カスタムコンポーネントライブラリを持っていないチームにとって、良い出発点となります。

Reactファースト:Mergeは、Reactを強くサポートしています。Vue、Angular、Svelte のサポートは限定的、もしくは存在しません。技術スタックがReactでない場合、この価値提案は成り立ちません。

AIはあくまでAI:複雑なレイアウトでは、手動調整が必要になることがあります。Forgeはゼロから始めるより速いものの、デザイン判断の代替ではありません。素早く80%まで到達し、残りはUXPinの手動デザインツールですべて同じ場所で仕上げます。

学習コスト:Mergeを使うデザイナーは、props、バリアント、コンポーネント構成を理解する必要があります。従来のデザインツールでピクセルを配置するよりも、技術的な作業になります。すべてのデザイナーがこれを望むわけではありません。しかし、デザインエンジニア、テクニカルデザイナー、システム思考の人にとっては、より良い働き方です。

なぜ開発したのか

UXPinは長年、コードベースのデザインツールの開発に取り組んできました。2019年にMergeがリリースされましたが、その背景に常にあった前提は、デザイナーと開発者が異なる媒体(ピクセル対コード)で作業するため、デザインから開発へのギャップが生じているという仮説でした。

多くのデザインツールは、より良い引き渡し仕様、より詳細なエクスポート、より密な統合によってこの問題を解決しようとしています。しかし、それらは依然として、エンジニアが翻訳しなければならない静的な成果物を生成しているに過ぎません。

AIは状況を改善する前に悪化させてしまいました。これまでに目にしたAIデザインツールはどれも、エンジニアが再構築すべき静的なピクセルを増やすだけでした。モックアップは高速化しても、翻訳の問題は解決されなかったのです。

Forgeは、すでに「媒体の問題」を解決しているチームにとって、AIを本当に役立つものにするための試みです。デザイナーがすでに実際のコンポーネントで作業しているなら、AIもそうあるべきです。出力は「見せるだけ」のものではなく、「出荷できる」ものであるべきです。

名前について

「Forge」と名付けたのは、鍛冶場が鍛冶職人の代わりになるのではなく、熱とスピードを与える存在だからです。技術には、依然として人間の判断が必要です。

AIも同じであるべきです。作業を置き換えるのではなく、加速させる存在であるべきなのです。

今すぐForge AIをお試しください

ForgeがUXPinで正式リリースされました。AI機能を有効にしている全アカウントと無料トライアルでご利用いただけます。

UXPinにアクセスし、さっそく始めましょう。

コンポーネントベースデザイン :実装の完全ガイド

コンポーネントベースデザイン とは、UI(ユーザーインターフェース)を「コンポーネント」と呼ばれる再利用可能な自己完結型のパーツに分解する手法です。このアプローチで、デジタル製品開発における一貫性効率性拡張性が上がり、AtlassianAirbnbSalesforce のような大手企業は、時間の節約や生産性の向上のためにこの方法を採り入れています。

主なポイント:

  • 再利用可能なコンポーネント:一度構築すれば、どこでも使用でき、一貫したデザインになる。
  • アトミックデザイン:コンポーネントを「原子、分子、有機体、テンプレート、ページ」の5つにまとめる。
  • デザイントークン:トークン(例:color.primary.500)を使って、プラットフォーム間で一貫したスタイルを実現する。
  • コンポーネントライブラリ:コンポーネントを計画、ドキュメント化、テストして、効率を最大50% 上げる。

概要:

  • Airbnb ではデザインから開発への引き継ぎ時間35% 短縮した。
  • 一貫性のあるインターフェースにより、タスク完了率が39% 上がった。
  • コンポーネントライブラリを使っている企業は、効率が30~50% 上がったたとの報告がある。

そこで本記事では、コンポーネントライブラリの構築からスケーリング、デザインのテスト、React、Storybook「デザインからコード」ワークフローなどのツールの使用まで、あらゆることを押さえていきます。このガイドでデザインプロセスの効率化の準備を始めましょう。

アトミックデザインとは、重要な理由

コンポーネントベースのデザイン の主要概念

コンポーネントベースデザインは、インターフェースを再利用可能な小さなパーツに分割することで、デジタル製品開発のあり方を一変させます。この手法により、チームの作業効率は上がり、製品の長期的な成長と適応が実現します。

モジュラーデザインの仕組み

モジュラーデザインでは、UI(ユーザーインターフェース)を「コンポーネント」と呼ばれる再利用可能なパーツに分割します。その好例として、一貫した外観と機能を保ちながら、単体でも他のコンポーネントと並んでも動作する、Material-UI のボタンコンポーネントが挙げられます。

モジュールデザインには主に以下のような側面があります:

  • 単独で機能するコンポーネントの構築
  • コンポーネント間の明確な関係の確定
  • 一貫したスタイルと動作の維持
  • 製品全体の更新のシンプル化

このアプローチにより、アトミックデザインのような構造化システムの強力な基盤が作られます。

アトミックデザインの使用

ブラッド・フロスト氏のアトミックデザインメソッドでは、コンポーネントは以下の5つのレベルにまとめられることから、最も複雑なデザインシステムでも扱いやすくなります。

レベル 内容 一般例
原子 基本的な UI 要素 ボタン、入力、ラベル
分子 要素の小さなグループ 検索バー、フォームフィールド
有機体 より大きい UI セクション ナビゲーションヘッダ、製品カード
テンプレート ページレイアウト 記事レイアウト、製品ページ
ページ 特定の事例 ホームページ、お問い合わせページ

 

アトミックデザインの実例として、Airbnb の DLS(デザイン言語システム)が挙げられます。同社はこの原則を採り入れることで、デザインから開発へのハンドオフ時間が35%短縮され、プラットフォーム全体のデザインの一貫性が20%改善されました [2]。また、Airbnb のデザイン・システム・リードであるマイケル・フーケ氏は、200を超える再利用可能なコンポーネントの作成に協力し、このアプローチがいかにスケーラブルであるかを示しました。

デザイントークンについて

コンポーネントを整理した後、デザイントークンでシステム全体の一貫したスタイルを確保します。このトークンは、色、間隔、タイポグラフィなどのデザイン値の構成要素として機能します。

デザイントークンを使う理由としては以下が挙げられます:

  • エラーの減少:デザイン トークンを採り入れた後、企業はスタイル関連のバグが最大40% 下がった[7]
  • より速やかな更新:1回のトークン更新で、スタイル全体を変更できる。
  • 連携の改善:デザイナーとデベロッパーが、デザイン要素の統一された言語を共有できる。

例えば、#007bff のような色をハードコーディングする代わりに、チームは color.primary.500 のようなトークンを使います。これにより、テーマの更新やプラットフォーム間の一貫性の維持がしやすくなります。

コンポーネントライブラリの作成

コンポーネントライブラリの構築には、綿密な計画と細部への注意が必要であり、モジュラーコンポーネントとデザイントークンを使うことで、ライブラリはスケーラブルなシステムに変わります。きちんと整備されたコンポーネントライブラリがある企業だと、多くの場合はデザインや開発の効率が30~50%上がり [1]、よく構造化されたライブラリだと、より大規模なシステムとのスムーズな統合が保証されます。

コンポーネントの計画

まず、UI 監査を行い、パターンを見つけ、重複をなくすことから始めましょう。このステップで、コンポーネントの明確な階層を確立でき、最初に開発する必要があるものに集中することができます。

コンポーネントを計画するときは、以下の主要な要素に留意しましょう:

  • ステートとバリアント:さまざまな場面でコンポーネントがどのように動作するかを定める(例: デフォルト、ホバー、有効、無効)。
  • 命名規則Category-ComponentName-Variant などの一貫したパターンに従う。
  • プロップとプロパティ:さまざまなユースケースに合わせてコンポーネントを柔軟にするために、設定可能なオプションを特定する。
  • ドキュメント:使用ガイドラインと技術的な詳細を明確に概説する。

どんな感じかを掴むには、Microsoft の Fluent Design System をご参照ください。これで、効果的な計画によってプラットフォーム間の一貫性をどのように確保できるかがわかります[2]

デザインシステムへのコンポーネントの追加

コンポーネントをデザインシステムに統合するには、構造化されたアプローチが必要であり、その効果的な実行法として、例えば Salesforce の Lightning Design System が挙げられます[8].

統合フェーズ 主なアクティビティ 想定される結果
ドキュメンテーション 使用ガイドライン、コード例 明確な実装経路
レビュープロセス デザインの批評、アクセシビリティのチェック 品質保証
バージョンコントロール Git ベースの管理、変更ログ 更新の整理
ディストリビューション ストーリーブックの統合、パッケージの公開 チームがアクセスしやすくなる

 

コンポーネントデザインのテスト

徹底したテストにより、コンポーネントがさまざまなコンテクストでうまく機能することが保証され、統合後は、厳格なテストによって信頼性が確認されます。Uber の Base Web システムはその好例で、以下のような詳細なテストプロセスを採用しています:

  • デバイス間の視覚的な一貫性のチェック
  • 全ステートでの機能動作の検証
  • アクセシビリティのコンプライアンスの確認
  • パフォーマンスへの影響の測定
  • クロスブラウザの互換性のテスト

このアプローチにより、Uber では市場投入までの時間が30%短縮されました[5].。同社では、Storybook のようなツールを使って、分離されたコンポーネントのテストを行うことで、チームは完全なアプリケーションのセットアップを必要とせずにコンポーネントを操作できます。

アクセシビリティについては、Axe や WAVE のようなツールで、コンポーネントが WCAG 基準を満たしていることを確認することができます[6].

大規模なライブラリに取り組んでいるなら、自動テストは必須です。たとえば、Atlassian の デザインシステムチームでは、自動化されたビジュアルリグレッションテストによって90% のテストカバレッジが達成し、手動での QA(品質保証)の時間が大幅に削減されました[8]

デザインからコードへ

デザインコンセプトを機能的なコードに変換するには、デザインと開発を結びつける構造化されたアプローチが必要であり、組織化されたデザインからコードへのワークフローを使うチームだと、UI コンポーネントの開発時間を40%短縮できるというデータがあります[3]。ここでは、コンポーネントデザインの原則に関する以前の議論を基に、これらのコンポーネントの構築や統合のための実用的な手法について詳しく見ていきましょう。

React コンポーネントの構築

React はコンポーネントベース開発の世界を席巻しており、デベロッパーの74%がプロジェクトに取り入れています[2]。ここでは、デザイン仕様に沿った、モジュール化された再利用可能なコンポーネントの作成に焦点が当てられます。

チームが React コンポーネントを効果的に構造化する方法の例を以下で見てみましょう:

import React from 'react';
import { tokens } from './tokens';

const Button = ({ label, onClick, variant = 'primary' }) => {
  return (
    <button
      className={`button ${variant}`}
      onClick={onClick}
      style={{
        backgroundColor: tokens.colors[variant],
        padding: `${tokens.spacing.small} ${tokens.spacing.medium}`,
      }}
    >
      {label}
    </button>
  );
};

export default Button;

「デザインからコード」のツールと方法

React コンポーネントの準備ができたら、最新のツールでデザインからコードへのプロセスがシンプルになり、連携が改善されます。例えば、UXPin Merge で、デザイナーはコードコンポーネントと直接作業できるようになることから、ハンドオフ時に大体起こる摩擦が減ります。

ツール 主なユースケース 主な利点
UXPin Merge コードベースのプロトタイプ 実際の React コンポーネントを使う
Storybook コンポーネントドキュメント インタラクティブなテスト環境
Zeplin デザインハンドオフ スタイルガイドの自動生成

 

このようなツールでチームの連携がよくなり、コンポーネントの動作やスタイリングに関してデザイナーとデベロッパーが同じ見解を持てるようになります。

コンポーネントをあらゆる場所で機能させる

コンポーネントがプラットフォーム間で一貫して機能することを保証するには、互換性と応答性を重視しましょう。クロスプラットフォームのコンポーネントは、主要な機能を維持しながら、さまざまなデバイスに適応すべきです。

レスポンシブデザインの場合は、次のような方法を検討してください:

import styled from 'styled-components';

const ResponsiveCard = styled.div`
  display: flex;
  padding: 1rem;

  @media (max-width: 768px) {
    flex-direction: column;
    padding: 0.5rem;
  }
`;

モバイルプラットフォームをターゲットにする場合、React Native は素晴らしい選択となります。これだとプラットフォーム固有のニーズに合わせてコンポーネントを調整しながら、同じコンポーネントライブラリを使うことができ、このアプローチにより、パフォーマンスや UX(ユーザーエクスペリエンス)が犠牲になることなく一貫性が確保されます。

コンポーネントシステムの拡張

デザインシステムが進化するにつれて、コンポーネントライブラリの拡張は、増大する需要へ対応するのに非常に重要になります。きちんと管理されたアプローチだと、システムが効率的で一貫性のある状態を維持することが保証され、実際、69%の企業から、構造化されたコンポーネント管理によってデザイナーとデベロッパーの連携が改善されたと報告されています

大規模なコンポーネントの管理

大規模なコンポーネントライブラリの管理には、特に複数のチームを抱える組織では、構造化されたアプローチが必要です。Airbnb の DLS(Design Language System)を例に挙げてみると、同社はこのシステムによって10チームから100チームへと規模を拡大でき、それでデザインの一貫性は確保されながら、機能開発時間は30%短縮されました

大規模なコンポーネントライブラリの管理の戦略は、詳しくは以下のようになります:

管理面 実装戦略 主な利点
一元化 単一のレポジトリを「信頼できる唯一の情報源(Single source of truth)」として使う より簡単なバージョン管理
ドキュメント Storybook のようなツールでの自動化 より良い知識共有
パフォーマンス Lighthouse ようなツールでの監視 読み込み時間の改善
コンプライアンス SonarQubeでの自動チェックの実行 一貫したコード品質

 

リソースの一元化やドキュメンテーションの自動化、パフォーマンスとコンプライアンスの維持によって、効率が落ちることなくシステムを拡張することができるのです。

更新とバージョン管理

コンポーネントライブラリを最新の状態に保つのは、その構築と同じくらい重要です。大規模組織による依存関係の効果的な処理法としては、例えば Netflix の 「Nirvana 」プラットフォームが挙げられます[4]

更新とバージョン管理のための戦略としては、以下のようなやり方があります:

  • セマンティックバージョニング:更新と変更を明確に伝える。
  • 機能フラグ:リスクを最小限に抑えるために更新を段階的に展開する。
  • 変更ログ:変更の詳細な記録を保持して参照しやすくする。
  • 自動テスト:回帰テストを実行して潜在的な問題を早期に発見する。

Material-UI の戦略も際立っています。これには、詳細な移行ガイドと主要な更新のための自動化された codemods が備わっていることから、チームは後方互換性を確保しながら、スムーズにバージョンを切り替えることができます[9]

コンポーネント向け AI ツール

AI で、チームがコンポーネントライブラリのデザインや維持する方法が新たに生み出されており、例えば BBC の GEL(グローバルエクスペリエンスランゲージ)システムでは、AI でコンポーネント作成やアクセシビリティテストなどの作業がどのようにできるかがわかります。

AI ツールがどのように効果的に使われているか、以下で見てみましょう:

ツールのカテゴリ 目的
生成 コンポーネントコードの自動化 GitHub Copilot の提案
アクセシビリティ 自動テストの実行 Deque の axe-core ML チェック
最適化 パフォーマンス分析 Adobe Sensei の統合

 

Figma の AI を活用した自動レイアウトやバリアント機能でも、一貫性のあるコンポーネントの作成がしやすくなっています。一方、Microsoft の「アクセシビリティのための AI」プログラムは、アクセシビリティ問題の自動特定および修正を行うツールの開発に取り組んでいます。

AI は反復的なタスクを処理することができますが、引き続き人間の監視を行うことが極めて重要です。定期的な監査により、AI が生成したコンポーネントがデザイン基準に合致し、想定される品質を満たしていることが保証されます。

次のステップ

矛盾が35%削減されて市場投入までの時間が30%短縮された Airbnb のデザイン言語システム[10]のような戦略からヒントを得て、これから取り組みましょう。

まず、デザイン要素の詳細な監査から始めます。これにより、再利用可能なコンポーネントの特定や、コンポーネントライブラリの効果的な計画ができるようになります。

ワークフローに対応サポートする適切なツールを設定します。デザインには、Figma Sketch のようなオプションを検討しましょう。開発には、Storybook のようなツールが最適であり、バージョン管理には、AbstractGit だと連携が効率化されます。新しく始めるのであれば、UXPin の Merge を使えば、デザインとコードを直接つなげることができます[3]

早い段階でデザイントークンを確定しましょう。これには、カラー パレット、タイポグラフィ、間隔、各コンポーネントのバリエーションなどの主要要素が含まれ、それを文書化することで、明確さと一貫性が確保されます。

パイロットプロジェクトでコンポーネントライブラリをテストします。このステップで、スケールアップする前にワークフローの調整や問題の解決ができるようになります。

2週間ごとに部門横断的なレビューを開催しましょう。この会議は、最新情報の議論、課題の解決、チーム間の連携の確保に非常に重要です[5]

ガバナンスプロセスを導入します。つまり、スムーズな実行のために、明確なガイドラインの作成、レビューチェックリストの設定、テストの自動化、定期的な監査のスケジュールを行うということです。

コンポーネント作成のスピードアップ、バリエーションの探索、パフォーマンスの向上に AI ツールを組み込みましょう [9]。ただし、品質と関連性の維持のために、生身の人間による監視をきちんと行いましょう。

開発速度、デザインの一貫性、コードの再利用性、チームの生産性などのメトリクスを使って進捗状況を追跡します。これにより、システムがどのように進化しているかを明確に把握できるようになります。

さらなるベストプラクティスに進む前に、この手順に従って強力なコンポーネントシステムを構築しましょう。

Q&A

ここでは、コンポーネントベースデザインに関するよくある質問にお答えします。

Figma のデザインを React コンポーネントに変換するにはどうすればいいでしょうか?

Figma のデザインを React コンポーネントに変換するには、以下の手順で行えます:

  • デザイン分析:まず、Figma のコンポーネント構造と階層を確認する。
  • React コンポーネントの構築:Figma のレイアウトを反映する React コンポーネント構造を作成する。
  • スタイルの適用:CSS-in-JS や styled-components などのツールを使って、デザインのスタイルを実装する。
  • 機能の追加:必要に応じて、インタラクションとステート管理を組み込む。
  • 応答性の確保:さまざまな画面サイズとパフォーマンスに合わせてコンポーネントを最適化する。

その際、Visual Copilot などのツールを使うと、Figma レイヤーから直接コードを生成したり、アニメーションなどの調整を簡単に行うことができるため、このプロセスの一部がシンプルになります。

コンポーネント ライブラリとデザイン システムの違いは何ですか?

コンポーネントライブラリは、基本的に、ボタン、タイポグラフィ、カラーパレットなど、再利用可能な UI 要素の集まりであり、視覚的な一貫性を保つようにデザインされています。デザインシステムはさらに進んで、そのような UI 要素をガイドライン、標準、詳細なドキュメントと組み合わせます。このような構造の層が追加されることで、ワークフローが効率化され、例えば、デザインシステムを採用した企業は、標準化されたプラクティスのおかげで、多くの場合はデザインや開発にかかる時間が短縮されます。

コンポーネントライブラリとは何ですか?

コンポーネントライブラリは、プロジェクト間の一貫性を促進する、再利用可能な UI 要素の中央レポジトリです。最近の調査によると、構造化されたコンポーネントライブラリを使っている企業の69%は、デザイナーとデベロッパー間の連携がよくなっているとのことです[11]。そして最良のライブラリは、各コンポーネントの明確なドキュメントを備え、現在の開発プラクティスと互換性を保つために定期的に更新されます。

関連記事(英語)

カラーコントラスト を評価するための最良の方法

カラーコントラスト を評価するための最良の方法

カラーコントラストチェッカーを使用することで、視覚障害者にとってより魅力的で利用しやすいデザインにすることができます。世界には約3億人の色覚異常者がいます。また、約22億人の人々が視覚に問題を抱えており、デジタル製品の使用が困難になっている可能性があります。

色の組み合わせによるプラスとマイナスの効果を理解することで、ウェブやアプリのデザインをより多くの人に届けることができるようになります。

 カラーコントラスト がデジタル製品をより良くする理由

カラーコントラストチェッカーは、少なくとも2つの重要な点でデジタル製品をより良いものにします。

WCAG 2のガイドラインに沿って製品をよりアクセシブルにする

WCAG 2.1(ウェブコンテンツ・アクセシビリティ・ガイドライン)と成功基準には、幅広い視覚障がい者が製品にアクセスできるようにするためのルールが定められています。

文字色と調和する背景色を使用すると、製品を使用できない人が出てきます。また、色弱の方は、一般的な色とは異なる色を選択した場合、文字や画像が見えにくくなることがあります。

そのような場合には、色を変えるだけで認識しやすくなることがあります:

  • ユーザー・インターフェース・コンポーネント
  • ウェブページのコンテンツ
  • ナビゲーショナル・メニュー
  • ロゴマーク

アクセシビリティに配慮したカラーピッカーを使えば、より多くの人に使ってもらえるデザインを簡単に作ることができます。WCAG 2ガイドラインのすべてに準拠したデザインを、内蔵の色覚異常シミュレータコントラストチェッカーでチェックできます。

このテーマについては、「アクセシビリティについてデザイナーが知っておくべきこと」を読むと、より詳しく知ることができます。この記事では、大きな文字やその他の機能を使用してユーザーを支援する方法について説明しています。

カラーコントラストでより多くのユーザーにアピール

デザインをよりアクセシブルにすることで、より多くの人に製品を使ってもらえるようになります。倫理的には、できるだけ多くの人に製品を使ってもらいたいと思うでしょう。経済的にも、より多くの人に製品を使ってもらうことは、ビジネスの収益向上につながります。

色のコントラストを使うことで、より多くのユーザーを惹きつけることができ、それが広告収入の増加や売り上げの増加につながります。倫理的にもビジネス的にも理にかなっていると思います。

おすすめの読み物: New e-book: Web UI Design for the Human Eye (Colors, Space, Contrast)

WCAGの3つのレベルを知る

WCAGには3つのレベルがあります。最高レベルを目指すことで、デザインを可能な限りアクセシブルにすることができます。

以下の説明では、視覚に基づくアクセシビリティのみを取り上げています。他のアクセシビリティ制限のある人に対応するには、他の機能について考える必要があります。

Level A (Beginner)

色だけに頼らないプレゼンテーションです。

Level AA (Intermediate)

テキストと背景色の間のカラーコントラスト比が4.5対1以上である。

ユーザーインターフェースの構成要素、グラフィックス、および周辺色のコントラスト比が3対1以上である。

文字の大きさが2倍になっても、機能や文脈を損なわない。

Level AAA (Advanced)

テキストと背景の間のカラーコントラスト比が7対1以上である。

カラーコントラストチェックツールのご紹介

色を識別できないような視覚障がいがなければ、カラーコントラストチェッカーを使わなければ、最低限のコントラストに達しているかどうかを確認することはできないでしょう。以下のツールは、より多くの人にとってアクセシビリティが向上する色を選択するのに役立ちます。

カラーコントラストアナライザー (CCA)

Colour Contrast Analyserは、コンピュータにダウンロードできる無料のツールです。16進コードやCSSカラーフォーマットを入力したり、カラーピッカーツールを使ってコントラスト比を求め、AAまたはAAA規格に合格しているかどうかを判断します。

内蔵のコントラストチェックツール 

お使いのデザインツールにコントラストチェッカーが内蔵されているかどうかを確認すると、使用した色を簡単に評価することができます。UXPinでは、それを助けてくれるプラグインを探す必要はありません。エディターの中にすでに備わっているからです。

カラー・コントラスト・チェック

 カラーコントラストチェックは、あなたのデザインがWCAG 2 AAまたはWCAG AAAに準拠しているかどうかを簡単に知ることができます。背景色と前景色の16進数を入力してください。結果として、コントラスト比が表示され、準拠しているかどうかを簡単に「はい」「いいえ」で表示します。

アクセシブルカラージェネレーター

 アクセシブルカラージェネレーターでは、色を16進数で入力したり、カラーパレットを使って入力することができます。入力された色を分析し、AAまたはAAAガイドラインに準拠したコントラストの高い色を、小さい文字サイズ、大きい文字サイズ、通常の文字サイズで提供します。

カラーラボ

カラーラボラトリーツールでは、色を選択して隣り合う色の見え方を確認することができます。また、選択した色を増強して、色弱の人が見るのと同じように見えるようにします。これにより、色弱者が製品をどのように感じるかについて、かなりの洞察を得ることができます。

カラーセーフ

カラーセーフは、WCAGガイドラインに基づいてカラーパレットを生成します。色、テキストサイズ、フォントファミリーを選択すると、WCAG基準に準拠したカラーパレットが作成されます。

APCAコントラスト計算機

APCAコントラスト計算機は、American College Personnel Associationが策定したガイドラインに準拠するように設計されたツールです。APCA Contrast Calculatorの特徴は、シンプルかつフルフォントマトリックスバージョンのツールを提供していることです。文字サイズと色のコントラストがAPCAの基準を満たしているかどうかだけを知りたい場合は、シンプルなバージョンを使用できます。より多くの変数を加えたい場合は、フルフォントマトリックスバージョンをお試しください。

UXPinで適切なカラーコントラストを確保する

UXPinでは、最終製品と同様の外観と性能を持つプロトタイプを作成することができます。そのため、プロトタイピングと製品リリースの段階でカラーコントラストが変わることを心配する必要はありません。

14日間の無料トライアルでは、コントラクトチェッカーを内蔵したエディターやその他多くの機能をお試しいただけます。ご登録はこちらから。クレジットカードは不要です。

React vs. Flutter : フレームワーク

React vs. Flutter : フレームワーク

ReactとFlutterの両方が話題になっています。どちらもサイトやアプリの構築を容易にするフレームワークですが、すべてのソリューションが万人に通用するわけではないので、自分にとって最適な選択肢を調べることが重要です。今日は、 ReactとFlutter の比較をしてみましょう。あなたにとって最適なフレームワークはどちらでしょうか?

今やアプリは、私たちの生活のほぼすべてを管理するために使われています。Global Web Indexによると、人々は自分の時間やその他すべてのことを把握するために、ますますモバイルアプリを利用するようになっています。

React NativeがFlutterよりも優れている理由

この2つのプラットフォームを比較する際には、さまざまな要素を考慮する必要があります。しかし、最終的に得たい結果は、意思決定プロセスにおいて大きな役割を果たします。扱いやすく、高速で、必要な機能を備えた安定したアプリを実現できるフレームワークが必要です。もちろん、アプリの更新やコードの管理も簡単に行いたいところですが、一番の目的は、機能的で問題のない製品を最終的に手に入れることです。

では、この2つのフレームワークにはどのような特徴があるのでしょうか。

React Nativeは2015年にFacebookがリリースしたもので、React(2013年から利用可能)を使ってネイティブアプリケーションを作るためのフレームワークです。Flutterもネイティブアプリの構築を目的としていますが、ポータブルなUIツールキットです。Flutterは2018年に、Googleからリリースされました。

どちらのフレームワークも無料で、どちらもオープンソースですが、エンジニアは開発を続けています。

ユーザーインターフェースのバリエーションが増える

アプリのフレームワークを選ぶ際に重要なのは、ユーザーインターフェイスです。ユーザーは、異なるプラットフォームであなたのアプリをどのように体験するでしょうか?

React vs. Flutter : フレームワーク - ユーザーインターフェースのバリエーションが増える

React Nativeは、AndroidとiOSのネイティブコンポーネントを提供しているので、プラットフォームを問わず同じ体験ができます。コンポーネント、ボタン、ウィジェットなどはすべてプラットフォーム間で同じで、OSのUIを更新すると、アプリのコンポーネントもすべて即座に更新されます。React Nativeには、多種多様な外部UIキットが用意されており、その中から選ぶことができます。iOSスタイルのコンポーネントや、他のいくつかのキットからニーズに合わせて選ぶことができます。

Flutterには、インタラクティブなウィジェット、プラットフォーム、ビジュアルデザインなど、独自のデザインを持つ柔軟で高速なレンダリングのUIがあります。これらは、誰もが望んでいるわけではありませんが、ネイティブのコンポーネントを置き換えることができます。また、Flutterはピクセルレンダリングを採用しており、どのデバイスでもUIがピクセル単位で同一になるようになっています。

 多様性とオプションを求めるなら、React Nativeが必要です。Flutterは柔軟性に優れていますが、種類は少なくなります。

よりシンプルなプログラミング言語

React NativeがJavaScriptを使用していることは、すでにご存知かもしれません。これは、ほとんどの開発者がすでに慣れ親しんでいる有名なプログラミング言語です。実際、Stack Overflowによると、プロの開発者の70%以上がJavaScriptに精通しています。以前にJavaScriptを使用したことがあれば、直感的に操作できます。

Flutterは、Googleがほぼ独占しているDartというプログラミング言語を使用しています。Dartを使うことで、ネイティブコードをより高速にコンパイルすることができますが、Google以外の人にとっては学習曲線が急になるということです。

この場合、多くの人はすでに知っているものにこだわりたいので、React Nativeが選ばれる傾向にあります。

開発に必要な時間が少ない

開発者は常に、アプリを完成させ、完璧にして送り出すことを急いでいます。つまり、Flutterよりもはるかに高速なReact Nativeが必要なのです。このフレームワークは、モバイルアプリを非常に迅速に作成できるように設計されています。これには、Dartの代わりにJavaScriptを簡単にプログラミングできることなど、さまざまな要因があります。

Flutterは、各セクションを個別にコーディングする必要があるため、時間がかかります。React Nativeでは、必要に応じて配置や調整ができる既製のコンポーネントが用意されています。また、アプリ内の他のコンポーネントに影響を与えることなく、必要に応じてこれらのコンポーネントを再利用することができます。

異なるコーディングスタイル

React Nativeはより複雑なコード構造を持っていますが、Webアプリ、Android、iOS、Windows OSなどを通して同じコードを使用することができます。そのため、無償で提供されているサードパーティのライブラリでコードを共有することが可能です。開発者であるあなたは、互換性があるかどうかを気にすることなく、実際のコードに集中することができます。

一方、Flutterは、よりシンプルなコードの選択肢に傾いています。すべてのコードを一箇所に集めて、すべてにアクセスすることができます。テンプレート、データ、スタイルは分離されていません。この方が使いやすいのですが、コードの共有は、AndroidとiOSの間でしかできません。これは変更されることが予想されますが、今のところ、FlutterはReactよりもはるかに制限されています。

全体として、React Nativeは42%の開発者に、Flutterは39%の開発者に選択されており、React Nativeが好まれていることがわかります。アプリの作成にはどちらのオプションも使用されますが、FlutterではなくReactを選択する明確な理由があります。

UXPinは、世界中の製品チームがアイデアをより早く製品にするためのデザインプロセスツールです。

UXPinの革新的なテクノロジーであるMergeにより、PayPalはDesignOpsの課題を簡単に解決することができました。UXPin Mergeでは、Reactコンポーネントを使ってデザインし、最終製品との完全な一貫性を実現することができます。

UXPin + Merge

プロトタイプ作成時の8つのミス

8 Common Prototyping Mistakes

プロトタイプの作成は、デザインのアイデアを検証するための最良の方法の一つです。プロトタイプの作成に「完璧」な方法はありませんが、デザイナーが犯しがちな間違いがあります。これらのミスは、プロトタイプの適合性に影響を与え、デザインプロセスを遅らせる可能性があります。ここでは、プロトタイプ作成における8つの一般的な間違いと、それを回避するためのヒントをご紹介します。

Mistake #1: 明確な目標を持たずにプロトタイピングを行う

プロトタイピングの最初の間違いは、何を達成しようとしているのか、明確な目標を持たずにプロトタイピングプロジェクトを始めることです。プロトタイプは新しいウェブサイトのテストに使うのか、それともチェックアウトフローなどの特定のフローのテストに使うのか。ステークホルダーは誰になるのか?タイムラインは?このゴールは、プロトタイピングのプロセス全体を導く北極星のような役割を果たし、プロジェクトが軌道修正されるのを防ぎます。さらに、優れたゴールは、成功がどのようなものか、それをどのように測定するかも定義します。SMARTなどのフレームワークを利用して、プロトタイピングプロジェクトが明確な目標を持つようにしましょう。

Mistake #2: プロトタイピングが早すぎる

多くの場合、デザイナーは目指すデザインソリューションの明確なイメージを持つ前に、プロトタイピングプロセスに突入します。プロトタイピングツールを開いて、デザインソリューションが勝手に形になると思い込んでしまうのだ。問題は、プロトタイピングツールを使うと、デザイナーはハイレベルなデザインコンセプトではなく、レイアウトや配置などのディテールに集中してしまうことです。

アイデア出しのプロセスを省略したり、急いだりすると、最初に思いついたデザインソリューションに固執してしまい、それが最良のものではない可能性があります。このような失敗をしないために、以下のことを心がけてください:

  • デザイン思考を用いて、複数のデザインソリューションをブレインストーミングしてから、プロトタイプ化するものを選ぶ。最良の結果を得るために、プロダクトマネージャーなどの社内の関係者をこのプロセスに参加させる。
  • ラピッドプロトタイピングを行う場合でも、さまざまなデザインソリューションのスケッチ、モックアップ、またはワイヤーフレームを作成する。
  • プロトタイプを作成する前に、主要なページや画面をそれぞれスケッチしたり、ワイヤーフレームを作成したりしましょう。そうすることで、プロトタイプの作成に費やす時間を減らすことができます。

 

Mistake #3: 誤ったプロトタイピングツールの使用

プロトタイピングツールを選ぶ際、まず最初に考えるべきことは、自分が求める忠実度のレベルです。しかし、多くのデザイナーは、自分が使いこなせるプロトタイピングツールや、会社が提供するプロトタイピングツールを使用してしまいます。そのため、コードベースではなく、イメージベースのアプローチになってしまい、ツールが提供する忠実度のレベルに合わせてプロトタイプを作成することになります。 

忠実度の低いプロトタイプが必要な場合は、ホワイトボードやペンと紙を使ってペーパープロトタイプを作成することができます。しかし、本物のように見えて、本物のようにインタラクティブなハイフィデリティ・プロトタイプが必要な場合は、UXPinが最適な選択です。高度なインタラクション、変数、ステートを使用して、実物のようなプロトタイプを簡単に作成することができます。

どのプロトタイピングツールを選ぶにしても、そのツールがあなたの目標に沿っていることを確認してください。忠実度の低いプロトタイプで十分なのに、忠実度の高いデジタルプロトタイプを作成したり、その逆を行ったりしてはいけません。

Mistake #4: 実際のデータではなく、プレースホルダーのテキストや画像を使う 

プロトタイプは、できるだけ最終製品に近いものでなければなりません。Lorem Ipsumのようなプレースホルダーテキストを使用すると、製品のテストバージョンであるかのような印象を与え、ユーザビリティテストのプロセスを中断させてしまいます。既存のコンテンツを利用するか、ライティング部門に依頼して、ラピッドプロトタイプ用のコピーやコンテンツを提供してもらいましょう。

UXPinには、名前、都市、画像などのデータが組み込まれており、プロトタイプを本物のように見せることができます。ストックイメージを探したり、Lorem Ipsumを使ったりするために多くの時間を費やす必要はありません。また、同様にデータをインポートすることもできます。

Mistake #5: インタラクティブ性を重視しない

優れたプロトタイプは、単純なページ遷移だけではありません。リアルなユーザー体験を提供する必要があるのです。プロトタイプを作成する際には、最終的なデザインと同じように、ユーザーが操作するとユーザーインターフェースが反応するようにしてください。

インタラクティブなプロトタイプを作成しないと、拡張可能なメニューの動作や条件付きナビゲーションの流れなど、機能性に関するフィードバックを得る機会を逃してしまいます。インタラクティブ機能は、特にモバイルアプリケーションで使用する場合、スタートアップ企業に競合他社に対する優位性をもたらします。さらに、完全にクリック可能なプロトタイプは、デザインの引き継ぎや開発プロセスを容易にします。

Mistake #6: プロセスの後半でフィードバックを求める

プロトタイプを次のレベルに引き上げるための最良の方法の一つは、プロセスを通してさまざまな人にフィードバックを求めることです。プロトタイプを他のデザイナーに見せて、フィードバックを求めましょう。また、開発者や製品デザインチームからもフィードバックをもらい、彼らの直感的な反応を測ることができます。

フィードバックを取り入れるのが遅すぎたり、費用がかかりすぎたりするまで、サイロの中で作業をするというプロトタイピングでよくある失敗を避けましょう。最良の結果を得るためには、フィードバックを次のプロトタイプのイテレーションに変更するために使用し、頻繁にフィードバックを求めるようにしましょう。

Mistake #7: プロトタイプに執着しすぎる

一日の終わりに、プロトタイプの目的の一つは、単にアイデアをテストして検証を得ることです。しかし、デザイナーの中には、プロトタイプに執着しすぎて、完璧でなければならないと考えてしまう人がいます。そのため、プロトタイプに多くの時間と労力を費やすオーバープロトタイピングになってしまうのです。もしあなたが夢中になりやすいのであれば、プロトタイピングのワークフローを、すべてのベルやホイッスルを追加するのではなく、最小限の実行可能なインタラクションをデザインすることに集中してください。

Mistake # 8: 失敗で落胆する

ユーザーテストやステークホルダーからのフィードバックの後、あなたのデザインソリューションは検証されるか無効になるかのどちらかです。これはがっかりすることですが、失敗と見なすべきではありません。プロトタイピングとは、アイデアや仮定をテストすることであり、そのすべてが検証されるわけではありません。むしろ、次のプロトタイプを改善するための学習機会として捉えてください。

プロトタイピングの失敗を避ける

プロトタイプの作り方に特定のベストプラクティスはありませんが、時間とお金を無駄にしてしまうミスがあります。これらの一般的な間違いを避けることで、有用なユーザーフィードバックを得ることができるプロトタイプを、時間と予算内で作成することができます。UXPinのプロトタイピングツールを使って、実物そっくりのプロトタイプを作成しましょう。

HTMLの行間 :UXデザインの良し悪しを決める境界線

 HTMLの行間 :UXデザインの良し悪しを決める境界線

 HTMLの行間 (段落内の2つのテキスト行の間の垂直方向のスペース)は、UXデザインの世界ではさほどエキサイティングなものではありませんが、思っている以上に重要な要素です。このスタイリング要素には、UXデザインの4つのうちの2つ、エクスペリエンス戦略とインタラクションデザインが関わっており、素晴らしいユーザーエクスペリエンスを生み出すために使用されます。しかし、それ以上に重要なことがあります。

ここでは、 HTMLの行間 について簡単にご紹介します:

  •  HTMLの行間 には、文章の読みやすさを左右する力があります。ユーザーはコンテンツを読むことができなければ、「戻る」ボタンを押すか、アプリを終了してしまうでしょう。
  • ユーザーがコンテンツを読むことができなければ、ユーザーは「戻る」ボタンを押したり、アプリを終了したりするでしょう。アクセシビリティの観点からも非常に重要であり、法的な基準や要件が増え続けているため、正しい行間を使用しなければユーザーを遠ざけてしまうリスクがあります。
  • 適切な行間は、ウェブサイトやアプリの成功を左右します。とてもシンプルなことです。

このガイドでは、HTMLの行間について深く掘り下げ、正しい行間の取り方をご紹介します。

 HTMLの行間 はどのようにしてデザインをより読みやすくするのか?

行間はフォントの問題ではありません。UXデザインの問題なのです。しかし、デザイナーがこの話をするのを最後に聞いたのはいつでしたか?行の高さが重要なのは、テキストが読みやすいか読みにくいかを決めるからです。

  • 行間が広すぎると、余白が多すぎます。文字がぎこちなくなってしまいます。
  • 行間が小さすぎると、文字がぎゅうぎゅう詰めになってしまいます。テキストは不恰好に見えます。
 HTMLの行間 :UXデザインの良し悪しを決める境界線 - 見やすいフォント選び

ほとんどのUXデザイナーは、130~150パーセントの行間が読みやすさ(1.3~1.5)のために最適であり、140パーセント(1.4)が黄金比であると学びますが、その公式がすべてのユーザーのためになるとは限りません。あなたのクライアントのスタイルガイドには、行間の要件が120パーセントから200パーセントの範囲で記載されているかもしれませんが、そのスタイルガイドは、ウェブアクセシビリティが考慮されるずっと前に、誰かが何十年も前に書いたものかもしれません。読みやすさが向上するのであれば、現状の変更を検討してください。(アクセシビリティについては、次のセクションで詳しく説明します。)

残念ながら、デザイナーが納得するようなマジックナンバーはありませんので、CSSで試行錯誤するしかありません。このサイトのように、最適な行間やフォントサイズを計算してくれる計算機もありますが、最終的な判断はデザイナーであるあなたがすることになります。UXPinのようなデザインツールを使えば、本番前に行間や文字の大きさを試すことができます。世界的に有名なUXデザイナーが使用しているのには理由があります。無料トライアルに参加してみませんか?

アクセシビリティのために HTMLの行間 が重要な理由

アクセシビリティのために HTMLの行間 が重要な理由
Photo credit

アクセシビリティは今、UXデザインにおいて大きな話題となっていますが、それは当然のことです。優れたデザイナーは、障がいのある人を含むすべてのユーザーに有意義な体験を提供する製品を設計します。米国では、6,000万人以上の成人が何らかの障害を持っています。これは人口の約4人に1人に相当します。しかし、プロトタイプや製品を作成する際に、障害者の要求を考慮するUXデザイナーはほとんどいません。この状況を変える必要があります。今すぐに。

ウェブのアクセシビリティ基準を策定している国際的なコミュニティであるWorld Wide Web Consortium(W3C)は、次のように述べています:

  • 行間は、段落内では少なくとも1スペース半は必要です。つまり、フォントサイズの150%または1.5倍程度です。
  • 段落の後の行間は、少なくともフォントサイズの2倍にしてください。
  • 文字と文字の間のスペースは、少なくともフォントサイズの0.12倍としてください。
  • 単語と単語の間のスペースは、フォントサイズの0.16倍以上にしてください。

これらは単なるガイドラインであり、法律ではありません。また、W3CはUXデザイナーに何かをさせることはできませんが、アクセシブルデザインの原則は、デザインチームに道徳的な義務をもたらします。障害のある人の中には、何年もウェブサイトやアプリに関わることができない人もいます。よりアクセシブルなデザインへのシフトは、すべてあなたのようなUXデザイナーから始まります。

 HTMLの行間 がUXデザインを左右する

 HTMLの行間 は、ユーザーには気づかれないかもしれませんが(よほどひどい場合を除いて)、この微妙なスタイル要素が、プロトタイプや完成したデザインの成功を左右します。UXデザインプロジェクトの開始時には、この問題についてチームと話し合い、クライアントの概要、スタイルガイドやデザインシステム、人口統計学的要素、その他実装を予定しているすべてのデザイン要素を考慮してください。決まったものはありません。行間の調整は後からでも可能です。

他のタイポグラフィ要素も常に考慮することです。フォントサイズ、テキストの長さ、文字間隔はすべて行の高さに関連しており、これらの要素を正しく把握することがあなたの仕事です。一般的なルールとしては:

  • 大きなフォントは、行間を短くした方が見栄えがします。特にヘッダーはそうです。
  • 文字サイズが小さい場合は、行の高さを大きくするとよいでしょう。
  • 段落の幅が広い場合は、行間を多めにとるとよいでしょう。
  • 長い段落も同様です。

最近行われたアイトラッキングの実験では、104人の人がウィキペディアのテキストを読み、研究者はテキストの行間を0.8から1.8に変えて、読みやすさと理解度を測定しました。その結果は?0.8と1.8の両極端の行間では、読みやすさが損なわれており、テキストが多いウェブサイトでは、より控えめな行間を使用すべきだと考えられます。間隔をこの範囲の真ん中あたりに調整すると、最も効果的であることがわかりました。繰り返しになりますが、行間を1.3~1.5程度にすることには議論の余地がありますが、それは文脈によります。

まとめ

HTMLの行間に黄金比はありませんが、次のプロトタイプにテキストを組み込む際には、読みやすさ、アクセシビリティ、そして全体的な美しさを考慮してください。UXデザイナーでこのスタイリング要素について考えている人はほとんどいないので、あなたはデザイン革命の最前線に立つことになります。 タイポグラフィを強化し、スタイリングを効率化するNo.1のUIデザイン・プロトタイピングツールであるUXPinで、完璧な行と文字の間隔を見つけてください。無料でお試しいただけます

Storybook連携を試してみましょう

Storybook連携を試してみましょう

Storybookではデザイナーと開発者がプロトタイプを構築する際に、コードコンポーネントを使用することで、サイロ化を解消しUIの一貫性を向上させることができます。(詳しくは「画期的なStorybookの魅力」に関するこちらのブログをご覧ください)

当社のMergeテクノロジーをベースにしたこの連携により、コードの力を利用して高度なプロトタイプを迅速に構築し、デザイナーも開発者も同じコンポーネントを使って製品を作ることが可能になりました。これにより、ハンドオフプロセスの複雑さを大幅に軽減することができます。

 Product Hunt にもStorybook 連携に関して載せておりますので、ぜひご覧ください!

製品チームが信頼できる唯一の情報源を必要とする理由

製品開発における信頼できる唯一の情報源 とは、製品を設計・製造するために必要なすべてのドキュメントや要素を保管する1つの場所のことです。理想では、信頼できる唯一の情報源 は簡単に共有、常に最新の状態、プロセスに関わるすべての人が使用できることです。

 デザインシステムは、製品チーム間で情報がバラバラになってしまうという問題を解決するはずでした。デザインシステムはUIやドキュメントをシステム化するための素晴らしい第一歩ではありますが、それだけではデザインと開発の作業において完璧には解決できないこともあります。

Storybook連携を試してみましょう - UXPin Merge

そこで、Mergeという革新的なテクノロジーが誕生しました。製品チームは、GitリポジトリやStorybookなどの開発ツールを活用して、DesignOpsプロセスを改善し、デザインとコードの同等性を維持することができます。その結果、デザイナーも開発者も同じUI要素、ドキュメント、コードを1つのソースから使用することができます。

Storybook連携を試してみましょう - Merge統合

開発ライブラリからコードベースの完全なインタラクティブコンポーネントを取り出し、キャンバスにドラッグ&ドロップするだけで、デザインエディタで使用できることを想像してみてください。これが非常にエキサイティングな理由です:

もう 「あのコンポーネントはどこだっけ?」と悩むことはありません。

パズルのピースが散らばっているのと同じように、製品開発に必要なピースを探して作り上げることは、かなりの時間がかかります。コンポーネントやドキュメントを常に最新の状態に保つのは本当に大変なことです。しかし、すべての情報を1つに保管する場所があれば、正しいバージョンのコンポーネントやそのコードを探す必要はありません。

開発者用のライブラリからデザインエディタにUI要素を持ってくると、1つの場所でメンテナンスするだけでよく、ライブラリも自動的に同期されます。

デザイナーと開発者が共通のテクノロジーを使用

デザイナーが作成・開発者が作成したものの間で起こる問題の原因はそれぞれが異なるテクノロジーを使って仕事をしているということです。デザインツールは一般的にベクターやピクセルを使っているのに対し、アプリやウェブサイトは特定のプログラミング言語やフレームワークを使っています。

ベクトルやピクセルを使った手法は非常に限られたもので、最終製品を単純にイメージにしたものに過ぎません。例えば、プロトタイプに実際に動いたりなどの高度なインタラクションを追加したい場合、ベクターやピクセルでは変数や条件付きロジック、あるいは単純な入力フィールドを扱うことができないため、必ずしもそれが作れるとは限りません。しかし、開発者がUIコンポーネントにコードを使用すると、これらの障害はなくなります。

Storybook連携を試してみましょう - コードベースとデザインベースのツールメリット

もし、デザイナーがコードに反映されるようなコードパワーのあるテクノロジーを使ってプロトタイプを作ることができれば、デザイナーと開発者は共通の言語でコミュニケーション、作業ができるのです。つまり、2つの異なる環境でUI要素を作成するのではなく、まったく同じ環境を使用することで、製品制作をスムーズにさせます。

10倍の成果

製品をデザインする際には、ユーザーがクリックしたときに何が起きてどのように動くのかを開発者に説明する必要があります。また、すべてのインタラクションを使用して製品の動きをより上手く説明するために、高再現性なプロトタイプを作成することもできます。通常だと、高度なプロトタイプの作成には多くの時間がかかり、詳細を正確に把握するためには、インタラクションやプロトタイプの機能性についてコメントで長い会話をする必要があります。

この流れはデザインオペレーションの観点から言うと、決して効率的なワークフローとは言えません。しかし、コード化されたUIコンポーネントをデザインエディターで使用することにした場合、デザインプロセス全体が決定的にスピードアップします。

完全にインタラクティブで、すべての制作基準に沿った要素を使って作業すると、従来の方法でプロトタイプを作るのに比べて、10倍以上のデザインにおいての成果が得られます。  節約できた時間をユーザーテストなど他の重要なことに回して、費やすことができます。

ユーザーテストの特典:最終製品と同じように動作するプロトタイプ

すべてのUIパーツが完全にインタラクティブでない場合、どうやってプロトタイプをテストする方法としてユーザーテストがあります。しかし、ユーザーテストでは、ユーザーが自身でクリックし、プロジェクトを進めることができなければ十分な信頼性が得られません。アコーディオンをクリックしたり、メニューにマウスを置いたりすると何が起こるかを説明しても、それを見せるのと同じ品質のフィードバックは得られません。

コードで作られたプロトタイプが最終製品とまったく同じように動作するようになれば、ユーザビリティテストで完全に没入感のある体験を提供して、リサーチチームをサポートすることができます。

コードでデザインする  Storybookの連携を試す

Storybook は、開発者がUIコンポーネントを構築し、保存するための唯一の場所です。また、要素をテストしたり、明確なドキュメントを作成するのにも最適なツールです。Storybookは、React、Angular、Vueなどの人気の高いフレームワークを含む多くのフレームワークをサポートしています。

UXPinで Storybook連携 

Storybook は、Merge 技術を使用してコード化されたコンポーネントをデザインツール UXPin と同期させる 2 つの連携のうちの 1 つです(Git repo が最初の連携です)。Storybookとの連携は約1分で完了し、コード化されたコンポーネントを使ってすぐにデザインすることができます。

プライベートまたはパブリック?

あなたのStorybookライブラリは、プライベート(あなたのサーバーにホストされ、選ばれたユーザーだけがアクセスできる)と、URLを知っている人が自由にアクセスできるパブリックのいずれかにすることができます。私たちの統合は両方のタイプをサポートしているので、どちらを使用するかは問題ではありません。

UXPinで Storybook連携 を試す

パブリックのライブラリでは、ストーリーブックのURLをコピー&ペーストするだけで簡単に利用できます。プライベートライブラリでは、開発者は2つの簡単なコマンドを実行するだけです。プライベートライブラリをお試しになりたい場合は、ガイドツアーをご利用ください。

既にお持ちで、他社のパブリックライブラリを使用されたい場合は、オープンソースのStorybookのdocsをお楽しみください。

コードで自由にデザイン

同期されたコンポーネントはコード化されているので、デザイナーは開発者の手を借りずに、UXPinエディタ内でプロパティ、入力、スタイルを自由に変更することができます。また、コードに埋め込まれた制約は、スタイルにミスマッチがないようにガイドしてくれます。

Storybook連携を試してみましょう - コードで自由にデザイン

ノンデザイナーに権限を与え、より良いDesignOpsを実現する

コードを使ってデザインすることで、DesignOpsプロセスを再定義することができます。PayPalは、製品開発のデザインフェーズを変革することで、デザイナー以外の役割を持つ人々がUXPinのコード・コンポーネントを使ってアイデアを視覚化できるようにした素晴らしい例です。PayPalのErica様と彼女のチームはMergeとGit の連携を使用していますが、Storybookを活用しても同様の結果を得ることができます。

デザイナー以外の人は、コンポーネントをキャンバスにドラッグ&ドロップして、必要に応じてコントロールを操作するだけなので簡単です。その後、デザインドラフトをもとにUIの専門家がプロジェクトを仕上げ、ユーザビリティに焦点を当てることができます。

コードの力を味わう

登録して、Storybookから直接コンポーネントが提供されている内蔵のマテリアルUIライブラリを試してみたり、ご自身で新しいライブラリを同期させたりすることができます。コードの力を実感し、信頼できる唯一の情報源を使用することで、製品チーム全体がどのようなメリットを得られるかをご覧ください。

2026年に知っておくべき React デザインパターンのおすすめ

知っておきたいReactの デザインパターン

React の絶大な人気と実用性は否定できません。長い間、ほとんどのWebデザインは CSS、HTML、JavaScript で構築されていましたが、Reactはその使いやすさで、多くのデベロッパーから愛されています。Reactの最も魅力的な機能としては、再利用可能なコンポーネント、優れたデベロッパーツール、広範なエコシステムなどが挙げられます。

そして、DOMを直接操作するという従来のアプローチの代わりに、React は仮想 DOM コンセプトという形で有用な抽象化レベルを導入しました。

このライブラリは、技術大手である FacebookのReact開発者たちによって積極的に開発および保全されているため、他のフレームワークやライブラリよりもずっと優位に立っており、JavaScript コミュニティの大勢の貢献者も、React改善に貢献しています。

このような要因のおかげで、Reactは、常に新しいフレームワークが登場してフロントエンドデベロッパーの間で評価を競っているにも関わらず、デベロッパーの間で変わらず人気です。

code design developer

React.js には数多くのデザインパターンが存在しますが、本記事では、Web アプリを構築する際にぜひ知っておきたい、Reactのおすすめパターンをいくつか見ていきます。

Git レポジトリ、Storybook、または npm からコンポーネントを使ってプロトタイプを構築しましょう。コンポーネントをデザインエディタにインポートすれば、デザイナーなしでも魅力的なレイアウトを作成できます。こちらから UXPin Merge へのアクセスをリクエストして、ぜひお試しください。

React のデザインパターンに従うべき理由

まず、デザインパターンが果たす役割を簡単に振り返ってみましょう。簡単に言うと、デザインパターンとは、ソフトウェア開発でよく起こる問題に対する再現可能なソリューションのことです。

それは与えられた要件に応じてプログラムの機能を構築できる基本テンプレートとして機能します。

ちなみに「デザインパターン」を「デザインシステム」と混同してはいけません。デザインシステムについては別の記事でお話ししています。

designops picking tools care

デザインパターンで、開発プロセスのスピードが上がるだけでなく、コードの解読や維持しやすくなります。

デザインパターンの一般的な例としては、Singletonパターンや Gang-of-Fourパターンなどが挙げられます。

ソフトウェア開発において、デザインパターンは以下のように2つの一般的な役割に関連付けられています。

  • デベロッパーに共通のプラットフォームを提供する
  • React のベスト プラクティスが確実に適用されるようにする

もっと詳しく見てみましょう。

役割1:デベロッパーに共通のプラットフォームを提供する

デザインパターンは、既知の問題に対する標準的な用語とソリューションを提供します。前述した Singleton パターンを例に挙げてみましょう。

デザインパターン - 開発者に共通のプラットフォームを提供する

このパターンは単一のオブジェクトを使うことを前提としており、このパターンを実装するデベロッパーは、特定のプログラムがシングルトンパターンに従っていることを他のデベロッパーに簡単に伝えることができ、そのデベロッパー達もその意味を理解できます。

役割2:React のベストプラクティスを確実に適用する

デザインパターンは、広範な調査とテストの結果として作成されたものであり、これでデベロッパーは開発環境に簡単に慣れることができるだけでなく、ベストプラクティスが遵守されるのを保証できるようになります。

その結果、エラーが減り、デバッグの時間が節約され、適切なデザインパターンが実装されていれば簡単に回避できたはずの問題の解明もできるようになります。

他のよくできたプログラミングライブラリのように、React はデザインパターンを広範に活用して、デベロッパーに強力なツールを提供しています。そしてデベロッパーは、React の哲学に適切に従うことで並外れたアプリケーションを作ることができます。 

デザインパターンについてご理解していただけたところで、React.js で最も広く使われているデザインパターンを見ていきましょう。

関数コンポーネントとクラスコンポーネント

コンポーネントには、「関数コンポーネント」と「クラスコンポーネント」の2種類がありますが、両者の違いについては、以下のブログ記事で説明しています: 関数コンポーネント と クラスコンポーネントの違いとは?

クラスコンポーネント

クラスコンポーネントは、JavaScript のクラスに基づいて構築され、それでReact.Component クラスを拡張します。これは React コンポーネントの構築のための従来のアプローチであり、ステートとライフサイクルイベントを管理するための強固な構造を提供します。また、クラスコンポーネントは、ステートとライフサイクルの動作の正確な制御が非常に重要であるような複雑な場面で特に有利です。

クラスコンポーネントでは、React.Component を継承するクラスが定められます。このクラスには、状態を初期化するためのコンストラクタ、コンポーネントの存在のさまざまな段階を処理するためのライフサイクル メソッド、およびコンポーネントの UI を定めるためのレンダリングメソッドが含まれることがあります。この構造化されたアプローチは、内部状態とライフサイクルイベントの細心の注意を払った管理が必要な複雑なコンポーネントを処理する場合に有用です。

以下は、React のクラスコンポーネントの例です:

import React, { Component } from 'react';

class MyClassComponent extends Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 0,
    };

    // Binding 'this' context to the method
    this.incrementCount = this.incrementCount.bind(this);
  }

  incrementCount() {
    this.setState((prevState) => ({
      count: prevState.count + 1,
    }));
  }

  render() {
    return (
      <div>
        <h1>Count: {this.state.count}</h1>
        <button onClick={this.incrementCount}>Increment</button>
      </div>
    );
  }
}

export default MyClassComponent;

関数コンポーネント

一方、関数コンポーネントは、典型的な JavaScript 関数に似ています。プロパティ(props)を引数として受け取り、レンダリングのために React 要素を返します。当初はクラス コンポーネントにある一部の機能が欠けていましたが、React Hooks の導入により関数コンポーネントが注目されるようになりました。

関数コンポーネントは、より単純な場面に適しており、それによってより関数型プログラミングのアプローチが促進されます。また、フックの出現により、関数コンポーネントは「ステート」のイベントと「ライフサイクル」のイベントを処理できるようになり、それで多くの場合、クラスコンポーネントが不要になりました。関数コンポーネントは、その簡潔な構文とわかりやすさにより、単純な UI 要素に最適です。

以下は、フックを使った React の関数コンポーネントの例です:

import React, { useState } from 'react';

const MyFunctionalComponent = () => {
  const [count, setCount] = useState(0);

  const incrementCount = () => {
    setCount(prevCount => prevCount + 1);
  };

  return (
    <div>
      <h1>Count: {count}</h1>
      <button onClick={incrementCount}>Increment</button>
    </div>
  );
};

export default MyFunctionalComponent;

複合パターン

React 開発者が連携して動作するコンポーネントが2つ以上ある場合、1つが親で、残りが子である可能性が高くなりますが、状態を共有してロジックを一緒に処理できることをご存知ですか?

それが複合コンポーネント React パターンの目的です。複合コンポーネント API で、コンポーネント間の関係が示され、コンポーネントが柔軟な方法で通信できるようになります。

詳しくは、LogRocket の React 複合コンポーネントの理解に関する記事をお読みください。

以下は、シンプル化されたAccordion component: を使った複合コンポーネントパターンの例です。

import React, { useState, createContext, useContext } from 'react';

// Create a context to share state between compound components
const AccordionContext = createContext();

const Accordion = ({ children }) => {
  const [openIndex, setOpenIndex] = useState(null);

  const toggleIndex = (index) => {
    setOpenIndex(openIndex === index ? null : index);
  };

  return (
    <AccordionContext.Provider value={{ openIndex, toggleIndex }}>
      <div className="accordion">{children}</div>
    </AccordionContext.Provider>
  );
};

const AccordionItem = ({ children, index }) => {
  const { openIndex, toggleIndex } = useContext(AccordionContext);
  const isOpen = openIndex === index;

  return (
    <div className={`accordion-item ${isOpen ? 'open' : ''}`}>
      <div className="accordion-header" onClick={() => toggleIndex(index)}>
        {children[0]}
      </div>
      {isOpen && <div className="accordion-body">{children[1]}</div>}
    </div>
  );
};

// Usage
const App = () => {
  return (
    <Accordion>
      <AccordionItem index={0}>
        <div>Header 1</div>
        <div>Content 1</div>
      </AccordionItem>
      <AccordionItem index={1}>
        <div>Header 2</div>
        <div>Content 2</div>
      </AccordionItem>
      <AccordionItem index={2}>
        <div>Header 3</div>
        <div>Content 3</div>
      </AccordionItem>
    </Accordion>
  );
};

export default App;

条件付きレンダリング

条件は、ソフトウェアデベロッパーにとって最も重要なツールです。

React のコンポーネントを書く過程で、状態に基づいて特定の JSX コードのレンダリングが必要になることがよくありますが、これは条件付きレンダリングによって実現されます。

条件付きレンダリングは、ニーズに基づいて個別のコンポーネントを作成し、アプリケーションで必要なコンポーネントのみをレンダリングできるため、非常に便利です。

04 1 1.png

たとえば、条件付きレンダリングを使って、ユーザーのログイン状態に基づいてユーザーにさまざまなメッセージを表示できます。そしてそのメッセージは isLoggedIn プロパティの値に従います。

レンダリングプロップ

よくある問題を解決するのにデザインパターンがどのように存在するかについてお話しました。React では、ロジックの繰り返しの問題を解決するのにレンダリングプロップを使うことができます。

React の公式ドキュメントによると、Render propsは「値が関数である prop を使って React コンポーネント間でコードを共有するための手法」と定義されています。

レンダリングプロップは、さまざまなコンポーネント間で同じ状態を共有できることから非常に便利であり、各コンポーネント内のロジックをハードコーディングする代わりに、関数 prop を使ってレンダリングする内容を決定できます。

Render props を利用するライブラリは、Formik、React Router、Downshift などがよく使われています。

以下は、Render Props パターンを示す例です:

import React, { Component } from 'react';

// Component using the Render Props pattern
class Mouse extends Component {
  constructor(props) {
    super(props);
    this.state = { x: 0, y: 0 };

    this.handleMouseMove = this.handleMouseMove.bind(this);
  }

  handleMouseMove(event) {
    this.setState({
      x: event.clientX,
      y: event.clientY
    });
  }

  render() {
    return (
      <div style={{ height: '100vh' }} onMouseMove={this.handleMouseMove}>
        {this.props.render(this.state)}
      </div>
    );
  }
}

// Usage of the Mouse component with render props
const App = () => {
  return (
    <div>
      <h1>Move the mouse around!</h1>
      <Mouse render={({ x, y }) => (
        <h2>The mouse position is ({x}, {y})</h2>
      )}/>
    </div>
  );
};

export default App;

制御コンポーネント

Web フォームは多数のアプリケーションでのよくある要件であり、制御されたコンポーネントは、フォームの状態を処理するための React の答えです。

制御コンポーネントは、props を介して状態を取得し、onChange などのコールバックを使って変更を通知できます。

親コンポーネントはコールバックを処理し、独自の状態を管理することでそれを制御できます。その間、新しい値は制御対象のコンポーネントにプロパティとして渡されます。

デフォルトでは、React フォームは制御コンポーネントと非制御コンポーネントの両方に対応していますが、制御コンポーネントの使用を強くお勧めします。

次のコード スニペットは、制御コンポーネントを示しています。

<input type = “text” value = {value} onChange = {handleChange} />

React フックパターン

フックは React に比較的新しく追加されたもので、React 16.8 で導入されました。

このような関数により、デベロッパーはクラスなしで React を使うことができ、エフェクトフック(useEffect)や State フックなど、さまざまなフックが事前構築されています。

利用可能なフックの完全なリストについては、フック API のリファレンスを参照してください。

また、React の事前構築済みのフックとは別に、独自のフックを作成することもでき、これにより、コンポーネントロジックを抽出し、再利用可能な関数を作成できます。

フックは Reactの追加機能であり、デベロッパーコミュニティではこの新しい追加が非常に熱心に高く評価されました。

ただし、引数がオブジェクト、配列、または関数の場合、フックの操作が少し難しい場合があることを覚えておかないといけません。これはやや混乱する可能性がありますからね。

一方、カスタムフックは使いやすく、デベロッパーにも計り知れないメリットをもたらします。

以下は、フックを使った React の関数コンポーネントの例です:

import React, { useState, useEffect } from 'react';

const Counter = () => {
  // useState hook to manage the counter state
  const [count, setCount] = useState(0);

  // useEffect hook to perform a side effect: updating the document title
  useEffect(() => {
    document.title = `Count: ${count}`;
  }, [count]); // Only re-run the effect if count changes

  // Function to handle incrementing the count
  const increment = () => {
    setCount(prevCount => prevCount + 1);
  };

  // Function to handle decrementing the count
  const decrement = () => {
    setCount(prevCount => prevCount - 1);
  };

  return (
    <div>
      <h1>Counter: {count}</h1>
      <button onClick={increment}>Increment</button>
      <button onClick={decrement}>Decrement</button>
    </div>
  );
};

export default Counter;

高階コンポーネントパターン

より高度な React パターンに関しては、「HOC」という高階コンポーネントパターンがあり、これは、React デベロッパーがアプリケーション内でロジックを再利用したいときに適用されます。

HOC はコンポーネントを引数として受け取り、それを返すときに、コンポーネントにデータと機能を追加します。

たとえば、Redux で React を使う場合、connect関数を介してコンポーネントを渡すと、Reduxストアからデータが挿入されます。そして取得した値は Props として渡されます。

HOC はコアの React API の一部ではなく、JavaScript 関数です。ですが、 継承よりも構成を重視する React 関数コンポーネントの性質と一致しています。

以下は React の HOC パターンの例です:

import React from 'react';

// Higher-Order Component
const withLogging = (WrappedComponent) => {
  class WithLogging extends React.Component {
    componentDidMount() {
      console.log(`Component ${WrappedComponent.name} is mounted.`);
    }

    componentWillUnmount() {
      console.log(`Component ${WrappedComponent.name} is unmounted.`);
    }

    render() {
      return <WrappedComponent {...this.props} />;
    }
  }

  return WithLogging;
};

// Example component
const MyComponent = (props) => {
  return <div>{props.text}</div>;
};

// Wrap MyComponent with withLogging HOC
const MyComponentWithLogging = withLogging(MyComponent);

// Usage
const App = () => {
  return <MyComponentWithLogging text="Hello, world!" />;
};

export default App;

最も一般的な React デザインパターンを使う

React は非常によく使われているライブラリであることが証明されており、このコミュニティは、オンラインで最も急速に成長しているデベロッパーコミュニティのうちの1つになっています。

また、react.js を簡単に学習して適応できる、便利な Web 開発リソースもオンラインで多数見つかります。

React のパワーは、その驚くべき機能とそれが提供する強固なアーキテクチャによるものであり、React の最も顕著で広く愛されている機能の1つに、そのデザイン パターンが挙げられます。

実際、デザインパターンで、このライブラリには並外れた実用性と有用性があり、コードの最適化とメンテナンスがしやすくなります。

そして、これでデベロッパーは本質的に柔軟性があり、パフォーマンスが上がり、保全がしやすいコードベースを生成できるアプリを作成できます。

これまで、ステートレス関数、レンダリングプロパティ、制御されたコンポーネント、条件付きレンダリング、反応フックなど、一般的な React デザインパターンについていくつかお話しました。

ただ、React デザインパターンは本記事で挙げたパターンだけに限定されるものではなく、実装できるデザインパターンがいくつかあることに注意が必要です。

よくあるデザインパターンの使い方に慣れてしまえば、他のパターンに移りやすくなるでしょう。

UXPin Mergeで React ベースのプロトタイプを構築しよう

React アプリケーション開発の本質を捉えるのは、適切なテクノロジーを使うことで簡単になります。UXPin Mergeでは、Reactコードコンポーネントを使って、強力なプロトタイプを構築でき、純粋なコードであるコードベースのプロトタイプを簡単にまとめることができます。こちらからぜひ無料でお試しください。

魅力的でインタラクティブなウェブサイト

16 Enchantingly Interactive Sites You Cant Ignore

見た目の良いサイトや機能性の高いサイトもありますが、その両方を兼ね備えた魔法のようなインタラクティブなサイトもあります。

これらのサイトは、より深いレベルで私たちを惹きつけ、私たちの注意を引きつけ、私たちの想像力を定着させてくれます。私たちをその世界に引き込み、一瞬でも自分の世界を忘れさせてくれるのです。

この記事では、優れたデザインを持つ16のインタラクティブなウェブサイトを分析します。よりよいデザイナーになるために、これらのサイトからどのように学べばよいかを説明します。

インタラクティブ性と楽しさは、互いに影響しあっています。心理学者のEliot Aronson氏は、著書『The Social Animal』の中で、人は何かの作業を行う際に、その行為を頭の中で正当化する傾向があると説明しています。このことは、ユーザーが少しでも時間をかけてサイトを楽しむという自己実現の予言につながりやすいです。

これは必ずしもインタラクションに限ったものではありません。ビデオや心に響く映像など、感情を揺さぶるコンテンツでも同じ効果を得ることができます。この場合、コンテンツを見たり振り返ったりすることが、インタラクションでのユーザーの役割となります。このような体験は、映画を見たことがある人なら誰でも体験したことがあるように、没入感があり、同じようなつながりを形成することができます。 1 21

今年の新たなデザイントレンドにも注目していきましょう。

1. Nike Reactor

nike react uxpin

出典: Nike

まずはおなじみのNikeからご紹介します。このインタラクティブなウェブサイトでは、楽しくてシームレスなアニメーションと人目を引くビジュアルを使って、自分のReactランニングシューズを作ることができます。しかし、厳密な意味での靴作りではありません。ステッチや生地を選ぶ代わりに、シャボン玉、ストレスボール、スプリングなどを使うことができます。このような楽しいビジュアルを使用することで、ユーザーのエンゲージメントを高め、NikeのReactフットウェアが特別に快適であることをアピールしています。

nike react 2 uxpin

出典: Nike

2. AirBnB Online Experiences

online experience website uxpin

出典: AirBnB Online Experiences

人気の旅行サイトは、多くのリアルなインタラクションを伴わないインタラクティビティの完璧な例と言えるでしょう。AirBnBは、旅先で体験する日常の瞬間に潜む魔法を、注目を集めるさまざまな写真を通して描き出しています。 しかし、AirBnBのインタラクティブなウェブサイトは、従来の旅行サイトを超えて、他の人が主催するユニークなオンライン・インタラクションを提供しています。エキゾチックな場所へのツアーに参加したり、他のシェフから料理を習ったり、あるいはエスケープルームを解決したりと、これらのオンライン体験ができます。

3.  An Interesting Day

interactive website uxpin 2

出典: An Interesting Day

このインタラクティブなウェブサイトは、最先端のグラフィックでなくても魅力的なデザインを作ることができることを示しています。「An Interesting Day」は、デジタルプロダクトスタジオ「Bakken & Bæck」がアムステルダムで開催した2018年のカンファレンスを記録したものです。すべてのアニメーションは手描きでシンプルに作られており、手作り感のあるサイトに仕上がっています。

interactive website uxpin 1

出典: An Interesting Day

Webサイト全体が1つのページで構成されているため、ユーザーが必要とする情報をナビゲーションなしで得ることができます。

4. Chanel: Spring-Summer 2021 Haute Couture Show

haute couture website uxpin

出典: Chanel: Spring-Summer 2021 Haute Couture Show

シャネルは、雰囲気を作り出す方法をよく知っています。このサイトでは、動画、静止画、詩的な文章で書かれた商品説明が、インタラクティブなスクロールナビゲーションと一体となって、ブランドが誇るエレガンスとファッション性に満ちた環境にユーザーを没入させています。

5. Space Needle

space needle uxpin

出典: Space Needle

一般的にスクロールは、没入感のあるインタラクションのための優れた戦略です。シアトルを中心としたスペースニードルのサイトでは、美しいビジュアルと、スクロールで動くアニメーションのボックスでコンテンツを表示しています。ユーザーは通常、サイトを上方向にスクロールして詳細を確認することに慣れていませんが、このナビゲーションパターンは、画面上の旅にマッチしているため、この特殊な状況でも機能しています。

6. APPS

apps uxpin

出典: APPS

APPSは、このリストの中で最もインタラクティブなサイトのひとつです。まず、サイダーの製造工程をガイドツアーで紹介します。数回ボタンを押すと、旅の続きをするように促されます。生き生きとした楽しいアニメーションと、ユーザーを飽きさせないインタラクティブな要素が特徴です。

7. Aquatic Macroinvertebrate Collection

atlas uxpin 

出典: Aquatic Macroinvertebrate Collection

また、教育施設では、学習者の記憶に残りやすく、楽しみながら学習できるという価値を理解しています。「Aquatic Macroinvertebrate Collection」では、あまり知られていない生物を、体の各部分を拡大・縮小して説明文を読みながら観察することができます。それ自体は画期的なものではありませんが、何か新しいものを探求しているような不思議な気持ちにさせてくれます。インタラクティブなウェブサイトを作る際には、最高のデザインではなく、適切なデザインであることを忘れないでください。

8. Make Your Money Matter

money uxpin 

出典: Make Your Money Matter

私たちが好きなインタラクティブなウェブサイトの要素は、ストーリーを語り、ユーザーを教育的な旅へと誘うスクロール型のインタラクションです。スクロールするたびに、ストーリーの新しい部分が見えてきます。見事なイラストとアニメーションは、落ち着いたアースカラーのパレットで表現されています。

9. Mammut

project adventure uxpin 

出典: Mammut 

山に登らずに山を登る。私たちが気に入っているインタラクティブなウェブサイトの要素は、ホームページ上で回転する360度のエベレスト山のアニメーションです。これは、奥行きを出すことでユーザーを引きつけます。また、スクロールすることで、インタラクティブでカスタマイズ可能な登山体験をユーザーに提供しています。

10. Hello Monday

products uxpin 

出典: Hello Monday

私たちのお気に入りのインタラクティブ要素は、ユーザーがメニューバーをクリックしたときに起こる水平方向のパララックス効果です。カーソルを置くとメニュー項目に動きが出るものや、2Dイラストのアニメーションなど、意外性のある要素が注目を集めています。

11. Ocean School

classroom uxpin 

出典: Ocean School

私たちが気に入っているインタラクティブなウェブサイトの要素には、ユーザーを海の奥深くへと誘うスクロール・インタラクションがあります。青と白のカラーパレットと3Dアニメーションは、アニメーションと色が変化するホバーの状態とともに、没入感のある体験を生み出しています。

12. Cyclemon

cyclemon uxpin 

出典: Cyclemon

私たちが気に入っているインタラクティブなウェブサイトの要素には、スクロールするインタラクションに垂直方向のパララックス効果があり、自転車のタイプによってユーザーが誰であるかを教えてくれます。大胆で楽しいカラーパレットは、それぞれのバイクタイプに合わせてカスタマイズされています。

13. Fontsmith

sizematters uxpin 

出典: Fontsmith

私たちが気に入っているインタラクティブなウェブサイトの要素には、色や文字の大きさが変わる楽しいホバー状態があります。大胆でファンキーなカラーパレットは、最初からユーザーの注意を引きつけます。

14. Akita

around theglobe uxpin 

出典: Akita

イケアのお気に入りのインタラクティブなウェブサイト要素には、従来のトップダウンの方向性を覆すスクロールインタラクションがあり、インターネット上のデータの動きをグラフ化しています。また、ホバーするとポップアップで詳細情報が表示されます。

15. Pete Nottage

pete nottage uxpin 

出典: Pete Nottage

この声優さんのインタラクティブなウェブサイトは、ホバー・ステートや楽しいアニメーションを駆使して、印象に残るものになっています。

これらのインタラクティブなウェブサイトから学んだこと

私たちがこれらのインタラクティブなウェブサイトから見た最も一般的なインタラクティブ機能は、ホバー・ステートです。その理由は?幅広い業界で簡単に導入でき、気が散ることもありません。Ocean Schoolのようにシンプルなホバーやステートを試すこともできますし、Pete Nottageのようにアニメーションを使ったものにすることもできます。

スクロールインタラクションも、実装が簡単で、アニメーションを使わずに動きを表現できるため、人気のある要素です。Cyclemonのようにパララックス効果を利用したり、Akitaのようにストーリー性を持たせることもできます。ユーザーエクスペリエンスを向上させるために、これらのインタラクティブなウェブサイトでは、インタラクティブな機能やマイクロインタラクション以外にも様々な工夫がなされています。「Make Your Money Matter」のように楽しい配色を使ったり、「Fontsmith」のように感情を呼び起こして没入感を演出したりしている。また、MammutHappy Forecastで使われているビデオやアニメーションは、ユーザーの注意を引く非常に深い映画のような体験を作り出すことができる。

インタラクションを促進し、エンゲージメントを高めるために、優れたインタラクティブサイトでは、一貫したデザインと、ストーリーテリングと優れたコピーライティングの組み合わせを用いて、好奇心を刺激し、エンゲージメントを獲得していました。インタラクティブな要素は、ただ目的のために使うべきではなく、その役割はユーザーの体験を高め、メッセージを伝えることにあります。

UXPinは、世界中の優秀なデザイナーが使用しているプラットフォームです。UX/UIプロジェクト全体をひとつのツールで管理することができます。デザインプロセスをシンプルにすることができます。UXPinを今すぐ完全なリスクフリーでお試しください

【UX/UI デザイナー向け】 プロンプトエンジニアリング ガイド

【UX/UI デザイナー向け】プロンプトエンジニアリングガイド

 プロンプトエンジニアリング では、AI(人工知能)モデルから望ましい回答を引き出すためのプロンプトの設計や改良をします。これは、AI の出力を有用で適切かつ正確な結果に導くための具体的な入力を作成することであり、効果と信頼性を最大化することを目的としています。

OpenAI の GPT-3 や GPT-4 のような高度な言語モデルの開発と普及により、プロンプトエンジニアリングは重要なスキルとなっています。そしてその成功には、AI の能力と自然言語のニュアンスの両方の理解が必要です。こういった課題はありますが、効果的なプロンプトエンジニアリングで、AI システムのパフォーマンスと有用性は大幅に上がります。

最初から本番環境に対応したレイアウトをデザインすることで、製品をより早く出荷しませんか。コードベースのコンポーネントをドラッグ&ドロップして製品のインターフェースを構築し、フロントエンドコードを取得してアプリを構築しましょう。UXPin Merge をぜひお試しください。

 プロンプトエンジニアリング とは

プロンプトエンジニアリングとは、AI モデルが望ましい有用なアウトプットを生成するように誘導する、「プロンプト」という具体的なインプットを作成する技術です。非常にできるアシスタントが、求められてるものを正確に理解できるように明確な指示を出すものだと考えてください。

コンピューティングにおいて、望ましい出力のために入力を作り上げるという一般的な考え方はずっと以前からありましたが、大規模な言語モデルに合わせたプロンプトエンジニアリングの具体的な実践は、わずか数年の歴史しかありません。AI 技術の急速な進歩により、AI が生成する応答の有用性と精度を最大化すべく、この分野は重要な焦点となっています。

 プロンプトエンジニアリング の5要素

ここでは、デザイナーとしてプロンプトを書くときに便利な、プロンプトエンジニアリングの重要な要素を見ていきます。プロンプトを書くたびにクオリティチェックとしてお使いください。これは、コードバックされた UI コンポーネントを作成する機能である、AI Component Creator を使う際に便利です。

エンジニアリングプロンプトには主に以下の要素があります。

  • 明瞭さ:例えば「自動車のインターフェースをデザインしてください」とリクエストするのではなく、「持続可能性の側面に焦点を当てた、最小限の電気自動車のインターフェースをデザインしてください」と言うなど、 AI が要求を正確に理解できるように、プロンプトを明確にして曖昧にしない。
  • 具体性: 例えば「MedTech のロゴを作成してください。」に対し、「青と白を使って幾何学的な形を取り入れた、医療技術スタートアップのミニマルなロゴを作成してください。」など、必要な情報や形式を具体的に示す。
  • 反復的な改良: 例えば「フォントをいくつか提案してください」ではなく、「ハイテク企業の Web サイトに適した、現代的なサンセリフ体のフォントをいくつか提案してください」など、結果を改善するために、プロンプトを継続的にテストして、改良する。
  • 制約:例えば「ポスターをデザインしてください」ではなく「音楽フェスティバルのポスターをデザインしてください。鮮やかな色、大胆なタイポグラフィ、ギターの中心的なイメージが特徴ですが、他の音楽的要素を自由に加えてください」など、 AI の回答を絞り込むために、制約やガイドラインを加える。

2024年のプロンプトエンジニアリングの課題

  • 言語のあいまいさ: 自然言語は曖昧であることが多く、この曖昧さを取り除くプロンプトを作成するのが難しい場合がある。
  • モデルの制約: AI モデルには制約やバイアスがあり、プロンプトがどんなにきちんと設計されていても、回答の質に影響を与える場合がある。
  • コンテキスト管理: AI が確実に会話やタスクを通してコンテクストを理解や維持できるようにするのは大変。
  • 予期せぬ出力: よく練られたプロンプトであっても、想定外の回答や無関係な回答が返ってくることがある。
  • 具体性と柔軟性のバランス:有用な回答を得るのに十分なほど具体的でありながら、さまざまな入力を処理できるほど柔軟なプロンプトを作成するには、微妙なバランスが必要。
  • リクエストの複雑さ: より複雑なタスクの場合、そのリクエストを AI が効果的に処理できるプロンプトに分解するのは大変な場合がある。
  • 回答の評価:AI の回答の質と正確さを判断するのは主観的で文脈に依存する場合があることから、プロンプトの出来具合を測るのは難しい。

デザイナーがプロンプトを書く方法

テスラの元AI ディレクターで AI コミュニティの中心人物であるアンドレイ・カルパシー氏は、「最も熱いプログラミング言語は英語だ」と語っています。プロンプトエンジニアリングには探究心、想像力、洗練性しか要りません。では、デザイナーとしていいプロンプトを書く方法を見てみましょう。

プロンプトを擬人化する

AIコミュニティのもう一人の著名人であるグワーン・ブランウェン氏は、プロンプトエンジニアリングのコンテクストで、いいプロンプトを構成するものについてのインサイトをシェアしています。グワーンによれば、AI モデルから可能な限り最良の回答を引き出すには、よく練られたプロンプトが非常に重要らしいです。

グワーン氏は、プロンプトを人間のような枠組みにすることで、より親近感が出るようにすることがいい戦略だと提案しています。これには、さまざまなプロンプトをテストして、AI がどのように解釈するかを確認し、それに応じて意図するアウトプットに沿うように調整することが含まれます。例えば、プロンプトが無関係な回答やトピックから外れた回答につながる場合は、言い換えや文脈の追加が必要になるかもしれません。

シンプルなものから始めて、プロンプトを洗練させる

グワーン氏はまた、プロンプトを繰り返し改良することの重要性も強調しています。これには、さまざまな言葉遣いや構造を試して、どのようなものが望ましい出力を生み出すかを確認することが含まれます。例えば、問題の対話形式への変換や、タスクの小さなステップへの分解などをすることで、AI のパフォーマンスが大幅に上がるかもしれません。

複雑なタスクを噛み砕く

AI モデルを扱う場合、複雑なタスクをよりシンプルで管理しやすいサブタスクに噛砕すことが有益です。このアプローチは、デザイナーが複雑なプロジェクトをモジュラーコンポーネントに分割して取り組むような感じです。

複雑なタスクは高いエラー率につながる可能性があるため、よりシンプルな一連のステップとして再確定すると、精度と効率が上がります。各サブタスクの出力が次のタスクの入力となり、それによってスムーズなワークフローが構築され、AI によるより良い結果が保証されます。

この方法でプロセスがシンプルになるだけでなく、最終的な出力の品質と一貫性も維持されます。

参考文献と例を示す

AI 教育のリーダーであるレイチェル・トーマス氏によると、明確で構造化されたプロンプトを例とともに与えるのが重要らしいです。これには、タスクに必要なステップの特定、区切り文字を使ったテキストのセクション区切り、AI が特定のスタイルやフォーマットに従うよう導くための例示などが含まれます。そうすることで、プロンプトエンジニアは AI が生成するアウトプットの精度と妥当性を上げることができます。

ChatGPT にペルソナを採用してもらう

AI モデルにペルソナを採用させることは、プロンプトエンジニアリングにおける強力な戦略であり、それで関連性と正確性が上がり、AI の回答がより効果的でユーザーの期待に沿ったものになります。

さらに、AI モデルが特定のペルソナを採用すると、回答全体を通して一貫したトーンとスタイルが維持されます。これは、カスタマーサービス、教育コンテンツ、UX ライティングなど、特定の声やキャラクターを必要とするタスクでは特に重要です。

ChatGPT に何か見逃しがないか聞く

この戦術では、AI モデルに過去の回答を見直すよう促し、潜在的なギャップや欠落している情報を特定します。基本的に、これは品質管理の一形態として機能し、それによってモデルに自己チェックを促すことになり、タスクや質問に関連する側面がすべて対処されていることが保証されます。

例えば最初のデザイン提案や批評を作成した後、デザイナーはモデルに対して 「以前のフィードバックで重要なデザイン原則やベストプラクティスを見逃していませんか?」と促すといいでしょう。これで、見落とされた要素をキャッチすることができ、それによってフィードバックが徹底的かつ完全であることが保証されます。

これによって、設計の重要な側面がすべて考慮され、より強固で完成度の高いデザインソリューションが実現します。

UX/UI デザイナーとしての プロンプトエンジニア リングの実践

プロンプトエンジニアリングを理解して適用することで、デザイナーは AI の力を活用して創造性を高め、ワークフローを合理化し、高品質で関連性の高いデザインをより効率的に作成できるようになります。

AI、コードバックされたコンポーネント、テンプレートを使って、完全に機能するプロトタイプをサッと組み立てませんか。デザインから制作までが10倍速くなります。UXPin Merge をぜひ無料でお試しください。

React.jsコンポーネント を使用する 7つの理由

7 Best Reasons To Use React.js Components In Your Project

React.jsは、UXPinで使用できるJavascriptコンポーネントのライブラリで、プロジェクトをより早く、より簡単に作成することができます。特にUXPin Mergeでは、プロダクションコードから生成されたすべてのインタラクションを使ってデザインを作成することができます。要するに-Reactで可能なことは、あなたのデザインでも可能になるのです。Reactには多くの利点があるため、プロダクトデザイナーや、自分のページやアプリを作ることに興味がある人に人気のある選択肢となっています。

2013年にFacebookによって設計されたReact.jsは、モバイルアプリやシンプルなWebページを構築することができます。しかし、そのシンプルさに惑わされてはいけません。このライブラリには、デザインプロセスを高速化する強力なオプションがたくさんあります。用意されているコンポーネントを使えば、新しい情報やデータの収集に応じて瞬時に更新されるアプリを作ることができます。

1. ページの再読み込みなしに瞬時に更新

Reactの最大の利点は、ページ全体をリロードすることなく、Webページやアプリの個々の要素を更新できることでしょう。Facebookでは、人々が「いいね!」をクリックしたり、コメントを書き込んだりすると、すぐに表示されるという動作を見ることができます。過剰なローディングは必要なく、この機能により、情報が入ってきたときに更新することが可能になります。

2. JSXの中で条件文を使う

JSXとは React.jsコンポーネント をより効率的にするためのJavascriptの拡張機能です。これを使うと、マークアップとロジックの両方を1つのファイルにまとめることができ、複数のファイルで作業する必要がなくなります。JSXを使えば、デザインやアプリの機能を向上させるための条件文を簡単に作成することができます。実際、HTMLとJSXをブレンドすることで、思い通りの結果を得ることができるのです。

また、JSXはJavascriptよりもはるかに高速なので、プロジェクトをより早く終わらせることができます。独自のテンプレートを作るのはとても簡単だと思うでしょう。

3. 同じコンポーネントを再利用する

03 6

モバイルアプリを設計する際、同じアセットを使用することができます。Reactはもともとコードのコンポーネントを再利用しないため、多くの時間が無駄になっていました。しかし、そのオプションが利用できるようになり、同じコードやアセットを使用してからニーズに合わせて調整することで、さらにスピードアップすることができます。

4. 1つのコンポーネントだけをアップデートする。

React.jsコンポーネント はすべて個別に動作するので、アプリのある部分を変更しても、すべてを更新する必要はありません。つまり、アプリの各エリアで同じコンポーネントを使用し、個々のパーツを変更することができるのです。アップデートの回数が減るので、プロセス全体がはるかに効率的になります。 

エラーが発生したり、アプリを更新する必要がある場合も、簡単に行うことができます。多くのアプリやプログラムでは、コードが複雑なためにアップデートが困難です。ある部分を簡単に変更しただけで、アプリ全体に問題が発生してしまうこともあります。しかし、React.jsのコンポーネントを使えば、安心して好きな場所を素早く調整することができます。

5. コードがきれいで安定している。

05 2

他の多くの選択肢とは対照的に、React.jsは安定したコードを提供します。これは、下向きのデータフローを使用することで実現しています。これは、子構造の変化から親構造を守るためのコードです。

これまで、不安定なコードや不具合、長くかかる保守作業に悩まされてきた人は、React.jsを気に入るはずです。そのコンポーネントだけに集中して不具合を修正できるので、より多くの時間を節約できます。

6. React.js は学ぶのが簡単です。

React.jsのコンポーネントはとてもユーザーフレンドリーなので、誰でも使いこなせるようになります。Reactの最大のメリットの1つは、Javascriptを知っていればReactの使い方がわかるということです。また、Javascriptがわからなくても、コンポーネントを学ぶことに問題はないでしょう。コンポーネントは非常によくセットアップされ、設計されているので、理解するのに時間はかかりません。コードも非常に焦点が絞られているので、多くのことをするためには少しだけ学べばいいのです。

7. React.js の背後には、非常に頑丈なエンジニアリングチームが存在します。

07 1

もともとはFacebookが社内で使用するために設計されたものでしたが、React.jsライブラリは現在、誰もが利用できるようになっています。しかし、その設計を支えているエンジニアリングチームは、今でも大きな存在です。その中には、FacebookやInstagramのチームや、その分野に精通した外部の開発者も含まれています。

自分のアプリにReact.jsのコンポーネントを使うときは、専門家の手に委ねることになります。また、世界最大のアプリのいくつかがReactを使用していることを覚えておくと、Facebookが今後何年もReactをサポートする可能性が高くなります。Netflix、Paypal、Dropbox、Khan Academy、Lyft、Reddit、Coursera、BBCなどは React.jsコンポーネント で構築されている数多くのサイトのほんの一例です。React.jsの人気が高まるにつれ、Fortune 500企業のサイトでもReact.jsのフレームワークを目にするようになるでしょう。

世界中で重要視されているReact.jsは、今後も改良を重ね、既存の要素を強化していくことが期待できます。React.jsを使えば、完璧なユーザーインターフェースをより簡単に作ることができ、製品やサイト、アプリをこれまで以上に早く市場に投入することができます。今すぐアプリ開発を始める準備はできていますか?

UXPin は、世界中の製品チームがアイデアをより早く製品にするためのデザインプロセスツールです。

UXPinの革新的なテクノロジーであるMergeにより、PayPalのような企業はDesignOpsの課題を簡単に解決することができます。Reactコンポーネントを使ってデザインし、最終製品との完全な一貫性を実現しましょう。無料相談およびトライアルはこちらから。

デザインツールはイメージベースからコードベースへ

デジタルプロダクトデザインの黎明期から、大きな問題がありました。デザイナーは、製品開発プロセスから完全に切り離されたソフトウェアで作業することを強いられてきました。

他の組織から切り離されたデザイナーは、ラスターグラフィックスやベクターデザインツールを使って絵を描きます。Gimp、Photoshop、Fireworks、Sketchのどれを使っても、プロセスは同じです。デザイナーは自分の意図を一連の静止画像としてレンダリングし、エンジニアに送ります。インターフェイスのさまざまな状態を静的なアートボードで表現するのは、非常に面倒な作業です。そのため、デザイナーはすべてを詳しく説明することはありません。エンジニアは、不完全な静止画像のセットから、ユーザーインターフェース全体を構築しなければなりません。すべてのインタラクティブな状態は、しばしば長い往復のコミュニケーションの中で調整されなければなりません。

その結果は?静的なデザインではユーザーの体験を正確に表現できないため、ユーザーとのテストは非常に基本的なものになります。このプロセスは非効率的で、チームの不満や製品の失敗につながっています。

幸いなことに、今はもっと良いデザイン方法があります。画像ベースのデザインツールに代わって、コードベースのデザインツールのパラダイムが急速に普及しています。ラスターまたはベクターデザインツールでデザインの静的な表現を描く代わりに、デザイナーはコードを知らなくても、デザインの意図を直接コードで表現することができます。この新しいツール群(特にUXPin!)は、以下のような新しいワークフローを提供します:

  • デザイナーとエンジニアの両方にとって、単一の情報源を確立します
  • コーディングの専門知識がなくても、デザイナーがコードの力を最大限に発揮できるようにする
  • 両者をひとつの共同作業、創造的なプロセスに結びつける

 いわば、ワークフロー革命ですね。

Code base design with UXPin

イメージベースのデザインの何がいけないのか?

ご存知のようにデザインツールには2つのパラダイムがあります:イメージベースのデザインツールとコードベースのデザインツールです。 イメージベースのパラダイムは、何十年も前から使用されている古いデザインツールのアプローチです(最も有名なのは、1988年に発売されたPhotoshopです)。デザイナーが何かを描くときには、ラスターまたはベクターグラフィックスを作成するという考え方です。この方法は、最も柔軟性に富んでいます。アイコンから、細部まで美しい高度なイラストまで、あらゆるものを効果的に描くことができます。しかし、プロのデジタル製品開発では、この方法ではうまくいかないことが多いのです。

その理由は以下の通りです:

  • 相互運用性の欠如:これらのグラフィックは、イラストやアイコン、写真を除いて、実際の製品のインターフェースを構築するために使われることはありません。画像ベースのデザインツールでインターフェースデザインに取り組むデザイナーは、コードで設定された制約の外で作業するため、知らず知らずのうちに、コード化が困難でコストのかかるものを作ってしまうことがあります。
  • 正確性に欠ける:イメージベースのデザインツールは、素晴らしいディテールのデザインを作成できる一方で、開発プロセスにおいて最も不正確な結果をもたらします。画像ベースのツールは、デザイナーの作業の結果をレンダリングするのに、まったく異なる方法を使用します。 そのため、デザイナーが画像ベースのツールで選んだテキストやグラデーション、色は、エンジニアが同じ仕様を適用した場合、コード上では異なって見えます。これが、チーム間の大きなミスアライメントの原因となっています。
  • 静的なデザイン:画像ベースのデザインツールのワークフローでは、インターフェースのすべての状態について静的なアートボードを作成し、それらをリンクさせることに重点を置いています。このアプローチはプロのプロジェクトでは破綻します。シンプルなパターン(例:ドロップダウン)であっても、静的なワークフローではすぐに手に負えなくなります。なぜでしょうか?大量のアートボードと、再利用のためにインタラクティブなコンポーネントを保存する機能がないためです。さらに、これらのツールでは、要素の状態やコンテンツの変数、条件付きロジックなどを設定する機能がなく、非常に基本的なインタラクションしかできません。
  • デザインとエンジニアリングの連携が弱い:これらのツールは、エンジニアリングプロセスとは完全に切り離されており、効率的に統合することができません。この断絶は、両方の世界のアウトプットの性質そのものにあります。開発者は最終製品としてユーザーが実際に体験する技術を使って仕事をしますが、画像ベースのデザインツールのユーザーは、最終的なユーザー体験とはかけ離れた抽象的なレイヤーを追加します。実際のインタラクション、再利用可能なインタラクティブコンポーネント、またはコードからコンポーネントをインポートする機能がないため、エンジニアとデザイナーは互いに断絶され、フラストレーションが溜まります。

コードベースのデザインの特徴は何か?

よくぞ聞いてくれました。コードベースのデザインツールでは、ユーザーが何かを描くと、ツールが関連するhtml/css/jsを作成してブラウザに表示し、エンジンをレンダリングして結果を視覚的に示します。このツールは、最もリアルな再現性(デザイナーと開発者が同じ技術を使用している)、最もパワフルなインタラクション、エンジニアとの最も緊密なコラボレーションを提供します。すべての関係者にとって多くのメリットがありますが、今日はデザイナーに焦点を当ててみましょう:

デザイナーにとってのメリット

  • 最もリアルな再現性:画像ベースのツールとは異なり、コードベースのアプローチでは、デザイナーの意図とコード化可能な結果を100%一致させることができます。 コードベースのツールは、ウェブ開発で使用されているものと同じ技術を使用して、デザインプロジェクトのすべてをレンダリングするからです。UXPinで作れるものは、間違いなくコードで作れるのです!
  • デザイナーも開発者も同じ制約があります:画像ベースのツールでは、デザイナーはコードで再現するのが難しい、あるいは不可能なものを作ることができます。一方、コードベースのツールでは、デザイナーと開発者がまったく同じ制約を受けることができます(コードの限界!)。 これにより、両者の同期が確実にとれるのです。
  • アートボードではなく、インタラクティブなコンポーネント:コードベースのデザインツールでは、最先端のインタラクションをリンクアートボードではなく、コンポーネントレベルで使用します。このアプローチは開発現場に近いため、デザイナーは再利用性の高いインタラクティブなデザインシステムを作ることができます。
  • 最もパワフルでリアルなインタラクション:オブジェクトは画面上で動き、相互に作用し、複雑なパターンを作り出すことができます。まるでコードのように、しかしコードの書き方を知らなくてもいいのです。これは、エンジニアとの共同作業(最終バージョンをコーディングする前に、実際に製品を体験すること)や、ユーザーとのテストにおいて非常に重要です。実際のテキスト入力やチェックボックスなど、コードベースのパラダイムでは当たり前の要素が、イメージベースのツールには存在しないのです!
  • デザイナーとエンジニアの最強のコラボレーション:コードベースのパラダイムは、デザインとエンジニアリングのコラボレーションにおいて、まったく新しい、革命的なアプローチを可能にします。

UXPinは、世界中の製品チームがアイデアをより早く製品化するためのデザインプロセスツールです。 UXPinの革新的なテクノロジーであるMergeを使えば、PayPalはDesignOpsの課題を簡単に解決することができました。

UXPin Mergeでは、Reactコンポーネントを使ってデザインし、最終製品との完全な一貫性を実現することができます。無料相談およびトライアルはこちらから。

製品設計・開発モデルを改善する方法: PayPalからの教訓

How to Improve Your Product Design and Development Model

一般的な製品モデリングプロセスは、部門間の行き来が多く、非効率なコースを辿ります。従来の製品設計・開発モデルのライフサイクルでは:

  • プロジェクトマネージャーがアイデアを出し、それを文章化してデザインチームに送ります。
  • デザイナーは、プロジェクトマネージャーが書いた指示を解釈し、それをイメージに変える。
  • デザイナーは、開発者にそのイメージを伝える。
  • 開発者は、コーディングの経験を生かしてイメージを再現し、機能を追加する。
  • プロジェクトマネージャーは、開発者が作った製品の機能を確認し、修正を依頼する。

このプロセスは、プロダクトマネージャーのビジョンを実現するまで繰り返されます。

PayPalのデザインチームは、このような従来の方法論に問題があることを認識していました。PayPal社のデザインチームは、このような従来の手法の問題点を認識し、会社のニーズに合った、より合理的なアプローチを生み出しました。ここでは、PayPal社のアプローチが、自社のプロセスを改善するためのヒントになることをご紹介します。

製品モデルのプロセスを、コードベースのシステム的なアプローチに移行する

従来の製品モデルプロセスがビジネスモデルを阻害し、収益性を低下させることは、少し考えればわかることです。PayPalは、より効率的な製品を開発するためにサイロ化をなくし、開発者やプロダクトマネージャーが自分の仕事をよりコントロールできるようなオペレーションモデルを構築しました。

PayPalはこのアプローチをDesignOps 2.0と名付けました。デザイナーは、PayPalのステークホルダーが期待する美観や機能から逸脱することなく、誰もがさまざまな製品を構築するために使用できる資産を作成しました。コードベースアプローチにより、製品設計にかかる時間を半分に短縮することができました。

プロダクトマネージャーとチームにデザインをさせる

PayPalには、例外的な課題に取り組むことを厭わない素晴らしいデザイナーチームがあります。社内でUX開発者の数が増えるのを見て、小さなデザイナーチームは適応することを決めました。彼らは、デザインチーム以外の人ができることの範囲を広げ、プロセス全体を改善しました。製品の設計・開発モデルを改善するために、彼らのステップをいくつか参考にしてみてください。

再利用可能なテンプレート、ビジュアルアセット、およびインタラクティブコンポーネントのライブラリを構築する

PayPalのデザインチームは、誰もが利用できるオリジナルのデザインシステムを構築しました。物事を効率化するためには、このプロセスにデザイナーと開発者が必要ですが、彼らはそれほどハンズオンな役割を果たす必要はありません。プロダクトマネージャーは、ツールのワイヤーフレームを作るためにデザインチームにアプローチする必要はありません。その代わりに、デザインシステムを使って既存のテンプレートを探します。ロゴやボタンなどのビジュアルアセットも、デザイナーが独自に作成する必要はありません。

マネージャーがデザイナーや開発者に頼らずに製品を作るために必要なテンプレート、ビジュアルアセット、インタラクティブコンポーネントを含むデザインシステムを構築します。例えば、マネージャーが不具合を追跡するデジタルツールを追加したい場合、テンプレートを開き、ツールの目的を反映させるために変更を加え、プロトタイプをテストして意図したとおりに機能するかを確認することができます。

おすすめの読み物: プロジェクトでReact.jsコンポーネントを使用する7つの最適な理由

開発者を軌道に乗せるための重要なガードレールを確立する

コードベースのデザインコンポーネントは、マネージャーと開発者にある程度の柔軟性を与える必要があります。しかし、優れた製品管理は、人々が会社の美的感覚や期待される機能から大きく逸脱することを防ぐ必要があります。新しいIT製品が類似製品と同じように機能しなければ、ユーザーを混乱させることになります。

おすすめの読み物: コードでデザインする

新製品の開発者がデザイナーとの時間を確保しやすいようにする

PayPalのデザインチームは、開発者ステージで製品開発の80%以上を終えることができることを発見しました。しかし、多くの従業員が使用する製品や顧客に送る製品には、デザインチームの意見が必要です。彼らは、開発者やプロダクトマネージャーが必要な指示を簡単に得られるようにしています。

まず、デザインチームは、デザイナーではない人たちができるだけ多くの作業を行えるよう、優れたトレーニングツールを提供しています。社員は3時間を超えるトレーニングビデオにアクセスできます。また、以下のこともできます:

  • 60種類以上のプロトタイピングコンポーネントへのアクセス
  • オフィスアワーを設定して、デザイナーと直接またはバーチャルでミーティングができる
  • フィードバックや指示を得るためにSlackチャンネルを利用する

最終的には、デザインチームが製品をリリースする前に確認します。これは、デザインの正確性と機能性を確保するための最終ステップです。デザイナーがチームメイトを成功させるためのお膳立てをしているので、変更で追加作業が多くなることはほとんどありません。

おすすめの視聴方法: PayPal のプロダクトマネージャーである Sandeep Yeole 氏が UXPin Merge を使用して製品を構築する様子をご覧ください

製品開発を効率化するために UXPin Merge を採用する

UXPin Merge は PayPal のデザインチームの成功に重要な役割を果たしています。UXPin Merge がなければ、プロダクトマネージャーや開発者が製品を作るのを容易にするコードベースのコンポーネントで溢れたデザインシステムを構築することができませんでした。

承認されたすべてのデジタルアセットが目の前にあれば、数分から数秒でデザインの変更ができます。一定の経験を積めば、デザイン部門以外の社員でも1時間以内に自分の製品を作れるようになります。

また、UXPinのプロトタイピング機能は、PayPalが完全な製品を市場に出すことをより簡単かつ迅速にしました。UXPinのプロトタイプは、完成した製品と同じように機能します。プロトタイプは実際のデータを使用し、テスターがコンポーネントと対話し、複雑な製品のように動作します。UXPinのプロトタイプはほとんど微調整の必要がありません。

UXPin Mergeへのアクセスをリクエストすると、コードベースのデザイン、効果的なデザインシステム、完全に機能するプロトタイプの利点を発見することができます。このツールは、PayPalのデザイナーの仕事の仕方に革命をもたらしました。是非体験してみて下さい!