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

コンポーネントベースデザイン とは、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%の企業から、構造化されたコンポーネント管理によってデザイナーとデベロッパーの連携が改善されたと報告されています[10]

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

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

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

管理面 実装戦略 主な利点
一元化 単一のレポジトリを「信頼できる唯一の情報源(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]。そして最良のライブラリは、各コンポーネントの明確なドキュメントを備え、現在の開発プラクティスと互換性を保つために定期的に更新されます。

関連記事(英語)

【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 をぜひ無料でお試しください。

UXデザイン vs UIデザイン その違いを把握しよう

UXデザイン vs UIデザイン その違いを把握しよう

UX の世界で最もよく議論されることの一つに UXデザインUIデザイン が あります。

  • その違いと共通点はどこにあるのでしょうか?
  • UX デザイナーとUIデザイナーのどちらが求められ るのでしょうか?
  • 誰が何をするのでしょうか?
  • 両者は分離すべきなのでしょうか?
  • 両者はどのように連携するのでしょうか?

このような混乱が生じるのは、ほとんどの教育機関では UI デザインが UXデザインカリキュラムの一部として教えられているからです。

UI は UX(ユーザーエクスペリエンス)の一部なのに、なぜ両者を分けるのでしょうか?

これが中小企業やスタートアップ企業では、UIとUXの区別がはっきりしていないことが多いのですが、組織や製品の規模が大きくなると、ユーザーエクスペリエンス部門は、UXデザイナー、UIデザイナー、リサーチャー、ライター、UXアーキテクト、ResearchOps、DesignOps、その他UXスペシャリストに分かれてしまいます。

このように役割は分かれていますが、いずれも素晴らしいカスタマーエクスペリエンスを実現するために、ユーザー中心のデザインを重視しています。

そして、そのために UXチームは予算、製品、技術的な制約の中で、ユーザーの問題を解決するために協力し合わないといけません。そこで本記事では、UXデザインとUIデザインについて、各デザイナーの違いや求められるスキルなどを含めて詳しく解説していきます。

UXPin は、UXチーム、プロダクトデザイナー、エンジニア、その他のステークホルダーを含む組織全体の強力なコミュニケーションを促進するコラボレーションデザインツールです。

UXPin のコメント機能を使って、チームはプライベートまたはパブリックなコメントを作成したり、人にタグを付けたり、タスクを割り当てたりして、UXPin を通じてコミュニケーションをとることができます。UX デザインを強化するために作られたコラボレーションデザインツールをぜひご確認ください。無料相談およびトライアルはこちらから。

ユーザー中心設計(UCD)とは?

ユーザー中心設計とは、UX とUIを結びつける接着剤のようなものです。

UXデザイナーとUIデザイナーが効果的に仕事をするには、ユーザー中心設計のアプローチを用いなければなりません。

ユーザー中心設計とは、顧客を中心にしてデジタル製品を設計するプロセスのことです。

この言葉は、Apple 社の元社員でニールセン・ノーマン・グループの創設者であるドン・ノーマン氏が1986年に発表した著書 ”User-Centered System Design: New Perspectives on Human-computer Interaction ” の中で使われています。

その中で彼は、

人間は適応能力が高いので、人工物への適応という負担をすべて背負うことができるが、熟練したデザイナーは、人工物をユーザーに適応させることで、この負担の大部分を消滅させることができる。」

と書いています。

彼が言いたいのは、UX デザイナー(UX&UI)の仕事は、A)人間の問題を解決し、B)ユーザーの制限をなくすように製品を適応させることだということです。

UXデザイン とは?

UX(ユーザーエクスペリエンス)デザインとは UI(ユーザーインターフェース)を含む、より広範なユーザー体験と、製品に触れたときのユーザーの感じ方を包含するものです。

UXデザイナーは製品の体験を最適化し、より楽しく使いやすいものにするために、ナビゲーションやユーザーフローにも重点を置きます。

では、UX デザイナーの仕事内容や求められるスキルを見てみましょう:

UXデザイナーの業務

  • 製品構造:ナビゲーション、ユーザージャーニー、フロー

  • リサーチ:ユーザー、競合他社、市場の分析

  • テスト:ローフィデリティおよびハイフィデリティ・プロトタイピング

  • デザイン:ワイヤーフレーム、ヒエラルキー、コンテンツレイアウト

UX デザイナーの資質と必要なスキル

  • クリティカルシンカー

  • 問題解決能力

  • データや分析に興味がある

  • 構造に興味がある

  • 機能的なデザイン

  • プロジェクトマネジメント

UIデザイン とは?

UI(ユーザーインターフェース)デザイナーは、デジタル製品や Web サイトでユーザーが操作するボタン、色、アイコン、タイポグラフィー、画像、フォーム、その他の要素やコンポーネントなどの視覚的要素を作成します。

また、アニメーションやマイクロインタラクションなどのインタラクティビティにも関心があります。

基本的に、UI デザインは UX デザインの中の専門的なポジションです。

では、UI デザイナーの仕事内容や求められるスキルを見てみましょう:

UIデザイナーの業務

  • 製品の美学:ブランディング、ビジュアルデザイン

  • リサーチ:デザインリサーチ、ユーザー分析

  • テスト: UIプロトタイピング(ハイフィデリティ・プロトタイピング)

  • デザイン:モックアップ、インタラクションデザイン、アニメーション、ビューポートレイアウト(レスポンシブデザイン)

UIデザイナーの資質と必要なスキル

  • ビジュアル・クリエイティブ

  • グラフィックデザイン

  • ビジュアルデザインに興味がある

  • 美意識が高い

  • 形と機能のバランスをとる

  • ユーザーのインタラクションや行動を考慮する

  • タスクオリエンテッド

UXデザイン と UIデザイン の違い

責任の所在からわかるように、UIデザインでは美的感覚とインタラクティビティが重視され、UXデザインでは全体的な体験、構造、ナビゲーションが重視されます。

なので、UXデザイナーは製品の体験を幅広く見るのに対し、UIデザイナーは各画面で何が起こっているかに注目します。

また、UXデザイナーは通常、リサーチを深く掘り下げ、ユーザーを超えて競合他社や市場分析にまで目を向けます。

対する UIデザイナーは、ビジュアルデザインのトレンドを研究しながら、ユーザーの研究も行います。

では、デザイン思考プロセスにおけるUXデザインとUIデザインの主な違いを以下で見てみましょう。

共感

  • UXデザイナー:ユーザーのペインポイント、ニーズ、感情に焦点を当てる。

  • UIデザイナー:ユーザーの環境や動き、行動に着目する。

定義

  • UXデザイナー:ユーザーの問題と達成しようとする目標を定義する。

  • UIデザイナー:ユーザーが目標を達成するために必要な各ステップに焦点を当てる。

アイデア出し

  • UXデザイナー:ユーザーの問題を解決するための情報アーキテクチャとナビゲーションを検討する。

  • UIデザイナー:ユーザーが製品を操作する際に必要となる要素やコンポーネントを検討する。

プロトタイプ

  • UXデザイナー:ワイヤーフレーム、ローフィデリティ(Lo-Fi)、ハイフィデリティ(Hi-Fi)のプロトタイプを用いて、ページの階層やユーザーフローを設計する。

  • UIデザイナー:忠実度の高いプロトタイプのためのモックアップとインタラクティビティをデザインする。

テスト

  • UXデザイナー:全体的なユーザーエクスペリエンスをテストし、ユーザーが製品を使用する際にどのように考え、どのように感じるかを知りたいと考える。

  • UIデザイナー:ユーザーが製品をどのように操作するかをテストし、実用的な質問を投げかける。

UXデザイン と UIデザイン の共通点

UXデザイナーとUIデザイナーは、どちらもユーザー中心のデザインを重視し、UXデザイン思考の原則に従っています。

また、UXデザイナーはユーザーの目標を定義し、UIデザイナーはユーザーがその目標を達成するのを支援します。

そしてUXデザイナーはユーザーのゴールを定義し、UIデザイナーはそのゴールを達成するための手助けをします。

UXとUIは一つの組織として捉えるべき

UIとUXを2つの独立した部門ではなく、1つの組織として捉えることが重要です。

どちらもユーザーエクスペリエンスデザイナーであり、UXデザインの中で異なるタスクに焦点を当てているだけなのです。

タスクの遂行が製品全体に与える影響

なので、もしデザイナーがどちらかのタスクをうまく実行できなければ、他方のタスクがどんなに優れていても、ユーザーエクスペリエンスと製品全体が失敗してしまいます。

アクセシビリティへの配慮

また、UXデザイナーとUIデザイナーは、どちらもアクセシビリティを考慮しなければなりません。

UXデザイナーは、レイアウト、階層、配置など、製品の使いやすさを重視し、UIデザイナーは、色、フォント、サイズ、インタラクションなど、ユーザーインターフェースのアクセシビリティを重視します。

UXデザイン vs UIデザイン その違いを把握しよう コラボレーション

プロダクトデザインのプロセスにおける UX と UI

ここでは、典型的なプロダクトデザインのシナリオと、UXとUIの役割分担を見ていきましょう。

  1. ユーザー、市場、競合他社の調査:UXデザイナー/UXリサーチャーは、ユーザー、市場、競合他社の調査を行う。

  2. アイデアの開発と製品制約の調整:UXデザイナーは、プロダクトマネージャーやステークホルダーと協力して、製品や予算の制約の中でアイデアを開発する。

  3. 情報アーキテクチャと初期デザインの作成:UXデザイナーは、情報アーキテクチャ、初期スケッチ、ワイヤーフレーム、ローフィデリティ(Lo-Fi)プロトタイプを作成する。

  4. 初期テストによるユーザーフローの改善:UXデザイナー/リサーチャーは、ナビゲーションやユーザーフローを改善するための初期テストを行う。

  5. ワイヤーフレームのモックアップ化:UIデザイナーは、色、アイコン、ボタン、タイポグラフィを使ってワイヤーフレームをモックアップに変換する。

  6. インタラクティブ機能を追加したプロトタイプ作成:UIデザイナーは、インタラクティブな機能を追加して、忠実度の高いプロトタイプを作成する。

  7. ハイフィデリティプロトタイプのテストと反復:UXリサーチャーはハイフィデリティ(Hi-Fi)プロトタイプをテストし、UX/UIデザイナーに変更を依頼し、反復作業を行う。

そしてデザインチームは、デザインハンドオフの際にエンジニアと協力し、開発プロセスを開始します。

この例は、決して「業界標準」のアプローチではありません。

UXデザイナーとUIデザイナーは、デザインプロセスを通じて密接に連携するのです。

UXデザインは常に UI デザインに先行します。そして製品のインターフェイスをデザインするには、それを支える構造やアーキテクチャが必要です。

また、UXデザイナーは基礎を作り、UIデザイナーはインタラクションと美観を重視します。

これらの作業を行うためには、どちらのデザイナーもユーザーのニーズを意識して、楽しいユーザー体験を生み出す必要があります。

UX と UIデザイン ツール

UXデザイナーとUIデザイナーは通常、同じデザインツールを使用しますが、タスクや目的は異なります。

UXデザイナーは、ワイヤーフレームを作成し、各画面を基本的なクリック/タップ操作でリンクさせ、ローフィデリティのプロトタイプを作成します。

また、UXデザイナーは、グリッドシステムを使って各ページの構造を構築し、ナビゲーションを組み込みます。

そしてワイヤーフレームが完成したら、UIデザイナーは色、インタラクティブ性、ページトランジション、アニメーション、タイポグラフィなどを追加し、忠実度の高いプロトタイプを作成します。

UXデザイン vs UIデザイン その違いを把握しよう UXPinでつながる

UXPinがUX/UIデザイナーのスピードと一貫性を高める方法

UXPinは、UXデザイナーとUIデザイナーが協力して、ワイヤーフレームからプロトタイプ、そして最終的なデザインに至るまで、お客様に素晴らしい製品を提供するためのエンドツーエンドのユーザーエクスペリエンスデザインツールです。

 UXデザイナーのワイヤーフレーム設計

UXデザイナーは、内蔵のデザインライブラリを使用して忠実度の高いワイヤーフレームを設計することができ、UIデザイナーや関係者は画面のレイアウトやフローをより深く理解することができます。

ユーザビリティスタディとフィードバックの取得

UXデザイナーは、試行錯誤されたビルトインのデザインライブラリを使用することで、初期のテストにおいてユーザビリティスタディや関係者から有意義なフィードバックを得ることができます。

UIデザイナーによるデザイン要素の洗練

ほとんどの作業が完了しているため、UIデザイナーはブランディングや製品の要件に合わせてデザイン要素を洗練させ、すぐにテストを開始することができます。

UXPinを用いた高度なインタラクションの実現

UXPinのコードベースのデザインツールを使えば、UIデザイナーは高度なインタラクションやアニメーションで製品に命を吹き込むことができます。

また、条件付きインタラクションを使用して最終製品の機能を模倣することで、ユーザビリティテストでより良い結果とフィードバックを得ることができます。

UXPin でコミュニケーションとコラボレーションを強化しよう

UXPin では、製品チームや開発者、その他の関係者を招待して、ブラウザ上でプロトタイプを簡単にプレビューできます。

さらに、UXPinのコメント機能を活用してフィードバックを集めたり、UXデザイナーやUIデザイナーにタスクを割り当てて、より効率的にコラボレーションできます。

UXPinの魅力を実際に体験してみてませんか。ユーザーエクスペリエンス向上のために設計された、コードベースのコラボレーションツールをぜひご覧ください。無料相談およびトライアルはこちらから。

Q&A

1. UXデザインとUIデザインの違いは何ですか?

回答: UXデザイン(ユーザーエクスペリエンスデザイン)は、製品やサービスを通じてユーザーが得る全体的な体験を設計することに焦点を当てています。これには、製品の構造、ナビゲーション、ユーザーフロー、リサーチ、テスト、ワイヤーフレーム作成などが含まれます。一方、UIデザイン(ユーザーインターフェースデザイン)は、ユーザーが直接操作する視覚的要素やインタラクションを設計することに焦点を当てています。これには、色、アイコン、タイポグラフィ、レイアウト、アニメーションなどが含まれます。

2. UXデザイナーの主な業務内容は何ですか?

回答: UXデザイナーの主な業務には、製品の構造設計(ナビゲーション、ユーザージャーニー、フロー)、ユーザーリサーチ(ユーザー、競合他社、市場の分析)、テスト(ローフィデリティおよびハイフィデリティ・プロトタイピング)、デザイン(ワイヤーフレーム、ヒエラルキー、コンテンツレイアウト)などが含まれます。

3. UIデザイナーの主な業務内容は何ですか?

回答: UIデザイナーの主な業務には、製品の美学設計(ブランディング、ビジュアルデザイン)、デザインリサーチ、ユーザー分析、テスト(UIプロトタイピング)、デザイン(モックアップ、インタラクションデザイン、アニメーション、レスポンシブデザイン)などが含まれます。

4. UXデザインとUIデザインの共通点は何ですか?

回答: UXデザイナーとUIデザイナーは、どちらもユーザー中心のデザインを重視し、ユーザーエクスペリエンスの向上を目指しています。両者は協力して製品の成功に貢献し、ユーザーのニーズや期待に応えるデザインを追求します。

5. UXデザインとUIデザインのプロセスにおける役割分担はどのようになっていますか?

回答: プロダクトデザインのプロセスにおいて、UXデザイナーはユーザー、市場、競合他社の調査、アイデアの開発、情報アーキテクチャの作成、初期テストなどを担当します。一方、UIデザイナーは、ワイヤーフレームのモックアップ化、インタラクティブ機能の追加、ハイフィデリティプロトタイプの作成などを担当します。

6. UXデザインとUIデザインのスキルセットにはどのような違いがありますか?

回答: UXデザイナーには、クリティカルシンキング、問題解決能力、データ分析への興味、構造的思考、機能的デザイン、プロジェクトマネジメントなどのスキルが求められます。一方、UIデザイナーには、ビジュアルクリエイティブ、グラフィックデザイン、美的感覚、形と機能のバランス感覚、ユーザーのインタラクションや行動の考慮、タスク指向などのスキルが求められます。

7. UXデザインとUIデザインはどのように連携していますか?

回答: UXデザイナーとUIデザイナーは、製品開発プロセス全体で密接に連携しています。UXデザイナーがユーザーリサーチや情報アーキテクチャを担当し、全体的なユーザー体験を設計する一方、UIデザイナーはその設計を基に視覚的な要素やインタラクションを具体化します。両者の協力により、ユーザーにとって使いやすく魅力的な製品が生まれます。

8. ユーザー中心設計(UCD)とは何ですか?

回答: ユーザー中心設計(UCD)とは、ユーザーのニーズや期待を中心に据えて製品やサービスを設計するアプローチです。UXデザイナーとUIデザイナーが効果的に仕事をするためには、ユーザー中心設計のアプローチを用いることが重要です。

9. UXデザインとUIデザインの役割は組織によってどのように異なりますか?

回答: 中小企業やスタートアップ企業では、UXデザインとUIデザインの区別がはっきりしていないことが多いですが、組織や製品の規模が大きくなると、UXデザイナー、UIデザイナー、リサーチャー、ライター、UXアーキテクトなど、役割が細分化されることがあります。

10. UXデザインとUIデザインのどちらがより重要ですか?

回答:

2025年に知っておくべき 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コードコンポーネントを使って、強力なプロトタイプを構築でき、純粋なコードであるコードベースのプロトタイプを簡単にまとめることができます。こちらからぜひ無料でお試しください。

2025年のおすすめデザインシステム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.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のデザイナーの仕事の仕方に革命をもたらしました。是非体験してみて下さい!

 

スプラッシュスクリーン でユーザーの心をつかむ

 How To Design A Splash Screen

「Vous n’aurez pas deux fois l’occasion de faire une première bonne impression.(第一印象を与えるチャンスは二度とない)」ということわざがあります。

これは、初対面の人と接するときや、ユーザーがあなたのアプリケーションを初めて体験するときにも当てはまります。

調査によると、ユーザーがアプリにとどまるか離れるかを判断するのに50ミリ秒かかると言われています。

そのため、スプラッシュスクリーンは、ユーザーがアプリケーションをどのように認識し、体験するかを決める重要なものです。

そこで本記事では、スプラッシュスクリーンとは何か、なぜ重要なのか、そして スプラッシュスクリーン をデザインするためのベスト・プラクティスについて説明します。

UXPinの無料相談およびトライアルはこちらから。

スプラッシュスクリーン とは?

スプラッシュ・スクリーンとは、ユーザーがウェブサイト’やアプリを起動すると表示され る導入画面のことです。

ブランドアイデンティティを確立するチャンスであり、アプリがバックグラウンドでロードされる間、ユーザーを退屈させません。

この画面には、画像、グラフィック、ロゴ、アニメーションなどが使用され、プログレスバーと組み合わせて使用されることもあります。

なぜスプラッシュスクリーンが必要なのか?

スプラッシュスクリーンは、デバイスの速度が遅く、インターネットの速度がさらに遅かった時代によく使われていました。しかし、インターネットが普及し、デバイスが高速化した現在においても、以下のような理由で重要な役割を果たしています:

起動時にユーザーを退屈させない

アプリの処理速度が格段に速くなったとはいえ、実際にはユーザーがアプリを操作するまでに数秒のセットアップが必要です。ユーザーがアプリに入る前に、ログイン情報を再度入力する必要があったり、画像を読み込んだり、ホームページのデータを読み込んだりする必要があるかもしれません。これらのバックグラウンドタスクが実行されている間、スプラッシュスクリーンはユーザーを退屈させず、シームレスな体験を提供します。

さらに、プログレスバー付きのスプラッシュスクリーンは、アプリの放棄を減らします。何が起きているのか、どれくらい待たなければならないのかをユーザーに正確に伝えることで、不安を減らし、待ち時間を短く感じてもらうことができます。

ユーザーを歓迎し、アプリ内での体験の舞台を作る

スプラッシュスクリーンは、ユーザーがアプリを使い始めるときに期待すべきことの基準を設定します。ユーザーを歓迎し、期待感を持たせることは非常に重要です。なぜなら、ユーザーがアプリとのインタラクションの初期段階でアプリをポジティブに受け止めれば、ポジティブな体験をしたと受け止められる可能性が高いからです。

スプラッシュスクリーンは、ホテルや複合施設のグランドエントランスと同じ役割を担っています。エントランスは、洗練された上質な施設に入ることを意味します。同じように、ユーザーがアプリのアイコンをタップすると、すぐにそのアプリの世界に入っていきます。スプラッシュスクリーンは、ユーザーを歓迎し、驚異的な体験のためのステージを設定するチャンスです。

スプラッシュスクリーン をデザインするためのベストプラクティス

優れたスプラッシュ画面作成のプロジェクトに取り組むためのベストプラクティスについて説明する前に、すべてのモバイルアプリにスプラッシュスクリーンが必要なわけではないことを知っておくことが重要です。スプラッシュスクリーンは、特にアプリが頻繁に使用される場合、不必要な摩擦を引き起こすことがあります。例えば、WhatsAppのメッセージをチェックするたびに(3分後であっても)3秒間のスプラッシュスクリーンを見なければならないとしたら、それは迷惑なことですよね?

ここでは、訪問者を歓迎し、素晴らしい第一印象を与えるスプラッシュスクリーンを作成するためのベストプラクティスをご紹介します。

なるべく短くする

スプラッシュスクリーンは、「3秒ルール」と呼ばれる、3秒を超えてはならないというルールに従うべきです。スプラッシュスクリーンが3秒以上続くと、通常のアプリユーザーには不満が残り、ユーザーエクスペリエンスを損なうことになります。また、ユーザーがアプリを定期的に使用することを想定している場合(メッセンジャーアプリのように少なくとも1日1回)は、1秒ルールを使用するか、完全に排除します。

アプリケーションの読み込みに3秒以上かかる場合は、スプラッシュ画面の代わりにスケルトン画面を使用します。スケルトン画面では、最終的なユーザーインターフェイスの骨格が表示されるため、ユーザーの不安感を軽減することができます。Slackはスケルトンスクリーンをうまく使っています。

シンプルで印象的なデザイン

忘れられない第一印象を与えるには、3秒しかないので、シンプルかつ大胆なデザインを心がけましょう。100万通りものアニメーションを使ってユーザーを圧倒するのと、冷たくて無味乾燥なスプラッシュスクリーンを作るのとでは、微妙なバランスを取る必要があります。

多くのデザイナーは、スプラッシュスクリーンに大胆な色や画像、アニメーションロゴや背景色を使用しています。Kindleアプリは、シンプルで人目を引くス プラッシュスクリーンの好例です。広告など、ユーザーが関心を持たないような勝手なメッセージのスプラッシュ画面への挿入は避けましょう。

スプラッシュスクリーン Kindle

待ち時間の不安を解消

ユーザーは、アプリがクラッシュしたのか、それともまだロード中なのかがわからないと、高い確率でアプリを放棄してしまいます。そのため、プログレスバーやプログレスアニメーションは、ユーザーの不安感を軽減するのに非常に有効です。ユーザーに待ち時間を知らせることで、アプリを放棄する可能性を減らすことができます。待ち時間が短いアプリの場合はスピナーを使うことができますが、待ち時間が長い場合はプログレスバーの方が適しています。なぜなら、スピナーは永遠に回転しているように見えてイライラするからです。Google Workspaceはプログレスバーをうまく使っています。

スプラッシュスクリーン 
Google Workspace

驚きと喜びの要素を加える

時間と予算に余裕があれば、スプラッシュスクリーン に楽しさと個性を加えることができます。楽しいアニメーションや、UIに溶け込むようなスプラッシュスクリーンは、ユーザーを喜ばせることができる方法のひとつです。ただし、やりすぎには注意が必要です。凝ったスプラッシュスクリーンは、ユーザーが初めてアプリを起動したときにだけ表示されるようにするのが良い方法です。以下の例をご覧ください:

Source
Source
Source

印象に残る スプラッシュスクリーン のデザイン

スプラッシュ画面は、ユーザーにアプリを公開するためのゲートウェイです。優れたスプラッシュスクリーンは、アプリに対するユーザーの認知度を高め、ブランドの認知度を強化します。デザインとエンジニアリングを融合させたUXPinのオールインワンツールで、忘れられないウェルカムスクリーンをデザインしてみませんか。無料相談およびトライアルはこちらから。

ローコード ツール、ノーコードツール

 ローコード ツール、ノーコードツール

ノーコードやローコードのアプリケーションプラットフォーム(LCAP)は、近年さらに注目を集めてきています。ローコードの製品には、特定のニッチな分野をターゲットにしたものもあれば、広範囲のアプリケーション、ソフトウェア、ツールのコーディングを不要にするソリューションを提供するものもあります。

ローコードまたはノーコード開発のいい点は、アプリやツールの構築をより身近なものにしてくれることです。特に大きなアイデアはあるものの、資金があまりない若い起業家にとっては魅力的です。

多くのLCAPでは、ユーザーがAPIやGoogleのFirebaseのようなインフラストラクチャ・アーキテクチャと統合できるようになっており、企業は手頃な価格のアプリや既存のソフトウェアのプラグインを作ることができます。

ローコード開発は、UX調査やテストにおいても有効的です。UXデザイナーは、デザインを開発チームに渡す前に、LCAPを使って完全に機能するプロトタイプを作成し、より効率的にユーザーテストを行うことができます。このようなローコードのワークフローは、新製品や新機能をリリースする際の時間とコストを大幅に削減します。

ローコードとノーコード、その違いは?

多くの人にとって、「ローコード」と「ノーコード」は同じ意味を持つ言葉です。ノーコードと謳っている開発ツールのほとんどは、ユーザーがカスタマイズのために何らかのコード(通常はCSS)を挿入することを可能にしており、これが基本的にはローコードとなります。

最も一般的で広く受け入れられている言葉は、ローコード(Low-Code Application Platforms – LCAP)で、ローコードとノーコードの開発環境を指しています。

それでも、ローコードとノーコードには微妙な違いがいくつかあります。

ノーコードツール

ノーコードビルダーは通常、あらかじめテンプレートが用意されており、ユーザーはロゴや画像、テキストを変更することしかできません。

 ローコード ツール、ノーコードツール - その違いとは

また、これらのノーコードツールでは、Google SheetsやAirtableのようなシンプルなデータベースに接続することもできます。技術的なスキルを持たないユーザーでも機能するアプリを構築できるため、ノーコード開発は非常に身近なものとなっています。

ローコードツール

ローコードビルダーは、テンプレートを提供するだけでなく、ページやコラムのレイアウトを編集したり、CSSやJavascriptを追加したり、APIを接続したりと、よりカスタマイズが可能です。

ローコードツールでは、GoogleのFirebaseやParse、AWS Amplifyのような、より技術的なデータベースへの接続も可能になるかもしれません。

SAPやSalesforceのような多くの企業向けアプリケーションは、企業がソフトウェアと統合するアプリを構築できるように、ローコードツールを提供しています。

ローコード開発の仕組みとは?

ローコードツールでは通常、ドラッグ&ドロップ式のビルダーを使用して、アプリ(モバイル、デスクトップ、ウェアラブル・デバイス)やウェブサイトのページに要素を配置します。これらの要素には、テキスト、画像、ボタン、ナビゲーションなどが含まれます。これらの要素の中で、ユーザーはデータベースからデータを引き出したり、アクションやアニメーションを作成したりすることができます。

各要素は、ローコードツールがアプリやWebサイトをコンパイルする際に使用する、効果的なウィジェットです。また、ローコードツールの中には、ホスティングオプションを提供しているものもあり、ユーザーはコードのエクスポートや適切なホスティング環境の確保を気にする必要がありません。

デザインプロセスにおけるローコード

ローコードは、デザインプロセスにおいても不可欠なツールになりつつあります。まず、デザインツールが画像ベースではなくコードベースであれば、構築されたプロトタイプの挙動は最終製品に近くなり、インタラクションも非常にリアルになるという事実があります。

ローコードデザインツールのもう一つの利点は、製品チーム全体に力を与えることができることです。ローコードデザインソフトウェアを使えば、デザインの経験がほとんどないプロダクトチームでも、UXチームが作成したデザインライブラリを使って製品やインターフェースを簡単に作ることができます。

その典型的な例がUXPin Mergeです。デザイナーはMergeを使用して、準備の整ったUIコードコンポーネントをUXPinにインポートし、すぐにそれらを使ってデザインすることができます。これらの準備の整った要素は、開発者のGitリポジトリやStorybookから得られます。 ローコード ツール、ノーコードツール - UXPin Mergeを使ってみる

製品チームは、これらのコンポーネントを使って新しい製品やユーザーインターフェースを設計することができます。何よりも優れているのは、インタラクションがすでに用意されているため、チームが作るプロトタイプは忠実度が高く、会社のすべての標準に沿ったものになるということです。

チームのメンバーはすぐに使えるコンポーネントを使うので、エンジニアリングチームは最終製品をより早く作ることができます。

PayPal DesignOps 2.0のローコードプロダクトデザイン

ローコードプロダクトデザインの素晴らしい実践例として、PayPalのDesignOps 2.0があります。UXPin Mergeを使用して、PayPalのUXデザイナーと開発者は、製品チームが作業できる60以上のコンポーネントのデザインライブラリを構築しました。

このコードベースのデザインライブラリにより、PayPal の製品チームは UX チームからの最小限のインプットで製品を作ることができます。また、エンジニアリングプロセスも格段に速くなり、開発者は製品開発作業の80%以上をUXチームの支援なしに終えることができるようになりました。

ローコード開発のメリット

ローコード開発の最も大きなメリットは、スピードとアクセシビリティです。誰でもアイデアを実用的なアプリに変えることができ、多くの場合、数時間以内に完成させることができます。

ここでは、ローコード開発のメリットについて詳しくご紹介します。

  • スピード – ローコード開発では、チームや個人が迅速にアプリケーションを構築することができます。シンプルなアプリケーションでも、エンジニアが機能する製品にコード化するには数日かかります。より複雑なアプリケーションは、数週間から数ヶ月かかることもあります。
  • コスト削減 – アプリやウェブサイトを構築する際、エンジニアリングは最もコストのかかるステップの一つです。セキュリティのように、専門的なエンジニアリングスキルを必要とする要素もあり、これにはコストと時間がかかります。
  • 簡単なデプロイメント – ローコードツールは、多くの場合、ワンクリックでデプロイメントとホスティングを行うことができます。アプリやWebサイトのホスティングには、サーバーやホスティング環境について何も知らない場合は特に、多くの課題が伴います。
  • コンセプトテスト – ローコードツールは、スタートアップ企業が新しいコンセプトやアイデアをテストするための安価な製品を作るのに最適です。概念実証に成功すれば、スタートアップ企業が重要なシードステージの資金を確保するのに役立つでしょう。既存の企業は、開発に投資する前にテストするために、新しいサービス、プラグイン、アドオンを構築するためにローコードプラットフォームを使用するかもしれません。

ローコード開発のデメリット

ローコードツールには多くのメリットがありますが、いくつかのデメリットもありますのでご紹介します。

  • スケーラビリティ – ローコードツールはコンセプトの証明には優れていますが、これらのアプリはプラットフォームの限界に縛られているため、スケーラブルではありません。しかし、アプリが収益を上げるようになれば、開発者の雇用に投資し、スケーラブルなソリューションを考えることができます。
  • イノベーションの制限 – ローコードツールは、イノベーションにも大きな制限があります。繰り返しになりますが、プラットフォームの枠内で作業しなければならないため、潜在的に革新的なコードやアルゴリズムを書くことができません。
  • 高価なホスティング – ローコード・アプリケーションを構築するのは安くて速いのですが、ローコードツールで提供されるホスティングは、特に規模が大きくなるにつれて、通常のホスティングサービスよりも指数関数的に高価になります。
  • パフォーマンス – ローコード開発がパフォーマンスに悪影響を与える要因はいくつかあります。第一に、これらのシステムは一律のソリューションを提供するため、最終的なアプリケーションには多くの冗長なコードや未使用のコードが含まれている可能性があります。第二に、ローコードホスティングサービスを利用している場合、共有ホスティング環境である可能性が高く、スピードとパフォーマンスの面で理想的ではありません。
  • セキュリテイ – 機密データや消費者データを処理するアプリは、世界の一部の地域では、プライバシー法を通過するのに十分なセキュリティを備えていない可能性があります。例えば、EUのGDPRやカリフォルニア州のCCPAは、個人データの管理について非常に厳しい基準を設けています。

ローコード/ノーコードツールでは何が作れるのか?

「これがノーコードでできるの?」と驚くことがあるかもしれません。例えば、Bubbleのような有名なLCAPも、シンプルなAPIから複雑なソーシャルメディア、SaaSアプリケーション、Airbnbのような宿泊施設予約サイトなど、あらゆるものを作ることができます。

一部のLCAPプラットフォームでは、Javascriptの機能や洗練されたユーザーフローをドラッグ&ドロップのビルダーで作成する機能を提供しています。

カスタムソフトウェアのアドオンとAPI

ローコード開発は、既存のソフトウェアと統合するためのカスタム・アドオンを必要とするビジネスに最適です。

例えば、従業員が勤務時間を記録するために会計ソフトに接続するローコードアプリを構築することができます。この種のアプリは会社にとって利益を生まないので、カスタムアプリに何万ドルも費やすことは経済的に意味がありません。

上記のシナリオでは、経理部の誰かがローコードでアプリを作り、1日で正確に動作するようにデプロイすることができます。

Zoho Creatorは、企業が現在のシステムと統合したネイティブのiOS/Androidアプリを構築することができるローコードアプリビルダーである。

SaaS製品

ローコードツールを利用して、シンプルなSaaS製品を開発するスタートアップが増えています。デザイナーやエンジニアに頼る必要がないため、コストを抑えて迅速に拡張することができます。

教育

ローコードは、教育用ツールやアプリの構築に最適なソリューションです。これらのアプリは、新しい学生の申し込みを受け付けるだけの簡単なものから、学生がビデオを見たり、宿題を提出したり、クラスメートと交流したり、コースノートをダウンロードしたり、成績表を受け取ったりできるカスタマイズされたバーチャル教室まで、さまざまなものがあります。

これらはローコードアプリケーションのほんの一例に過ぎませんが、特に必要なサービスのシステムをデジタル化しようとしている資金不足の発展途上国にとっては、その可能性は計り知れないものがあります。

ローコードは開発者を置き換えるか?

開発者の必要性は常にありますが、ローコードアプリのプラットフォームはアプリ開発の未来形とも言えるでしょう。

LCAP業界は急速に変化しており、新興企業に新たな機会をもたらし、多くの企業にレガシーシステムのアップグレードや改良を可能にしています。

デバイスの互換性のための自動アップグレードや、最新のセキュリティ要件を満たしたりするインテリジェントなLCAPを使用して、非常に複雑なエンタープライズアプリケーションが構築されるようになるのはそう遠い未来ではないでしょう。

ローコードツールの将来性

Brandessence Market Research社によると、ローコード市場は、2027年には651.5億ドル、2030年には1,870億ドル の規模になるといいます。

Salesforce、Microsoft、Appian、Oracle、Agileなどのソフトウェア大手は、すでにローコード市場に強力な足場を築いており、これらのシステムを継続的に改良して、顧客にさらなるカスタマイズを提供しています。

これらの企業は、ソフトウェアを構築するのではなく、顧客のビジネスニーズにぴったり合った独自のアプリケーションを開発するためのツールを提供することになるでしょう。

ここで重要なのは、こうしたローコードツールは、イノベーションを推進する開発者やエンジニアがいなければ存在しないということです。AIを搭載したものであっても、ローコードアプリケーションの限界に囚われることになるでしょう。

ローコードは必ずしも開発者に取って代わるものではなく、開発チームが構築するシステムやツールを変えるものです。

プロダクトチームの誰もが使えるローコードツールを使ってデザインと開発の連携を強化したいとお考えでしたら、Storybookを統合したUXPinの無料トライアルをお試しください。デジタル製品をより早く作るためのコードベースデザインツールのパワーをご体験ください。

プロトタイプに命を吹き込む インタラクティブ コンポーネント

プロトタイプに命を吹き込む インタラクティブ コンポーネント

ユーザビリティテスト参加者やステークホルダーに実際のユーザー体験に近いものを提供する上で、インタラクション機能は欠かせない存在です。しかし、インタラクティブなコンポーネントの作成には時間が掛かってしまい、ほとんどのデザインツールでは上手くいかないことから、多くのデザイナーを悩ませているでしょう。

UXPin Mergeを使用したコンポーネント駆動型プロトタイピング技術と、インタラクティブコンポーネントを使うことで、完全に機能するプロトタイプを構築できます。機能横断的なコラボレーションとユーザーテストを強化するための詳細については、こちらのページをご覧ください。

 インタラクティブコンポーネント とは?

 インタラクティブコンポーネント (またはインタラクティブ要素)は、デザインシステムから再利用可能なUI要素と、デフォルトでインタラクティブ機能を含んでいます。普段からUIキットを使い、プロジェクトごとにインタラクションを追加しなければならないデザイナーにとってこれは画期的と言えるのではないでしょうか。

デザインチームは、インタラクション、ステート、その他のアニメーションを設定して、最終製品を正確に表現する没入型のプロトタイプを作成できます。

インタラクティブコンポーネント のメリット

インタラクティブコンポーネント のメリットをいくつかご紹介します。

1. 少ないアートボード

従来、デザインツールを使ってインタラクションを作成するには、基本的な機能を実装するだけでも複数のアートボードが必要でした。デザイナーは、 インタラクティブコンポーネント を使うことで、1つのアートボードで同じ得ることができます。

2. 市場投入までの時間を短縮

インタラクティブなコンポーネントは再利用可能なので、デザイナーはインタラクションを一度設定するだけで、デザインプロセスでの時間を大幅に節約できます。

エンジニアが承認されたコンポーネントに慣れ親しめば、デザインのハンドオフはより簡単になり、プロジェクトの納期をさらに短縮することができます。

これらの時間節約の結果、市場投入までの時間が短縮されます

3. 一貫性の向上

UIキットはデザインの一貫性を高めますが、インタラクションに関してはあいまいさを残します。デザイナーはこれらのインタラクションを自分で設定しなければならず、エラーや一貫性の欠如につながってしまいます。

インタラクティブなコンポーネントには、インタラクティブ性がすでに備わっているので、誰もが同じステート、マイクロインタラクション、アニメーションを持ちます。これによって、一貫性を高めるだけではなく、デザイナーが修正するセットアップタスクやエラーが少なくなるため、効率性を高めます。

4. より良いテストとフィードバック

ユーザーやステークホルダーからのフィードバックは、デザインプロジェクトにとって非常に重要です。また、ビジネスゴールに沿ったユーザー中心の製品を提供するための意思決定の原動力となります。

ほとんどのデザインツールでは、エンジニアが数行のコードで実装する単純なインタラクションを実装するための忠実さと機能性に欠けています。 インタラクティブコンポーネント を使用すると、コードの機能を簡単に再現できるため、ユーザビリティテストやステークホルダーのために実物に近いプロトタイプを作成できます。

5. デザインシステムの普及を促進する

デザインシステムチームの仕事の1つとして、デザインシステムを普及を促進させることです。 これにおいても、インタラクティブコンポーネント は製品開発チームの効率的なワークフローを作成できる強力なツールとなります。

6. デザインの拡張

UXPinでは、コンポーネント駆動型のプロトタイピングとインタラクティブコンポーネントがデザインのスケーリングにどのように役立つかを見てきました。1つの例として、PayPalが新しく人材を雇用せずデザインプロセスを拡張したUXPin Merge活用方法をこちらで紹介しています。

リポジトリにホストされているインタラクティブコンポーネントにMergeを統合することで、PayPalのプロダクトチーム(UX/デザインツールの経験はほぼ無いに等しい)は、経験豊富なUXデザイナーが以前行っていたよりも8倍速くデザインプロジェクトの90%を完了することができました。

 インタラクティブなコンポーネント により、学習曲線が大幅に短縮されたことでデザイナーでない人にとってもデザインプロセスがより身近なものになりました。

PayPalのUXチームは、レイアウトやテンプレートを含むインタラクティブコンポーネントライブラリを構築し、React propsを使用してデザインシステムの制約を設定しました。製品チームは、ユーザビリティテストとデザインハンドオフのためのプロトタイプを、ドラッグ&ドロップで簡単に構築できます。

インタラクティブコンポーネントは、プロダクトチーム(または別のUXPin MergeユーザーであるTeamPasswordの場合はエンジニア)のような非デザイナーに、より多くのUXに関する仕事を与えることができます。

すでに構築済みのコンポーネントにクリック、ホバーなどの条件に応じてインタラクションを作成することも可能です。

UXPinプロトタイプにインタラクティブ・コンポーネントを組み込むには?

インタラクティブコンポーネントを製品のプロトタイプに組み込むには、多くのステップを踏む必要があります。フォームが実際に入力できること、ボックスがチェックできること、リンクがクリックできることを確認します。

このようにすることで、ユーザーが製品を使おうとする経験を持つことができ、製品がどのように機能し、人々がどのように使用する(または使用したい)のかについての洞察を得ることができます。

1. UXPinでの インタラクティブコンポーネント の使用

10年以上前のUXPinの最初のリリース以来、インタラクティブコンポーネントはUXPinのデザインツールの中核であり、最終的な製品体験を正確に再現するプロトタイプを作成するソリューションをデザイナーに提供してきました。

UXPinには、インタラクティブコンポーネントを作成するための4つの強力な機能があります:

  • ステート(状態): 1つのコンポーネントに対して、それぞれ異なるプロパティとインタラクションを持つ複数のステートバリアントを作成できます。
  • バリアブル(変数): ユーザーの入力データをキャプチャし、パーソナライズされた動的なユーザー体験を作成するために使用します。
  • Expression(式): Javascriptのような関数で、複雑なコンポーネントや高度な機能を作成できます!
  • 条件付きインタラクション: ユーザーのインタラクションに基づいてif-thenやif-elseの条件を設定し、複数の結果を持つ動的なプロトタイプを作成して、最終的な製品体験を正確に再現します。

UXPinのプラットフォームで簡単にドラッグ&ドロップできる、ビルド済みのコンポーネントを使用するのも1つの方法です。(ゼロから設計する必要はありません!)

UXPinのサンプルページにあるインタラクティブなコンポーネントの例をいくつかご紹介します。

ここで、ステート、バリアブル、Expression、条件ロジックで何ができるか見てみましょう。

例1. ボタン

例2. インプットとテキストエリア 

input and text area

例3. ラジオボタン

例4. インタラクティブなサインアップフォーム

→ このサンプルをダウンロードして使いたい場合は、こちらから

ドキュメントはこちらをご覧ください

2. UXPin Mergeの インタラクティブコンポーネント 

Mergeは、コンポーネント駆動型のプロトタイピングとインタラクティブコンポーネントをさらに進化させます。デザイナーが UXPin でコンポーネントを作成する代わりに、Merge はリポジトリからデザイン システム ライブラリをインポートします。

これらの MergeのUI要素の背後には React、Vue、Angular などのフロントエンドフレームワークのコードがあるため、真にインタラクティブなコンポーネントとなります。組織のデザインシステムをインポートすることも、オープンソースのライブラリを使用することもできます。

デザイナーは Mergeコンポーネントを使用するためにコードを見たり書いたりする必要はありません。また、UXPinのプロパティパネルからコンポーネントのプロパティにアクセスし、デザインシステムの制約内で変更を加えることができます。

Mergeについての詳細やアクセスはこちらをご覧ください。

Mergeのインタラクティブコンポーネントを使ってデザインする

logo uxpin merge

ステップ 1: デザインシステムからコンポーネントを取り込む

Mergeを使用してインタラクティブ コンポーネントを UXPin にインポートするには、3 つの方法があります:

  • Git統合: React コンポーネント ライブラリを UXPin に直接接続する
  • Storybook統合: Vue、Angular、HTML、Ember、Web Components などのフロントエンドフレームワークを同期します。
  • npm統合Node Package Manager(npm)からオープンソースのライブラリをインポートできます。npm Integration とその動作方法の詳細をご覧ください。

インポートされたMergeコンポーネントは左サイドバーのUXPinのデザインシステムライブラリに表示されます。デザイナーはサイドバーから必要なUI要素をクリックまたはドラッグしてキャンバスに表示することができます。

また、複数のデザインシステムとUXPin要素を使用したり、それらを組み合わせて新しいコンポーネントを作成し、パターンとして保存することもできます。

UXPin Mergeでプロトタイピングを始める方法

Mergeを使用して UXPinのコンポーネント駆動型プロトタイピングを始める準備はできましたか?始めるにあたって2 つの方法があります:

  • オープンソースライブラリ: オープンソースライブラリは、アクティブな開発サポートがないチームや、コンポーネントに取り組む前にどのように作業できるかの基礎的な情報を把握したいチームに最適です。
  • プライベートなデザインシステム: 製品のプライベートデザインシステムをUXPinと同期させたい場合は、Mergeページでアクセスをリクエストしてください。

UXPinの無料トライアルを14日間無料でお試しいただけますので、ぜひご利用ください。

デザイナーにコーディングは必要か?

Should Designers Code

Web開発のワークフローにデザインが どのように組み込まれるのかについては、常に議論に上がります。

例えば、デザイナーは「新しいオンボーディングフローを開発してアプリに組み込めませんか?そうすれば、コンバージョンが大幅に改善されますよ。」といいます。

それに対して、デベロッパーは「そのオンボーディングフローに組み込むのは、思っているよりもずっと複雑で、私たちがコーディングしたことのない要素が使われているのでできません。」というやりとりがあったりします。

これはほんの一例にすぎません。

この状況を、20人のデベロッパーと5人のデザイナーのチームに広げてみましょう。すると、デザインパターンの不統一、オンボーディングフローの崩壊、1週間の無駄な開発時間、遅いモバイルページ、1995年製のような日付ピッカーなどが発生するというような結果になってしまいます。

UXPin では、このような状況を何度も目にしてきました。そこで Mergeテクノロジーが搭載された UXPin だと、デザイナーは MUI や Ant Designなどからコード化されたコンポーネントを使ってインターフェースを構築することができます。そしてこのコンポーネントは、表面的にはフラットなUIコンポーネントのように見えますが、実際にはすぐに制作に使えるものです。UXPin Mergeをぜひ無料でお試しください

デザイナーとデベロッパーの断絶はどこで起こるのか

デザイナーとデベロッパーの間にはすれ違いが見られます。デザイナーはあり得るものを想像するのが仕事であり、デベロッパーはそれを具体化するのが仕事ですからね。

解決策として、デザイナーはコードを学ぶべきだと言う人もいます。もしデザイナーがコードを書けるなら、製品開発時の課題がわかるようになるでしょう。

その一方で、デベロッパーがデザインすべきだと言う人もいます。もしデベロッパーに最初から優れたデザインマインドがあれば、デザイナーは要らなくなるかもしれませんね。

おわかりかと思いますが、この2つの視点は完全に間違っています。

デベロッパーとデザイナー:まったく異なる2つの役割

1 48 1

デベロッパーは特定のスキルを持ち合わせています。Webサイトやアプリをどのように組み立てるかをよくわかっていますが、ユーザーがアプリにどう反応するかに対する理解は直感的に難しいでしょう。UXにはリサーチやイテレーションが必要であり、ユーザーを研究して、実際にアプリ内でどのように行動するのかを特定するのはまた別の仕事です。

対するデザイナーは、ユーザーの母集団を見て、彼らがどのように行動するかを特定する必要があります。また、アプリがユーザーの行動に適切に対応できるようになるには、継続的かつ反復的なデザインの実施が必要です。

UXデザイナーは、ユーザー心理を理解するためのユニークなスキルセットを持ち合わせており、ページでの入念な実験を重点的に行う必要があります。

しかし、デベロッパーはどのようにデザイナーの絶え間ない要求に対処しつつ、顧客のニーズに従って製品を作り上げるのでしょうか。

デザイナーがコーディングせずにコードを使えるようにするツールが必要

たとえデザイナーがコードの書き方を知っていたとしても、デザインの実装を最適化するという課題は残ります。製品全体の既存のコンポーネント、機能性、ブランディングを理解するには、誰がその作業を行うかにかかわらず、膨大な時間がかかります。

2 45

既存のコンポーネントをほとんど再利用するようなデザインを目指すのであれば、現時点でアプリに存在するもの全部のカタログを作成する人が必要になります。また、デザインが正確なパラメーターにきちんと適合するようにするために、他の分析を行う必要もあります。

ただ、デザイナーにもデベロッパーにもすでに決まった役割があるので、この業務を割り当てることはできません。デザイナーの役割はすでにフルタイムの仕事で、UXリサーチ、UXデザイン、コンバージョン率最適化に関する成果物があり、デベロッパーは、機能の構築とコーディングで手一杯です。

つまり、デザインと開発のワークフローを改善する真のソリューションが必要なのです。

特定のレポジトリにある既存のコンポーネントやエレメントのアウトラインを、ドラッグ&ドロップで視覚的に表示するツールが必要であり、これによって、デザイナーは新しいデザインを作りながら、既存のコンポーネントのメニューから選択することができるようになります。

UXPin Merge の紹介

3 39 

Mergeの技術が備わったUXPin は、Git と Storybook の統合によって開発ツールを活用するデザインツールです。以下で、詳しく説明していきます。

まず、Git統合があります。Mergeでは、Gitレポジトリから UXPinデザインエディタに既存のコンポーネントをインポートできます。

2つ目は、オープンソースのUI開発ツールである Storybook との統合です。

UXPin は Storybook との統合を構築しており、既存のデザインコンポーネントを Storybook で直接使うことができます。つまり、次の UI 変更を構築する際に、既存のデザインコンポーネントのライブラリを使うことができるということです。

そして、そのデザインをデベロッパーに渡し、そのデベロッパーがすでに持っているコードを使って新しい製品を作ってもうといいでしょう。

もっと深く掘り下げてみましょう。

パート 1 – UXPin Merge

UXPin Merge は、コード化されたコンポーネントでインターフェースを作成するためのドラッグ&ドロップ のUI ビルダーであり、トライアルと有料プランで利用可能なライブラリが内蔵されています。

また、Git レポジトリや Storybook から UXPin エディタにデザインコンポーネントをインポートすることもできます。この統合は現在のところ React フレームワーク向けであることから、React コンポーネントを取り込んで UXPin で直接作業することができます。

そして、コンポーネントは UXPin デザインライブラリに保存され、新しいコンポーネントやアップデートは自動的にライブラリに同期されます。

コンポーネントの機能とその動作方法も、UXPin エディタで直接確認できます。これにより、マウスオーバー、オートフィル、テキストフィールドのサジェスト、強調アニメーションなどを UXPin エディタで直接確認できます。

UXPin Merge でデザインしたものはすべて、デベロッパーによって仕様どおりにコーディングされます。なぜでしょうか?それは、そのデザインに含まれるコードはすべて、デベロッパーの Git Repo にすでに存在しているからです。なのでデベロッパーが新たに何かを作る必要はありません。

パート2 – UXPin Storybook の統合

UXPin storybook の統合では、Storybook からインポートした既存のデザインコンポーネント(公開または非公開)を使えます。Git との統合と同じように、希望する場合はプロパティの変更や、レディコンポーネントの一部への新たなインタラクションの追加などができます。

達成された一貫性

UXPin Merge は DesignOps の問題をサッと解決してくれます。デザイナーはデザインを行うために、すでに存在するコンポーネントを使い、アイテムの変更が必要な場合は、どのコンポーネントを変更すればよいか、また変更が行われたときに影響を受けるページをすべて正確に把握することができます。

サイト全体に同じコンポーネントの3つのバージョンが存在しないため、サイトの構築、変更、一貫性の維持がしやすくなります。

デザイナーはコーディングを学ぶべきか

ノーコードのインターフェースで仕事ができるのなら、なぜコードを学ぶのでしょうか。

デザイナーにとって、コードを学ぶことで視野が広がり、アプリをデザインする際に、より多くの人生経験を得られると思いますが、適切なツールを使うことでデザインと開発のコミュニケーションが改善されるのであれば、コードを学ぶ必要はありません。

なので、世の中がコードをより身近なものにする方向に進むにつれて、この質問に対する私たちの答えは「ノー」に傾いていきます。デザイナーは、コードを学ぶことによってではなく、デザインをより良くすることによって自身を磨いていくべきなのです。

私たちは、さまざまなスキルを持つ人が集まるようにチームを作ります。例えばアプリがユーザーのニーズを満たすことができるよう、常に UX について100% 考えている人材が必要ですし、UXデザインに関する質問に振り回されることなくコーディングできる人材が必要です。

Web開発チームの2つの側面が実際に手軽に一緒に作業できるように、UXPin Merge で、この2つの側面を統合しましょう。

DesignOps – デザインワークフローとオペレーションの改善方法

 DesignOps - デザインワークフローとオペレーションの改善方法

市場競争が激化する中、優秀なデザイン人材を採用するのは簡単なことではありませんが、経験豊富で熟練した人材を一箇所に集めるというのは、成功の一部に過ぎず、とりわけ、繁栄するプロダクトデザインチームの構築には、DesignOps(デザインオペレーション)にも投資が必要です。

DesignOps の役割を理解し、自身が DesignOps のリーダーにふさわしいかどうかを確認するのに役立つ、DesignOps に関する電子書籍が執筆されました。ぜひご覧ください(英語):DesignOps 101: Guide to Design Operations.(DesignOps入門)

そこで本記事では、DesignOpsとは何か、そして組織内のデジタルデザインシステムを改善するために DesignOpsをどのように活用できるかについてお話します。適切なDesignOpsソフトウェアの使用とともに、チーム間の連携や目標設定、情報交換システムなどの領域について見てきましょう。

UXPinはデザイン業務をサポートする優れたソフトウェアです。UXPin Merge のテクノロジーとともに、デザインを驚異的なレベルまで拡張することができます。アプリの実際の構成要素をドラッグ&ドロップしてプロトタイプを作成し、デザインを効率化しましょう。UXPin Merge をご覧ください。

DesignOps とは

 DesignOps とは?なぜ重要なのか

「DevOps」については聞いたことがあるかもしれませんが、「 DesignOps 」とは何でしょうか。

DesignOps(Design Operationsの略)とは、製品デザインを効率化してビジネス価値を上げるために、デザインプロセス、人材、テクノロジーを最適化することであり、主に以下のようなことが挙げられます:

DesignOps は比較的新しい用語であるため、どのようにして誕生したのかと疑問に思われるかもしれません。

かつてデザイナーは、UXリサーチを行ったり、UXストーリーを書いたり、ワイヤーフレームを作成したり、多くの役割を担っていました。このアプローチは一部のチームでは今でも有効かもしれませんが、規模が大きくなると非生産的になります。そこで DesignOps が登場し、チームワークをオーケストレーションし、明確な構造と役割を構築してくれます

とはいえ、DesignOps はデザイン組織だけに許された、孤立した「デザインチームだけの」エクササイズではなく、他のステークホルダー(特にソフトウェアデベロッパー)との多くの情報共有が必要です。一連のプラクティスに従うことで、デザイナーはこれらのやりとりの質を上げ、効果的な目標の達成に集中し、他のイニシアティブのために時間を解放することができるのです。

デザインオペレーションが台頭してきた理由

まず第一に、ビジネスとユーザーの両方の要件がより複雑になってきています(これは、顧客がより厳しくなってきているということでもあります。)。PwCのレポートによると、顧客の3人に1人は、たった1度でも顧客体験がよくなかっただけでその企業を去ってしまいます。当然のことながら、顧客の期待に追いつくという課題で、製品開発のライフサイクルは加速されます。また、チームがその増大する仕事量に追いつこうとするため、デザイナー間やデザイナーとデベロッパーの間でミスコミュニケーションが発生するリスクも出てきます。

また、チームは一貫性のない要件に基づいて孤立して作業してしまう可能性があり、これは納品スケジュール、ひいては UX に悪影響を及ぼしますが、DesignOps のプラクティスで、企業はこのようなボトルネックを克服し、デザインチームと開発チームの調和を生み出すことができます。

それでは、DesignOps管理の役割を詳しく見ていきましょう。

DesignOps の役割

 DesignOps とは?なぜ重要なのか - その役割

DesignOps 管理の主な役割は、デザインチームが障害や気が散ることなく自分の仕事に集中できるように、デザインチームの時間を守ることです。詳しくはDesignOps 101 の電子書籍をご覧ください。本記事では、DesignOps の役割について見ていきます:

運営管理

この役割には、デザインチームの長期的な目標と、それを達成するための明確なデザインロードマップを作成することが含まれます。また、デザインチームの人数を評価し、スキルギャップを特定するのも仕事です。

プロセスデザイン

DesignOps は、デザインシステムを構築し、チームが必要とするデザインツールをマッピングすることで、デザインプロセスの計画や管理を行います。また、デザインチームがプロダクトチームや組織内の他のチームとどのように連携すべきかのフレームワークを作成します。

プロジェクト管理 

DesignOps はデザインワークフローを担当し、プロジェクトを割り当て、スケジュールを設定し、ボトルネックを取り除きます。そして DesignOps チームは毎日スタンドアップミーティングを組んでデザインプロジェクトの進捗を確認します。また、デザインスプリントを計画して遂行します。

コミュニケーション戦略の策定

DesignOps のマネージャーは、デザインチームと組織の他の部分との連絡役となり、デザインの価値を伝え、チームミーティングのアジェンダを設定します。

デザインリーダーは、プロダクトマネージャーや製品開発チームとの円滑なコミュニケーションを確保し、 DesignOps は、デザインチームに必要なファイルやリソースを全て簡単に検索できるように保管するシステムを構築します。

新入社員の受け入れ

新しいスタッフのオリエンテーションやトレーニングを行い、デザインチームにフィットするようにします。UI デザイナーや UX デザイナーなど、新しいデザインスタッフを雇用することも、彼らの任務の一部です。

デザインチーム文化の構築

DesignOps チームは、デザインチームの専門的な能力開発のためにワークショップやトレーニングを開催しています。また、チーム内のデザイナーに専門的かつ精神的なサポートを提供し、デザインチーム内の共同体意識を醸成するためにチームの関係構築に向けた活動を企画します。

予算配分と管理

DesignOps は、デザインチームの運営にどれだけのコストがかかるかを設定し、そのコストの正当性を確認します。そして予算が承認されると、その予算をデザインチーム内でどのように分配するかを担います。

法務

法務チームと協力して、ユーザーテスト時に使う NDA(秘密保持契約) や参加者同意書を作成します。

調達プロセスの管理

調達部門と連携し、デザインチームが購買決定を下す方法を効率化します。

IT とセキュリティ

デザインチームの技術ロードマップを策定し、IT部門と協力してデザインツールの互換性とセキュリティを確保します。

デザインのワークフローと業務を改善するヒント

以上のことを念頭に置いて、組織で DesignOps の実践を改善するのに役立つヒントを見ていきましょう。

1. デザイナーをデザインに集中させる

当たり前のことのように思えるかもしれませんが、前述のように、デザイナーに複数の役割を期待する企業もまだ存在しており、時には、一人のデザイナーがユーザーリサーチを行い、情報アーキテクチャや UI をデザインし、UXライティングを担当することもあります。

このやり方は、小規模なチームや初期段階のスタートアップであれば効果的かもしれませんが、拡張性のある方法ではないことを覚えておいてください。長期的に見れば、デザイナーに他の仕事を負担させることは、彼らの仕事の質を下げることにもなりかねません。

2. デザインプロセスの効率をチェックする

組織では様々な製品デザイン・開発の手法が用いられ、デザイン思考プロセスに従う組織もあれば、Google のデザインスプリントが中心に据えられた組織もあると思われます。

つまり、最善の方法を適用することが重要だということです

DesignOpsによって、デザインワークフローの非効率性がわかり、それを取り除くことができます。これにより、デザインチームはより少ない時間とリソースでより多くのことを達成できるようになります。そしてその結果、作業とチームのパフォーマンスが最適化されることで、不必要な雇用の回避につながる可能性があります。

3. リモートでの製品デザインの効果的な連携にツールを使う

小規模な組織であれば、デザイナー同士の連携は自然に行われるかもしれませんが、大規模な(特に遠隔地の)チームではそうはいきません。効果的な連携を行うには、デザイナーやその他の製品開発チームメンバーに適切なツールセットを装備させることが重要です。ここで、DesignOps ソフトウェアが非常に大きな価値をもたらします。

UXPin Merge はそのようなツールの一つです。まず、デザイナーはソフトウェアデベロッパーの Git レポジトリや Storybook からインポートした UI コンポーネントを使うことができます。ゼロからプロトタイプを作るのに時間をかけるのではなく、実際のコードで作られた要素を使って直接デザインすることができ、そうすることで、チームは実際のデザイン作業や、コード化された製品との一貫性を保つことに、より多くの時間をかけることができるようになります。

とはいえ、ツールはパズルの一部に過ぎず、残りの要素は、次に述べる正しいコミュニケーション慣行に従うことにあります。

4. 連携のルーティーンを確立する

アジャイルチームで通常行われる毎日のスタンドアップや週次ミーティングなどの連携のルーティーンは、デザイナーの定期的なステータスのアップデートの共有や、(必要であれば)サポートの依頼を促します。

効果的な連携のルーティーンをどのように浸透させることができるかを示す例は、他でもない Google にあります。インターンからスタートし、現在は巨大テック企業でインタラクションデザイナーとして働くSophia Chiuは、ルーティーンでチームの他のメンバーとの共通の土台を見つけることができたと言っています。

毎週、UXスペシャリストは自分のデザインイテレーションをみんなの前で発表し、ブレーンストームとフィードバックセッションを行う機会があります。その後、小規模なグループで作業した後、そのデザインを全体の部門横断的な製品開発チームと共有することもできます。

これは、チームメンバーの間にオープンなコミュニケーションの流れを作ることができる数多くの方法のうちのほんの一例です。

5. 全デザイナーが、昇進のための明確なキャリアパスを持つようにする

適切なスキルセットがある人材を雇用するのは簡単ではありませんが、その人材を維持するのはさらに大変です。幸いなことに、DesignOps のプラクティスで、明確なキャリア開発パスの作成によって、こういった課題に取り組むことができます。デザインプロセスが成熟するにつれて、例えばチームはデザイナーが新しいスキルを習得できるような、より専門的な役割を特徴とすることができる、その一方で、より経験豊富な人材は、より上級の役割に昇進する機会を得ることができます。

6. デザイナーに連携を促す

 DesignOps とは?なぜ重要なのか - 連携の強化

ペアプログラミングは、バグやエラーを減らす方法としてデベロッパーの間で頻繁に使われていますが、DesignOps では、デザイナーはデザイン作業の効率を上げるために似たようなモデルを採用することができます。

そんなペアデザインのモデルを以下に3つ挙げてみましょう。

(1)ジェネレーターとシンセサイザー

このモデルでは、2人のデザイナーがペアを組み、できるだけ多くのデザインを生み出そうとして、それと同時に、その評価や統合をして、最良のものを生み出します。1人のデザイナー、すなわち「ナビゲーター」は、ブレーンストームとアイデア出しに専念し、もう一人のデザイナーは「シンセサイザー」として、そのデザインの検証のために分析して質問を投げかけます。このアプローチで、2人のデザイナーがアイデアを出し合い、それらを効果的に評価することができます。

(2)分野横断的なペアリング

この方法は、さまざまな分野を専門とする製品開発チームのメンバーに適しており、デザイナーでも非デザイナーでも使えます。例えば、極めて専門性の高い分野のデザインを行う場合、デザイナーは、デザインに貴重なインサイトを与えてくれる分野の専門家とペアを組むことができます。

また、デザイナーは、フロントエンドエンジニアとペアを組むこともできます。このようなクロスファンクショナルなチームでの演習で、デザイナーはワイヤーフレームではなく、実際にコード化された UIを試す機会が得られます。

(3)ペアスケッチ

デザイナーは「ペアスケッチ」という手法を使って、一緒にワイヤーフレームを作成することができます。このモデルでは、片方のデザイナーがナビゲーターの役割を担ってコンセプトを説明し、もう片方がそれに従ってスケッチを作成します。次に、2人は役割を交代し、同じプロセスを繰り返します。

7. デザインチームに明確な目標を設定する

会社やプロジェクトの目標を明確に伝えることは、デザインチームにとって大きな動機づけとなります。なんといっても、それで自分たちの貢献の意義を理解することができますからね。

OKR(目標と主要業績)は、より大きな、チーム横断的な目的意識を達成する1つの方法として挙げられます。

個々の(つまり、従業員ごとの)OKR で、デザイナーが、自分の仕事の目標が、より大きなデザインパズルの要素として、どのように当てはまるかを把握することができます。その結果、自分の仕事がプロジェクト全体の成果にどのように貢献しているかがわかります。

とはいえ、目標の達成状況を測ることも重要です。例えばチーム内の進捗状況を表示するメトリクスダッシュボードで、チームメンバーのモチベーションが維持され、どこで遅れをとっているかがわかります。

8. チーム横断的な情報共有システムを構築する

サイロを取り除くことは、おそらく、DesignOps 戦略の一環として情報共有システムを構築する最も重要な理由です。 その重要性を説明するために、もう一度 DevOps(ソフトウェア開発オペレーション)の世界からのアナロジーを参照してみましょう。

Samanage社 の マイケル・マジャール 氏は、「サイロの中では、開発チームは責められることを恐れてソフトウェアのバグをオペレーションに報告しない可能性があり、正直でオープンな情報共有システムがなければ、ワークフローが遅れるだけでなく、誤報の可能性も上がります。」と言っています

同じことがデザインチーム内でも起こる可能性があり、デザインチームは、進行中の状況を他のメンバーに知らせないかもしれません。例えば、ユーザビリティの不具合に遭遇した場合、デベロッパー、デザイナー、運用担当者は全員集まって、例えば以下のようなことについて話し合うべきです:

  • 金銭的な損失の有無
  • 全体的な UX への影響
  • ユーザー離れのリスクの有無
  • 修正にかかる時間と費用

チーム横断的な明確な情報伝達システムで、エンドユーザーへの影響を最小限に抑えながら、積極的に問題を特定して修正することができます。

9. 共有語彙の作成を検討する

一般的なコンテンツマーケティングチームには、編集ガイドラインがあり、それに従って効果的なコミュニケーションを行い、正しいコミュニケーションのスタンダードを保つことができます。同様に、デザインチームもガイドラインと共通のデザイン言語を取り入れて、全プロジェクトで一貫性が保たれるべきです。

一例として、Airbnb では DLS(デザイン・ランゲージ・システム)が採用されており、これは、きちんと確立された原則とパターンに準拠した一連のコンポーネントで構成されています。DLS によって、全従業員が組織内の全部署で理解できる共通の語彙を使用できるようになり、それによって、曖昧さや矛盾が排除されながら、コミュニケーションの質が大幅に上がります。

UXPin Merge で DesignOps を拡張しよう

顧客が求めるものが厳しくなったり、新製品の発売が早まったり、製品ライフサイクルが短くなるなど、今日の企業が直面する課題はどんどん増えています。このような課題に取り組む方法の1つとして、DesignOps の導入が挙げられ、それでデザインワークフローの改善だけでなく、デザイナーが最も得意とするデジタル製品のデザインに集中できるようになります。

これにより、顧客のニーズに完璧に対応し、直感的な使用が可能な製品やサービスを構築することができ、ユーザー体験にプラスの影響がもたらされます。デザイナーとソフトウェアエンジニアの連携がスムーズになり、デザインワークフローが改善されるツールとして、ぜひ UXPin Merge をご検討ください。

React とは、それをアプリに使う理由

What is React and why use it for your app

アプリのデザインは最高に複雑なので、よりシンプルになるなら何でもウェルカムです。そこで React の出番です。React とは何でしょうか?React は、UI(ユーザーインターフェース)の作りやすくするために設計された JavaScript のコードとコンポーネントのライブラリであり、オープンソースのフレームワークとして、Paypal、Netflix などの今日の市場における最大手のアプリの作成に使われています。

このフレームワークが広く使われている理由はいくつもありますが、おそらく最大の理由は宣言的なビューの提供でしょう。新しい情報が入ると即座に更新されるインタラクティブなアプリを作ることができます。データがアプリに届くとすぐに更新され、例えば Facebook のコメントでも、画面を更新することなく、新しいコメントが出てくるのを見ることができます。

美しくインタラクティブな React アプリのレイアウトを8.6倍速く構築しませんか。ドラッグ&ドロップの UI ビルダーを使って、コードに裏付けされたコンポーネントで React アプリの一貫したデザインを作成しましょう。UXPin Merge をぜひ無料でお試しください。

React とは

Reactは、UI(ユーザーインターフェース)の構築向けの、広く使われている JavaScript のライブラリですが、数ある JavaScript ライブラリのひとつに過ぎません。他には Angular、Vue、Svelte がありますが、三者を比較した過去記事があります。

React は、デベロッパーが UI を再利用可能なコンポーネントに分解することを奨励しています。コンポーネントは UI の自己完結的な単位であり、それを組み合わせて複雑なインターフェースを構築することができます。そしてこのモジュラーアプローチは、再利用性、保守性、拡張性を促進します。

これは、実際のDOMの軽量な表現である仮想DOMの概念を導入したものです。React コンポーネントの状態が変更されると、React は仮想DOM と以前の状態を比較し、変更された DOM の部分のみを更新します。このアプローチは、DOM の操作と再レンダリングを最小限に抑えることによってパフォーマンスを上げます。

もともと Facebook によって開発された React は、現在 Facebook と Instagram のデベロッパーによって運営されています。そこには外部のデベロッパーも多数参加しており、その結果、非常に多用途で便利なフレームワークが誕生し、ますます多くのアプリ開発者がその使用に興味を持ち始めています。

React はフロントエンドかバックエンドか?

React はフロントエンドと考えられています。一般的には、Web アプリケーションのインタラクティブでダイナミックな UI コンポーネントを作成するために使われますが、React アプリケーションのサーバーサイド・レンダリングを可能にする Next.js のような技術を使えば、React をバックエンドで使うこともでき、フロントエンドとバックエンドの境界線はある程度曖昧になります。とはいえ、全体的には React はフロントエンド開発に関連することが多いです。

React と Vanilla JS 

バニラ JavaScript とは、追加のライブラリやフレームワークを使用しないコアな JavaScript 言語を指し、外部依存に頼ることなく、DOM(Document Object Model)を直接操作して、イベントを処理することができます。

その際、コードをどのように構造化して整理するかを完全にコントロールすることができます。ただ、柔軟性と制御を提供する一方で、複雑な Web アプリケーションをすべてバニラ JavaScript で構築するのは、特に状態の管理や UI の更新のような作業において、時間がかかり面倒くさいことになる可能性があります。

一方 React は、UI 構築のための JavaScript ライブラリであり、特に大規模で複雑なアプリケーションに対して、動的な UI を構築するための、より構造的で効率的な方法を提供します。

React はフレームワークなのか

React はよくフレームワークと誤解されますが、正確には UI 構築のための JavaScript ライブラリに分類されます。

Angular や Vue.js のようなフレームワークでは通常、ルーティング、ステート管理やその他の機能などの、アプリケーションを構築するためのより包括的な構造を得られます。

一方、React は主にアプリケーションのビューレイヤーに焦点を当てており、それによってデベロッパーは、再利用可能な UI コンポーネントの作成や、ステートの効率的な管理ができます。

React は追加のライブラリやツールで拡張して、よりフレームワークのような機能を提供できますが、その核となる哲学は依然として UI コンポーネントの構築を中心としています。

React の仕組み

ここでは、React がどのように機能するか、ステップ・バイ・ステップで見ていきましょう。まず、React コンポーネントを確定します。コンポーネントはReact アプリケーションの構成要素であり、「クラスベース」のものと「機能コンポーネント」のものがあります。コンポーネントを確定したら、ReactDOM.render()を使って DOM にレンダリングすることができます。この関数は、レンダリングしたいコンポーネントと、それをレンダリングする DOM 要素の2つの引数を取ります。

コンポーネントをレンダリングすると、React はコンポーネントとその子の仮想 DOM 表現を作成します。仮想 DOM は、実際の DOM の軽量なコピーであり、コンポーネントのステートや props が変更されると、React はコンポーネントとその子を再レンダリングします。そして新しい仮想 DOM 表現が作成され、何が変更されたかを判断するために以前のものと比較されます。

React は、実際の DOM の効率的な更新のために、「リコンシリエーション」という処理を実行します。そして新しい 仮想DOM と以前の DOM の差分(または「差分」)を計算し、その差分を実際の DOM に適用します。

また、React は、合成イベントを使ってユーザーとのインタラクションを処理します。イベントハンドラは、ボタンのクリックやフォームの送信など、特定のイベントが発生したときに呼び出される関数であり、Reactは、さまざまなブラウザ間でイベントを処理するための一貫した API を提供します。

React コンポーネントはステートを持つことができ、これは時間とともに変化するデータを表します。そしてコンポーネント内のステートの管理には、useStateフック(機能コンポーネントの場合)または setState メソッド(クラスコンポーネントの場合)を使います。

React コンポーネントにはライフサイクルメソッドがあり、コンポーネントの作成、レンダリング、更新、破棄など、コンポーネントのライフサイクルのさまざまな段階にフックすることができます。その際、ライフサイクルメソッドを使ってて、初期化、クリーンアップ、その他のタスクを実行できます。

React の JSX とは

JSX は、 デベロッパー が HTML のようなコードを書くことができる JavaScript のための構文拡張です。JSX では、HTML のようなマークアップと JavaScript のロジックを組み合わせることで、React での UI コンポーネントの確定がしやすくなり、JSX コードは React コンパイラによって標準の JavaScript に変換されます。

JavaScript がベストな理由

React が JavaScript で書かれていることは知っていますが、なぜそれがそんなに重要なのかというと、JavaScript は世界で最も使われているプログラミング言語のひとつであるからです。実際、970万人のデベロッパーがプログラミングのニーズに JavaScript を使っており、広く普及しているビルド・プラットフォームとして最適な選択となっています。

1 7

このプログラミング言語と HTML を組み合わせれば、React に必要なことなら何でも実行させることができます。そして、すでに JavaScript に慣れている人にとっても、これはかなり習得しやすいです。つまり、React に飛び込んですぐにアプリのプログラミングを始められるということは、これまで以上に早く始められるということです。

個々のコンポーネントは単独で編集可能

大抵のプログラミングは、何かひとつを変更されればプログラム全体の変更が必要になることから、アプリの一部分を変更しようとすると多くの問題が発生し、その整理のために大混乱に陥ってしまいます。一方 React では、そのようなことはなく、ダウンフロー型のプログラミング手法なので、何かが変更されても、その上流にあるものには影響を与えません。

2 8

また、コンポーネントは、他のコンポーネントに影響を与えることなく変更や編集ができ、それによって作業スピードが飛躍的に上がります。ひとつの変更に合わせて全部のコードを調整する必要がなくなり、不具合の修正や、アプリの定期的なメンテナンスを行ったりする場合、コンポーネントが分かれているため、プロセス全体が速くなります。

JavaScript ライブラリは複数のソースから入手可能

React はオープンソースであるため、多くのデベロッパーがより良いものにしようと取り組んでいます。JavaScript のライブラリには、さまざまな機能に使えるコードが用意されており、そのライブラリには、さまざまな機能のためにあらかじめ書かれたコードがたくさんあり、それを手に入れるだけで使うことができます。

既存のコードが使えるなら、最も基本的な関数をコーディングする理由はなく、それでプロセス全体のスピードが上がり、イライラも減ります。

誰でもいつかは似たようなコードが必要になるのだから、都度いちいち作ったりとか面倒くさくするのではなく、より賢く作業することを心がけましょう。

仮想DOM で情報の読み込みが速くなる

通常、アプリや Web サイトは HTML を使って DOM(ドキュメント・オブジェクト・モデル)を更新します。これは長い間唯一の方法であり、機能的ではありますが、サイトの利用者が増えてくると、それに伴ってますます時間がかかるようになります。サイトの利用者が増えれば増えるほど、ページの更新はより複雑になるのですが、以前は、コメントやその他の即座に更新する必要があるデータを更新するには、この方法しかありませんでした。

仮想DOM は実際の DOM をコピーするだけで、ReactJS を使って即座に更新でき、ページ全体を再読み込みする代わりに、変更される情報だけを読み込みます。つまり、ページやアプリ全体の動作が格段に速くなるということです。これはちょっとした機能なので、1人か2人にとっては大きな違いはないかもしれませんが、大勢の人が同じページを使うのであれば、その差は驚くほど大きくなります。

React で、アプリやサイトの作成だけでなく、そのアプリの日常的な機能の全プロセスが劇的に速くなりました。デベロッパーは、プロトタイプアプリの作成のスピードを上げるだけでなく、フルアプリを半分の時間で立ち上げて実行することもできます。これはコードを再利用できるおかげですね。そしてアプリやサイトが公開されると、仮想 DOM のおかげで、UI の UX(ユーザーエクスペリエンス)上がります。

React にはどれくらいの Javascript が必要か

React は JavaScript に大きく依存しており、React の効果的な使用には、JavaScript の基礎についてしっかりとした理解が必要です。また、React で作業する際によく遭遇し、使うことになる JavaScript の概念には、以下のようなものがあります:

  • 変数とデータ型: 変数の宣言方法 (let, const, var) とさまざまなデータ型(文字列、数値、ブーリアンなど)の理解が非常に重要。
  • 関数: 関数の確定と呼び出し方を理解し、アロー関数や関数式などの概念も理解する。
  • オブジェクトと配列:オブジェクトと配列は、JavaScrip tの基本的なデータ構造であり、React コンポーネントでステートとプロップを管理する際に、頻繁に使われる。
  • ES6 の機能: React は、アロー関数、クラス、デストラクチャリング、スプレッド/レスト演算子、テンプレート・リテラルなどの ES6 機能を活用しており、このような機能を使いこなすことで、React のコードはよりすっきりと簡潔になる。
  • スコープとクロージャ:JavaScript でのスコープとクロージャの仕組みを理解するのは、React でのステートの管理や、非同期操作の処理の上で非常に重要。
  • 非同期 JavaScript: React アプリケーションは API とのやり取りや、データの取得などの非同期処理の実行が多いため、Promises、async/await、エラー処理などの扱い方を知っておくことは重要。
  • DOM操作: React は直接的な DOM 操作の多くを抽象化しているが、DOM の基本的な理解とJavaScript での操作方法を理解しておくと、特定のタスクに役立つことがある。
  • イベントハンドリング: React アプリケーションは、イベント処理によってユーザーとのインタラクションに反応する。JavaScript においてイベントリスナーを付ける方法やイベントを処理する方法を知っておくことが必要。
  • 条件付きレンダリングとループ: Reactでは、UI要素を動的に生成するために、条件付きレンダリングとデータのループ処理ができ、それには、JavaScript の条件文 (if, else) とループ (for, while, forEach, etc.) の理解が非常に重要。
  • モジュールシステム: React アプリケーションは通常、モジュール方式で構築されており、import and export statements 文などの JavaScript のモジュールを理解するのは、コードベースの整理や管理の上で重要。

React は、コンポーネントを構築し、ステートを管理するための独自の構文と機能(JSX、フック、コンテキストなど)を提供しますが、React を効果的に使ってダイナミックでインタラクティブな UI を構築するには、JavaScript をきちんと理解することが重要です。

React のための Javascript のコンセプトとは

React 開発で特に関連性が高く、よく使われるJavaScriptの概念には、以下のようなものがあります:

  • 変数とデータ型: 変数の宣言方法(let、const、var)とさまざまなデータ型(文字列、数値、ブーリアン、オブジェクト、配列)を理解することは、Reactコンポーネントでの作業や、ステートの管理のための基本である。
  • 関数とアロー関数: React では、コンポーネントの動作を確定するために、関数の確定と呼び出し方を知ることが非常に重要である。また、アロー関数は、コンポーネント内のイベントハンドラやコールバック関数を確定するために一般的に使用される。
  • オブジェクトと配列: React では、データの保存と操作にオブジェクトと配列が頻繁に使用され、オブジェクトと配列の扱い方を理解することは、コンポーネントのステートとプロップを管理する上で不可欠。
  • ES6の機能: React は、アロー関数、クラス、デストラクチャリング、スプレッド/レスト演算子、テンプレート・リテラルなどの ES6 機能を多く活用しており、これらの機能を使いこなすことで、React のコードはよりすっきりと簡潔になる。
  • スコープとクロージャ:JavaScript でスコープとクロージャの仕組みを理解するのは、React コンポーネントでのステートの管理や、非同期操作の処理のために重要。
  • 非同期 JavaScript: React アプリケーションは API とやり取りしたり、データの取得などの非同期処理を行うことが多いため、Promises、async/await、エラー処理などの扱い方を知っておくことは重要。
  • イベントハンドリング: React アプリケーションは、イベント処理によってユーザーとのインタラクションに反応する。JavaScript においてイベントリスナーを付ける方法やイベントを処理する方法を知っておくことが必要。
  • 条件付きレンダリングとループ: Reactでは、UI要素を動的に生成するために、条件付きレンダリングとデータのループ処理ができ、それには、JavaScript の条件文 (if, else) とループ(for, while, forEach, など.) を理解することが非常に重要。
  • モジュール・システム: React アプリケーションは通常、モジュール方式で構築され、JavaScript のモジュール(import文export文など)を理解することは、コードベースの整理や管理の上で重要。
  • DOM操作: React は直接的な DOM 操作の多くを抽象化しているが、DOM の基本的な理解と JavaScript での操作方法を理解しておくと、特定のタスクに役立つことがある。
  • コールバックと高階関数: React では、コールバックと高階関数を頻繁に使用して、コンポーネント間でデータを渡したり、非同期操作を処理したりする。なのでコールバックと高階関数の扱い方を理解することは、React アプリケーションを構築する上で重要。

このような JavaScript の概念は、React の効果的な使用や、ダイナミックでインタラクティブな UI の構築のための基盤となり、この概念に精通することで、React 開発に習熟できるようになります。

React を学ぶのにかかる時間

おおよその目安としては、Web 開発の基礎にある程度慣れているとして、基本的な習熟には1ヶ月から3ヶ月の学習期間が必要であり、より深い専門知識を身につけるには、さらに数ヶ月かかるでしょう。

HTML、CSS、特に JavaScript の基礎がしっかりしていれば、React の基本をより早く習得できます。React はJ avaScript ライブラリなので、JavaScript は特に重要であり、プロジェクトを作って練習すればするほど、React機能をよりよく理解して使いこなせるようになります。知識を定着させるには、実践的な応用が鍵となります。

アプリ向けの React フロントエンドを作成する必要がある場合、UXPin Merge のようなプロトタイピングツールが役にお手伝いできるかもしれません。以下で詳しく見ていきましょう。

React のコンポーネントを使ってデザインできるか

はい、Reactコンポーネントでデザインできますが、適切なツールが必要です。その1つに、React コンポーネントで UI を作成するための UI ビルダー技術である UXPin Merge があり、そのコンポーネントは、MUI、Ant design などの広く使われているオープンソースライブラリから提供されています。

UXPin Merge は、コード バックアップされた React コンポーネントで React アプリのプロトタイプを作成できる唯一のデザイン テクノロジーです。Figma(Figma による React の使用方法を参照)などの他のデザイン ツールでは、React コンポーネントの視覚的な表現しか使用しませんが、UXPin は、ビジュアルレイヤーとコードレイヤーの両方を使います。UXPin の無料お試しにサインアップして、この技術をぜひご体験ください 。

初めての React アプリ作成ガイド

初めての Reactアプリ - 作成ガイド

多くの開発者はJavaScriptの使用経験があることから、Reactアプリの構築を初めて行う場合でも、比較的に短時間で行うことができるのではないのでしょうか。そこで、これら2つの関連性、初めて React アプリを作るために必要なもの、そして React を使う練習として使えるヒントをご紹介していきます。

主なポイント:

  • CSS と JS がわかる開発者の方が、初めてでもReactアプリを作りやすい。
  • React は人気であることから、ビギナー向けに React アプリを作るための役立つリソースが多い。
  • UXPin Merge のテクノロジーを使って、React アプリのプロトタイプの作成およびテストができる。

UXPin Mergeテクノロジーで React アプリ第1号を効率よく構築しませんか?

Reactコンポーネントを UXPinのデザインエディタにインポートし、高度なインタラクションを追加してみて、実際のアプリと同じように機能するプロトタイプをつくってみましょう。

UXPin Merge へのアクセスのリクエストはこちら

CSS と JS で React アプリ第1号を作る

CSS と JS がわかると仮定すると、React アプリガイドの理解や、初めてアプリを作るために必要なスキルの多くをすでに身に付けているといえるでしょう。最初は戸惑うかもしれませんが、これを何日か継続してみてください。

また、こちらの「React の流儀」をオススメします。多くの開発者から、紹介されている 5ステップのチュートリアルが非常に役立つと評判があります。

初めてのアプリ構築に React を使う最大の理由

JavaScript を使ってアプリを作るのが好きな初級開発者なら、なぜこんなにも同じ分野の人たちがReact に熱中するのか不思議に思うかもしれませんね。

しかしながら、その理由は、複雑な機能を実行するアプリケーションの構築が必要なキャリアのある段階に達するとわかるでしょう。

そして JavaScript は、今日のアプリ開発者のニーズに対応していないため、ある時点で非常に厄介なものになります。

そこで、以下のような理由から、React アプリを作るべきです:

02 4

  • 再利用可能なコンポーネントを提供することで、長い目で見たら時間の節約になる。
  • DOM の落とし穴を回避。
  • ツールやアドバイスを惜しみなく提供する開発者たちの強固なコミュニティがある。
  • React アプリが急速に業界標準になりつつある。

React を使ったビルドを学ぶと、数多くのデザインパターンにもアクセスできるようになります。

また、最初に学ぶべきおすすめのパターンには、以下のようなものがあります:

  • ステートレスなコンポーネント
  • 条件付きレンダリング
  • レンダープロップ
  • 制御コンポーネント
  • React フック

React のデザインパターンについてのより深い理解に向けて、「知っておきたいReactの デザインパターン【2023年版】」の記事をぜひお読みください。

React と JavaScript の違い

ReactとJavaScriptの違いを知る

React と JS には共通点があるものの、React を使いこなすには超えるべきハードルがいくつか出てきます。

最も顕著な違いには、以下のようなものがあります:

違い1:UIの構築法

JavaScript では、HTMLドキュメントの中にインターフェースを作成し、そのコードはサーバーに送られますが、Reactでは、ブラウザでUIを確定します。

最初は、こんな短いHTMLを追加するのは不自然に思われますが、現実的には、同じ結果が得られます。React はブラウザ内で動作し、JS はサーバーの助けが必要だという点が違いますね。

違い2:アプリ間の機能分割の方法

開発者が JavaScriptを使う方法は非常に複雑になり、JSの コードが耐えられないほど複雑に見えることがよくあります。その結果、同じアプリで作業している間に、多くのファイルを開き続けることになります。

対するReact は、機能をコンポーネントに分割することで、プロジェクトがより管理しやすくなります。

各コンポーネントには、そのコンポーネントが実行しなければいけないコードがすべて格納されており、その結果、ごちゃごちゃしたライブラリではなく、短いリストのようなコードが得られます。

違い3:アプリがユーザーデータを管理する方法

JS の場合、例えば、テキストフィールドに名前を入力すると、その情報はサーバーに転送される前に DOM に移動するといったように、ユーザーから送信されたデータは、ブラウザが扱う DOM(ドキュメントを物として扱うモデル)に格納されます。

一方 React は、ユーザーデータは変数として保存されます。ユーザーの視点からは、何も大きく変わることはありませんが、バックエンドでは、データの管理がはるかに簡単になります。

React アプリ第1号を作るのに他に必要なもの

JavaScript、CSS、HTML の経験があれば、もう React を使えるようなものです。ただし、Reactを使って何かを作る前に以下のインストールが必要です:

  • Node.js:オープンソースの実行環境で、開発者はサーバーサイドで JavaScriptコードを実行できる。
  • PowerShell:スクリプティングと自動化のフレームワークで、ユーザーはWindows 環境におけるさまざまなタスクの管理と自動化が可能。
  • npm:再利用可能なコードモジュールやライブラリの管理および配布プロセスをシンプルにするパッケージマネージャ。
  • React アプリの作成:利用可能なコーディング環境はこれだけではないが、おそらくこれがベストな選択である。

初めての React プロジェクトにツールチェーンは必要ないかもしれませんが、以下のようなオプションはチェックしておいて損はないと思います:

このような開発ツールキットはどれも便利です。使わないといけないということはありませんが、これで作業が楽になるでしょうから使うべきです。

React アプリ第1号を作る前の練習

JavaScript でどれだけ多くのアプリを作ったことがあっても、React でアプリを作るには、まずは React アプリガイド以上のものが必要です。ちなみに W3Schools には、簡単なアプリケーションの作り方を教えてくれる入門書があります。

また、以下でより多くの経験を積むことができます:

UXPin で React アプリのプロトタイプを作成およびテストする

UXPin を使うと、React アプリのプロトタイプの作成およびテストが簡単です。例えば、「JSXプリセットのオーサリングと管理」で、UXPin でのコードのテストがいかに簡単かをご覧ください。UXPin Editorのキャンバスにコンポーネントをドロップするだけで、意図したとおりに機能・動作するかをみることができます。

また、UXPin Merge を使えば、React.jsでコーディングされたコンポーネントを Git レポジトリから UXPin Editor にインポートして同期させることができるので、さらに一歩進んで、React を使ってデザイン全体を構築することができます。

要するに、React でコーディングできるものは何でも、プロトタイプで見せることができます。また、デザイン部門と緊密に連携すれば、ハンドオフのプロセスが短縮され、コミュニケーションのプロセスでの摩擦がなくなるので、非常に有益です。

test react app in UXPin

アプリ開発経験の有無にかかわらず、UXPinがお手伝いします。クラウドベースのツールのコラボレーション機能を使って、周りとアイデアを共有しましょう。

UXPin アカウントがなくても、あなたのプロジェクトを閲覧し、フィードバックを残すことができます。正しいリンクさえあれば、プロトタイプにアクセスできますからね。

また、UXPinを使って、コードに取り掛かる前にアイデアを検討することもできます。ビルトインライブラリを使うことで、簡単に機能をテストでき、気に入った機能があれば製品に合った微調整を加えた独自のバージョンを作成することもできます。

単なるフラットなシンボルではなく、すでに制作可能でインタラクティブなライブコーディングされたコンポーネントでデザインしましょう。UXPin Merge へのアクセスリクエストはこちら