---
title: 応用を学ぶ
description: "Yamada UIのテーマ・ローディング・通知・アニメーションを学ぶ。"
---
このガイドは、Yamada UIの概念を理解するのに役立ちます。開発を開始する前に、このガイドを読んでYamada UIを理解することをオススメします。
:::tip
このガイドは基本であり、Yamada UIで開発する**面白さ**を感じてもらうことが目的です。なので、各概念や機能を深く説明していません。もっと知りたくなった場合は、ページ内の各リンクをご覧ください。
:::
## テーマ
Yamada UIは、他のUIライブラリと同様にテーマという概念が存在します。
テーマは、[カラー](https://yamada-ui.com/docs/theming/tokens/colors.md)・[スペース](https://yamada-ui.com/docs/theming/tokens/spaces.md)・[文字の大きさ](https://yamada-ui.com/docs/theming/tokens/font-sizes.md)・その他多くのトークンが定義されている変更可能なオブジェクトです。
アプリケーションで使用する[ブレイクポイント](https://yamada-ui.com/docs/theming/breakpoints.md)や[カラーモード](https://yamada-ui.com/docs/theming/color-mode.md)も簡単に変更可能です。
また、他のUIライブラリではあまり実装されていない[テーマの切り替え](https://yamada-ui.com/docs/theming/switching-themes.md)もサポートしています。
```tsx
const { themeScheme, changeThemeScheme } = useTheme()
return (
The current scheme is "{themeScheme}"
Primary
Secondary
Primary
Secondary
)
```
:::note
テーマをもっと知りたい場合は、[こちら](https://yamada-ui.com/docs/theming.md)をご覧ください。
:::
### レイヤースタイル
レイヤースタイルは、プロジェクト全体で視覚的なスタイルを再利用するために使用されるトークンです。
```tsx preview
{(token, index) => (
{toTitleCase(token)}
)}
```
:::note
レイヤースタイルをもっと知りたい場合は、[こちら](https://yamada-ui.com/docs/styling/layer-styles.md)をご覧ください。
:::
### テキストスタイル
テキストスタイルは、プロジェクト全体でテキストのスタイルを再利用するために使用されるトークンです。
```tsx
Mono
```
:::note
テキストスタイルをもっと知りたい場合は、[こちら](https://yamada-ui.com/docs/styling/text-styles.md)をご覧ください。
:::
## ローディング
Yamada UIは、アプリケーションで必要なローディングアニメーションをサポートしています。
ローディングアニメーションを実行するには、[useLoading](https://yamada-ui.com/docs/hooks/use-loading.md)を使用します。[useLoading](https://yamada-ui.com/docs/hooks/use-loading.md)は、`screen`・`page`・`background`のインスタンスを返します。インスタンスには、いくつかのメソッドが含まれています。
- `start`: ローディングアニメーションを開始します。
- `update`: ローディングアニメーションを更新します。
- `finish`: ローディングアニメーションを終了します。
- `force`: ローディングアニメーションを強制的に更新します。
```tsx
const { screen, page, background } = useLoading()
const onLoadingScreen = async () => {
try {
screen.start()
await wait(3000)
} finally {
screen.finish()
}
}
const onLoadingPage = async () => {
try {
page.start()
await wait(3000)
} finally {
page.finish()
}
}
const onLoadingBackground = async () => {
try {
background.start()
await wait(3000)
} finally {
background.finish()
}
}
return (
)
```
### useAsyncCallbackを使う
アプリケーションで非同期コールバックを実行する場合は、[useAsyncCallback](https://yamada-ui.com/docs/hooks/use-async-callback.md)を使用すると、ボタンなどの要素がローディング中かどうかを示すのに便利です。
```tsx
const [loading, onClick] = useAsyncCallback(async () => {
await wait(3000)
}, [])
return (
)
```
`screen`や`page`なども合わせて実行することができます。
```tsx
const [loading, onClick] = useAsyncCallback(
async () => {
await wait(3000)
},
[],
{ loading: "page" },
)
return (
)
```
:::note
ローディングアニメーションをもっと知りたい場合は、[こちら](https://yamada-ui.com/docs/hooks/use-loading.md)をご覧ください。
:::
## 通知
Yamada UIは、アプリケーションで必要な通知をサポートしています。
通知を表示するには、[useNotice](https://yamada-ui.com/docs/hooks/use-notice.md)を使用します。[useNotice](https://yamada-ui.com/docs/hooks/use-notice.md)は、通知を表示・制御するインスタンスを返します。
```tsx
const notice = useNotice()
return (
)
```
:::note
通知をもっと知りたい場合は、[こちら](https://yamada-ui.com/docs/hooks/use-notice.md)をご覧ください。
:::
## アニメーション
Yamada UIは、CSSアニメーションやアニメーションに特化したコンポーネントを提供しています。
### CSSアニメーション
[@keyframes](https://developer.mozilla.org/ja/docs/Web/CSS/@keyframes)を使い、アニメーションの中間状態を適用するには、`_keyframes`を使用します。
```tsx
Box
```
また、[テーマ](https://yamada-ui.com/docs/theming.md)の[キーフレーム](https://yamada-ui.com/docs/theming/tokens/keyframes.md)を使用することで、アプリケーション全体で共通のキーフレームを適用することができます。使用する場合は、`animationName`または`_keyframes`に値を設定します。
```tsx
Box
```
:::note
アニメーションをもっと知りたい場合は、[こちら](https://yamada-ui.com/docs/styling/animation.md)をご覧ください。
:::
### Motion
Yamada UIは、[Motion](https://motion.dev)にYamada UIの[Style Props](https://yamada-ui.com/docs/styling/style-props.md)を拡張した便利なコンポーネントを提供しています。
```tsx
```
[Motion](https://yamada-ui.com/docs/components/motion.md)は、ジェスチャーアニメーションをサポートしています。
- `whileHover`: ポインターがコンポーネント上を移動したときに実行されるアニメーション。
- `whileTap`: ポインターがコンポーネントをクリックまたはタップしたときに実行されるアニメーション。
- `whileFocus`: コンポーネントがフォーカスされたときに実行されるアニメーション。
```tsx
Click me!
```
:::note
`Motion`をもっと知りたい場合は、[こちら](https://yamada-ui.com/docs/components/motion.md)をご覧ください。
:::
## Congratulations!
おめでとうございます🎉
これで、あなたは**素敵の山田**になることができました🥳
## もっと学習する
Yamada UIをもっと知るために、テーマやコンポーネントを学んでみませんか?😎
- [テーマを学ぶ](https://yamada-ui.com/docs/theming.md): Yamada UIのテーマは、カスタマイズ性があり、アプリケーションのデザインの一貫性を担保します。
- [コンポーネントを探索する](https://yamada-ui.com/docs/components.md): Yamada UIは、130以上の柔軟性が高いコンポーネントを提供しています。すべてのコンポーネントは、アニメーション・ダークモードをサポートしています。
- [スタイリングを学ぶ](https://yamada-ui.com/docs/styling.md): すべてのコンポーネントは、propsを使用してスタイリングができるように設計されています。
- [ソースコードを探索する](https://github.com/yamada-ui/yamada-ui): Yamada UIのパッケージ・ドキュメントサイトはオープンソースです。Yamada UIを気に入ったら、スターを付けてください。