インタラクティブボタンのデザイン
この記事は旧Figma UIと新Figma UIの両方に対応しています。ページの左下にあるトグルスイッチで、現在使用しているUIを選択してください。 UI3: Figmaの新デザインについて→
このプロジェクトでは、インタラクティブボタンをデザインします。このボタンにはデフォルト(default)、カーソルを合わせたとき(hover)、押したとき(pressed)の3つの状態があり、プロトタイピングを使用してアニメーション化します。
このボタンを構築するには次の手順に従います。
- メインボタンコンポーネントを作成します。
- ボタンバリアントを作成します。
- プロトタイピングのインタラクションを追加して、ボタンバリアントを接続します。
完了すると、ボタンは次のような見た目と動作になります。
メインボタンコンポーネントの作成
最初にボタンバリアントの作成に使用するメインコンポーネントを作成する必要があります。
- ツールバーで[テキスト]ツールを選択し、キャンバスをクリックして
Save
と入力します。 - テキストレイヤーを選択し、右側のサイドバーのテキストセクションでフォントサイズを
16
に変更します。このチュートリアルではデフォルトのInterフォントを使用しますが、他のフォントも自由に選択できます。 - テキストレイヤーを選択して、キーボードショートカットShift Aでオートレイアウトのフレームにします。
- 右側のサイドバーで、[垂直方法のサイズ調整]と[水平方向のサイズ調整]の設定を両方とも[内包]に設定するようにしてください。
- 次の調整を行って、フレームを整えます。
-
[線]セクションのプラスをクリックして、
2
の太さの内側線を追加します - 塗りセクションのプラスをクリックして、塗りを追加します
- 角の半径を
8
に変更します - オブジェクト間の水平方向の間隔を
8
に変更します - 水平方向のパディングを
32
に変更します - 垂直方向のパディングを
12
に変更します
-
[線]セクションのプラスをクリックして、
先に進む前に、ボタンが次のようになっていることを確認してください。
ヒント: ショートカットを使用してオートレイアウトのフレームにパディングを設定することもできます。⌘ Commandまたは⌃ Controlを押しながら、右側のサイドバーのパディングフィールドをクリック します。 はじめに垂直方向のパディングの数値を入力し、次に水平方向のパディングの数値を入力します。12,32のように、2つの数値をコンマで区切ります。
すべての辺に異なる数値を入力する場合は、上、右、下、左の順に数値を入力します。たとえば、1、2、3、4を入力すると、上、右、下、左の各パディングが1、2、3、4に設定されます。
次に、ブックマークアイコンを追加します。自分のアイコンを作成することも、Figmaコミュニティにある多くのアイコンプラグインの1つを使用することもできます。このチュートリアルでは、Phosphor Iconsプラグインを使用して、2つのブックマークアイコンを挿入します。
- ツールバーの[アクション]をクリックします。
- [プラグインとウィジェット]タブをクリックします。
- 検索フィールドに「Phosphor」と入力します。
- Phosphor Iconsを選択してプラグインを開きます。
- Phosphor Iconsプラグインで、検索フィールドに「Bookmark」と入力します。
- 「BookmarkSimple」アイコンの通常バージョンと塗りバージョンを使用します。プラグインの絞り込みオプションを使用して両バージョンを探します。
- アイコンをクリックしてキャンバスにドラッグします。
次の手順に従って、アイコンのサイズがボタンに合うようにしましょう。
- 2つのアイコンフレームを選択します。
- 右側のサイドバーで、 [縦横比を固定]を有効にし、フレーム幅を
24
に変更するようにします。 - 塗りアイコンはとりあえず脇に置いておきます。通常アイコンをボタンラベルの左にあるボタンフレームにドラッグします。これはオートレイアウトのフレームなので、アイコンが収まるように自動的に調整されます。
ボタンフレームを選択して、右側のサイドバーの[コンポーネントを作成]をクリックします。これが他のボタンバリアントを作成するメインコンポーネントになります。フレーム名をダブルクリックしてbutton/default/unsaved
に名前を変更します。
先に進む前に、ボタンが次のようになっていることを確認してください。
スラッシュ区切りの命名システムを使用する理由
スラッシュ( / )を使用してコンポーネント名を構造化すると、コンポーネントのプロパティ値をすばやく設定することができます。最初のスラッシュの前のテキストはコンポーネント名になり、追加されるスラッシュの階層ごとに新しいプロパティが作成され、コンポーネントセットのすべてのバリアントに適用されます。たとえば、今のボタンにはbutton/default/unsavedという名前が付いています。
バリアントを追加すると、コンポーネントセットは次のようになります。
- コンポーネントセット名: button
- プロパティ1: default
- プロパティ2: unsaved
設定を終了するには、プロパティ名の更新と、コンポーネントセットの各バリアントにプロパティ値を追加することが必要になります。次のセクションでこのプロセスを詳しく説明します。
ボタンバリアントの作成
メインコンポーネントができたので、これを使ってその他のボタンバリアントをコンポーネントセットに追加しましす。各バリアントが2つのバリアントプロパティを持つことになります。
バリアントプロパティが2つ必要な理由
ボタンには保存済み(saved)と未保存(unsaved)のステータスがあり、ステータスバリアントはインタラクションのさまざまな状態(default、hovered、pressed)に遷移するので、それぞれのケースに対応するためにステータス
バリアントプロパティと状態
バリアントプロパティが必要です。
必要なバリアントプロパティの数は、コンポーネントセットのバリアントタイプの数によって決まります。たとえば、各ボタンの大きいバージョンと小さいバージョン、テキストがないバージョンを含むようにコンポーネントセットを拡張すると、size
(largeまたはsmall)とhasText
(trueまたはfalse)の2つのバリアントプロパティを追加することが必要になります。
unsavedバリアントの構成
まず、unsavedバリアントを構成します。
次の手順に従ってバリアントを追加します。
- 作成したばかりのコンポーネントを選択します。
- 右側のサイドバーの [バリアントを追加]をクリックします。
- 新しいバリアントの下の紫のプラスをクリックして、もう1つバリアントを追加します。
これらのボタンバリアントを構成して、default、hover、pressedの各状態にする必要があります。
コンポーネントセットの上の方にある元のバリアントを選択します。右側のサイドバーの[現在のバリアント]セクションに、このバリアントに値がdefault
のプロパティ1と値がunsaved
のプロパティ2というプロパティがあることが表示されます。プロパティ値の名前を内容が分かりやすい名前に変えましょう。
-
プロパティ1をクリックして名前を
state
に変更します。プロパティ2も同様に名前をstatus
に変更します。これで、コンポーネントセットのすべてのバリアントがstateとstatusと呼ばれるプロパティを持つようになりました。 - 真ん中のバリアントを選択します。stateプロパティの横で、プロパティ値フィールドに
hover
と入力して新しい値を追加します。[塗り]セクションを使用して、バリアントの塗りを#E3E4EB
に変更します。 - 下のバリアントに、このプロセスを繰り返します。stateプロパティの横で、プロパティ値フィールドに
pressed
と入力し、塗りの色を#A8A9B2
に変更します。
先に進む前に、コンポーネントが次のようになっていることを確認してください。
savedバリアントの構成
素晴らしいコンポーネントセットができました。今度は、savedバリアントを追加して、各状態を作成します。
- 紫のプラスをクリックして、もう1つバリアントを追加します。
- 新しいバリアントを選択したまま、テキストレイヤーをダブルクリックして
Saved
と入力します。 - キャンバスに追加してあった、塗りのBookmarkSimpleアイコンを選択してコピーします。
- 作成したばかりのバリアントにある塗りのないアイコンのバージョンを選択し、右クリックして[貼り付けて置換]を選択します。
- 上にあるバリアント選択します。stateプロパティはそのままにして、
saved
と呼ばれる新しいstatusプロパティ値を追加します。 - 新しいsavedバリアントを選択したまま紫のプラスをクリックして、さらにバリアントを2つ追加します。
- 真ん中のバリアントを選択して、stateプロパティの値を
hover
に、塗りを#E3E4EB
に変更します。 - 下のバリアントを選択して、stateプロパティの値を
pressed
に、塗りの色を#A8A9B2
に変更します。
完了すると、コンポーネントセットは次のようになるはずです。
ボタンへのプロトタイピングコネクションの追加
次はボタンをインタラクティブにするために、プロトタイピングコネクションを追加します。プロトタイプ作成の経験が少ない場合は、プロトタイプ作成の包括的なガイドの用語集をご覧になり、このセクションで使用される用語を学習してください。
必要なコネクション
プロトタイプコネクションを追加する前に、さまざまなインタラクションをどのようなものにするか、詳細に決めておくことが重要です。
一般的なUI要素(ボタンなど)を作り直す場合は、他のボタンを参照したり既存のドキュメントを読んだりすると、要素がどのように動作すべきかを理解する助けになります。インタラクションについてメモをとったり、マウスオーバー、クリック、マウスエンターなど、対応するFigamのプロトタイプトリガーと比較してみたりしましょう。
複雑なコンポーネントについては、フローチャートを作成して、インタラクションをもっと理解しやすい手順に分解することをお勧めします。
このボタンについては、インタラクションは次のようになります。
- カーソルをボタンに合わせたときに、
hover
状態を出現させたい - カーソルがボタンを押し下げたときに、
pressed
状態を出現させたい - カーソルがボタンの表面から離れたら、ボタンを
default
状態にとどめておきたい - unsavedボタンが押し下げられたら、状態を
saved
に変化させたい - savedボタンが押し下げられたら、状態を
unsaved
に変化させたい
ホバートリガーの追加
- 右側のサイドバーの[プロトタイプ作成]をクリックします。
- default, unsavedバリアントを選択し、青のプラスをクリックしてhover, unsavedバリアントにドラッグします。
- 次のインタラクション設定を適用します。
- トリガーをマウスオーバーに変更します
- アクションを次に変更に設定します
- アニメーションをスマートアニメートに設定します
- トランジションをイーズイン/イーズアウトに変更します
-
所要時間フィールドに
150 ms
と入力します。
- default, savedバリアントとhover, savedバリアントの間に同一プロトタイプコネクションを適用します。
最初の2つのコネクションは次のようになるはずです。
所要時間を150 msに設定する理由
アニメーションはデジタルのインタラクションを楽しいものにします。デザインをアニメーション化する場合は、ユーザーがゴールにたどり着くのを遅らせることなく、ユーザーエクスペリエンスを高めるようにします。Webに特化したコンテンツでは、アニメーションを150 ~ 300 msの範囲に収めるのが業界では一般的です。この範囲のアニメーションであれば、ユーザーはインタラクションに気づくことができ、時期を逃さずに進んでいくことの妨げにもなりません。
マウスダウントリガーの追加
- default, unsavedバリアントを選択し、青のプラスをクリックして、pressed, unsavedバリアントにドラッグします。
- その他のコネクション設定はそのままにして、トリガーを[マウスダウン]に変更します
- hover, savedバリアントとpressed, savedバリアントの間に同一のプロトタイプコネクションを適用します。
コネクションは次のようになるはずです。
マウスリーブトリガーの追加
- pressed, unsavedバリアントを選択し、青のプラスをクリックして、default, unsavedバリアントにドラッグします。
- その他のコネクション設定はそのままにして、トリガーを[マウスリーブ]に変更します
- pressed, savedバリアントとdefault, savedバリアントの間に同一のプロトタイプコネクションを適用します。
コネクションは次のようになるはずです。
マウスアップトリガーの追加
押すと、unsavedボタンがsavedボタンに、savedボタンがunsavedボタンになるように、最後の2つのコネクションを追加する必要があります。
- unsaved, pressedバリアントを選択し、青のプラスをクリックして、default, savedバリアントにドラッグします。
- その他のコネクション設定はそのままにして、トリガーを[マウスアップ]に変更します
- pressed, savedバリアントとdefault, unsavedバリアントの間に同一のプロトタイプコネクションを適用します。
最後のコネクションは次のようになるはずです。
ボタンの再生
それでは、ボタンを動作させてみましょう。
- ツールバーで[フレーム]ツールを選択するか、Fを押してキャンバスにフレームを追加します。
- [アセット]タブから、ボタンのインスタンスをフレームにドラッグします。
- 新しいフレームを選択したまま、ツールバーの[プロトタイプビュー]ドロップダウンをクリックし、[プレビュー]を選択します。
- カーソルを合わせて、ボタンを操作します。
次のステップ
お疲れさまでした。コンポーネントセットとプロトタイプ作成を使用して、インタラクティブなボタンがデザインできました。もう1つ課題をお探しでしたら、アイコンだけのボタンが含まれたコンポーネントセットを作成するのはいかがでしょうか。デザインしたものがあって、それがすごく満足いくものなら、私たちにも是非見せてください。X (旧Twitter)の@Figmaにメンションするか、Figmaコミュニティに公開してください。
このプロジェクトでは、インタラクティブボタンをデザインします。このボタンにはデフォルト(default)、カーソルを合わせたとき(hover)、押したとき(pressed)の3つの状態があり、プロトタイピングを使用してアニメーション化します。
このボタンを構築するには次の手順に従います。
- メインボタンコンポーネントを作成します。
- ボタンバリアントを作成します。
- ボタンバリアントを接続するため、プロトタイプ作成インタラクションを追加します。
完了すると、ボタンは次のような見た目、動作になります。
メインボタンコンポーネントの作成
最初にボタンバリアントの作成に使用するメインコンポーネントを作成する必要があります。
- ツールバーで [テキスト]ツールを選択し、キャンバスをクリックして
Save
と入力します。 - テキストをハイライトして、右側のサイドバーの[テキスト]セクションでフォントサイズを
16
に変更します。このチュートリアルではデフォルトフォントを使用しますが、他のフォントも自由に選択できます。 - テキストレイヤーを選択し、キーボードショートカット
Shift1
A
を使用してオートレイアウトのフレームにします。 - 次の設定を調整して、フレームを整えます。
-
[線]セクションのプラスをクリックして、
2
の太さの内側線を追加します - 塗りセクションのプラスをクリックして、塗りを追加します
-
角の半径を
8
に変更します - アイテム間の水平方向の間隔を
8
に変更します -
水平方向のパディングを
32
に変更します -
垂直方向のパディングを
12
に変更します
-
[線]セクションのプラスをクリックして、
先に進む前に、ボタンが次のようになっていることを確認してください。
次に、ブックマークアイコンを追加します。自分のアイコンを作成することも、Figmaコミュニティにある多くのアイコンプラグインの1つを使用することもできます。このチュートリアルでは、Phosphor Iconsプラグインを使用して、2つのブックマークアイコンを挿入します。
- ツールバーの [リソース]をクリックして、リソースモーダルを開きます。
- [プラグイン]タブをクリックします。
- 検索フィールドに「Phosphor」と入力します。
- Phosphor Iconsを選択してプラグインを開きます。
- Phosphor Iconsプラグインで、検索フィールドに「Bookmark」と入力します。
- 「BookmarkSimple」アイコンの通常と塗りバージョンを使用します。プラグインの絞り込みオプションを使用して両バージョンを探します。
- アイコンをクリックしてキャンバスにドラッグします。
ブックマークアイコンがボタンには大きすぎるので、サイズ変更しましょう。
- 2つのアイコンフレームを選択します。
- 右側のサイドバーで、[縦横比を固定]を有効にし、フレーム幅を
24
に変更するようにします。 - 塗りアイコンはとりあえず脇に置いておきます。通常アイコンをボタンラベルの左にある保存ボタンフレームにドラッグします。これはオートレイアウトのフレームなので、アイコンが収まるように自動的に調整されます。次のようになるはずです。
ボタンフレームを選択して、ツールバーの [コンポーネントを作成]をクリックします。これが他のボタンバリアントを作成するメインコンポーネントになります。フレーム名をダブルクリックしてbutton/default/unsavedに名前を変更します。
スラッシュ区切り命名システムを使用する理由
コンポーネント名をスラッシュ( / )を使用して構造化すると、コンポーネントのプロパティ値をすばやく設定することができます。最初のスラッシュの前のテキストはコンポーネント名になり、追加されるスラッシュの階層ごとに新しいプロパティが作成され、コンポーネントセットのすべてのバリアントに適用されます。たとえば、私たちのボタンにはbutton/default/unsavedという名前が付いています。
変換されると、コンポーネントは次のようになります。
- コンポーネント名: Button
- プロパティ1: default
- プロパティ2: unsaved
設定を終了するには、プロパティ名の更新と、コンポーネントセットの各バリアントにプロパティ値を追加する必要があります。次のセクションで、このプロセスを詳しく説明します。
ボタンバリアントの作成
メインコンポーネントができたので、これを使って、その他のボタンバリアントをコンポーネントセットに追加します。各バリアントがバリアントプロパティを2つ持つことになります。
バリアントプロパティが2つ必要な理由
各ボタンバリアントには、状態
(default、hovered、pressed)とステータス
(unsavedまたはsaved)があるため、それぞれに対応するバリアントプロパティが必要です。
必要なバリアントプロパティの数は、コンポーネントセットのバリアントタイプの数によって決まります。たとえば、各ボタンの大きいバージョンと小さいバージョン、テキストがないバージョンを含めるようにコンポーネントセットを拡張すると、size
(large or small)とhasText
(true or false)の2つのバリアントプロパティの追加が必要になります。
最初にunsavedバリアントを構成します。
次の手順に従ってバリアントを追加します。
- 作成したばかりのボタンコンポーネントを選択します。
- ツールバーの[バリアントを追加]をクリックして、バリアントを追加します。
- 新しいバリアントの下の紫のプラスをクリックして、もう1つバリアントを追加します。
次に、これらのボタンバリアントを構成します。
- コンポーネントセットの上の方にある元のバリアントを選択します。右側のサイドバーの[現在のバリアント]セクションを見ると、このバリアントに値が
default
のプロパティ1と値がunsaved
のプロパティ2というプロパティがあることが分かります。プロパティ値の名前を内容が分かりやすい名前に変えましょう。 -
プロパティ1をクリックして名前を
state
に変更します。プロパティ2にも同様にして、名前をstatus
に変更します。これで、コンポーネントセットのすべてのバリアントがstateとstatusと呼ばれるプロパティを持つようになりました。 - 真ん中のバリアントを選択します。状態プロパティの横で、プロパティ値フィールドに
hover
と入力して新しい値を追加します。[塗り]セクションを使用して、バリアントの塗りを#E3E4EB
に変更します。 - 下のバリアントに、このプロセスを繰り返します。状態プロパティの横で、プロパティ値フィールドに
pressed
と入力し、塗りの色を#A8A9B2
に変更します
先に進む前に、コンポーネントが次のようになっていることを確認してください。
素晴らしいコンポーネントセットができました。今度は、savedバリアントを追加しましょう。
- 紫のプラスをクリックして、もう1つバリアントを追加します。
- 新しいバリアントを選択したまま、テキストレイヤーをダブルクリックして
Saved
と入力します。 - キャンバスに追加してあった塗りBookmarkSimpleアイコンを選択してコピーします。
- 作成したばかりのバリアントにある、塗りのないアイコンのバージョンを選択し、右クリックして、[貼り付けて置換]を選択します。
- 上にあるバリアント選択します。stateプロパティはそのままにして、
saved
と呼ばれる新しいstatusプロパティ値を追加します。 - 新しいsavedバリアントを選択したまま、紫のプラスをクリックしてさらに2つのバリアントを追加します。
- 真ん中のバリアントを選択して、状態プロパティの値を
hover
に、塗りを#E3E4EB
に変更します。 - 下のバリアントを選択して、stateプロパティの値を
pressed
に、塗りの色を#A8A9B2
に変更します。
完了すると、コンポーネントセットは次のようになるはずです。
ボタンへのプロトタイピングコネクションの追加
次は、ボタンをインタラクティブにするために、プロトタイピングコネクションを追加します。プロトタイプ作成の経験が少ない場合は、プロトタイプ作成の包括的なガイドの用語集をご覧になり、このセクションで使用される用語を学習してください。
必要なコネクション
プロトタイプコネクションを追加する前に、さまざまなインタラクションをどのようなものにするか、詳細に決めておくことが重要です。
一般的なUI要素(ボタンなど)を作り直す場合は、他のボタンを参照したり既存のドキュメントを読んだりすると、要素がどのように動作すべきかを理解する助けになります。インタラクションについてメモをとったり、マウスオーバー、クリック、マウスエンターなど、対応するFigamのプロトタイプトリガーと比較してみたりしましょう。
複雑なコンポーネントについては、フローチャートを作成して、インタラクションをもっと理解しやすい手順に分解することをお勧めします。
このボタンについては、インタラクションは次のようになります。
- カーソルをボタンに合わせたときに、
hover
状態を出現させたい - カーソルがボタンを押し下げたときに、
pressed
状態を出現させたい - カーソルがボタンの表面から離れたら、ボタンを
default
状態にとどめたい - unsavedボタンが押し下げられたら、状態を
saved
に変化させたい - savedボタンが押し下げられたら、状態を
unsaved
に変化させたい
ホバートリガーの追加
- 右側のサイドバーの[プロトタイプ作成]をクリックして、プロトタイプオプションを開きます。
- default, unsavedバリアントを選択し、青のプラスをクリックして、hover, unsavedバリアントにドラッグします。
- 次のインタラクション設定を適用します。
- トリガーをマウスオーバーに変更します
- アクションを次に変更に設定します
- アニメーションをスマートアニメートに設定します
- トランジションをイーズイン/イーズアウトに変更します
-
所要時間フィールドに
150 ms
と入力します。
- default, savedバリアントとhover, savedバリアントの間に同一のプロトタイプコネクションを適用します。
最初の2つのコネクションは次のようになるはずです。
所要時間を150 msに設定する理由
アニメーションはデジタルのインタラクションを楽しいものにします。デザインをアニメーション化する場合は、ユーザーがゴールにたどり着くのを遅らせることなく、ユーザーエクスペリエンスを高めるようにします。Webに特化したコンテンツでは、アニメーションを150 ~ 300 msの範囲に収めるのが業界では一般的です。この範囲のアニメーションであれば、ユーザーはインタラクションに気づくことができ、時期を逃さずに進んでいくことの妨げにもなりません。
マウスダウントリガーの追加
- hover, unsavedバリアントを選択し、青のプラスをクリックして、pressed, unsavedバリアントにドラッグします。
- その他のコネクション設定はそのままにして、トリガーを[マウスダウン]に変更します
- hover, savedバリアントとpressed, savedバリアントの間に同一のプロトタイプコネクションを適用します。
コネクションは次のようになるはずです。
マウスリーブトリガーの追加
- pressed, unsavedバリアントを選択し、青のプラスをクリックして、default, unsavedバリアントにドラッグします。
- その他のコネクション設定はそのままにして、トリガーを[マウスリーブ]に変更します
- pressed, savedバリアントとdefault, savedバリアントの間に同一のプロトタイプコネクションを適用します。
コネクションは次のようになるはずです。
マウスアップトリガーの追加
押すと、unsavedボタンがsavedボタンに、savedボタンがunsavedボタンになるように、最後の2つのコネクションの追加が必要です。
- unsaved, pressedバリアントを選択し、青のプラスをクリックして、default, savedバリアントにドラッグします。
- その他のコネクション設定はそのままにして、トリガーを[マウスアップ]に変更します
- pressed, savedバリアントとdefault, unsavedバリアントの間に同一のプロトタイプコネクションを適用します。
最後のコネクションは次のようになるはずです。
ボタンの再生
それでは、ボタンを動作させてみましょう。
- ツールバーの [フレーム]ツールを選択するか、Fを押してキャンバスにフレームを追加します。
- [アセット]タブから、ボタンのインスタンスをフレームにドラッグします。
- 新しいフレームを選択したまま、ツールバーの[プロトタイプビュー]ドロップダウンをクリックし、 [プレビュー]を選択します。
- カーソルを合わせてボタンを操作します。
次のステップ
お疲れさまでした。コンポーネントセットとプロトタイプ作成を使用して、インタラクティブなボタンがデザインできました。もう1つ課題をお探しでしたら、アイコンだけのボタンが含まれたコンポーネントセットを作成するのはいかがでしょうか。デザインしたものがあって、それがすごく満足いくものなら、私たちにも是非見せてください。X (旧Twitter)の@Figmaにメンションするか、Figmaコミュニティに公開してください。