0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

constを使うと何が変わる?Flutterパフォーマンスの基本

Last updated at Posted at 2025-05-18

こんにちは、株式会社ダイアログでFlutterエンジニア2年目のエンジニアです。

Flutterで開発を始めたばかりの頃、constって正直「なんか付けとけばいいや」くらいの感覚で使っていませんでしたか?

この記事では、

  • Flutterのconstが何をしているのか?
  • なぜ使うことでパフォーマンスが上がるのか?

をわかりやすく解説します。


✅ 結論! :constは「インスタンスを再利用する」ための宣言

Flutterのconstは、同じ構造のWidgetを再利用できるようにするための仕組みです。

const Text('Hello');

このように書くと、「これはコンパイル時に定数として確定するから、再利用できる」とFlutterは認識します。

※コンパイル時定数:プログラムのコンパイル時にすでに値が決まっているconst修飾子がついた定数。
※実行時定数:プログラムの実行中に決まるfinal修飾子がついた定数。

💡 constを使うことで得られる2つのメリット

1. Widgetの再生成を防ぐ

以下のコードを見てください:

// constあり
body: const Text('Hello');

// constなし
body: Text('Hello');

constがない場合、build()メソッドが呼ばれるたびに Text('Hello') のインスタンスが毎回新しく生成されます。
これはパフォーマンスに悪影響を及ぼします。

一方、constを使うとFlutterは:

「このウィジェット、前にも全く同じのがあったから再利用していいね!」

と判断し、無駄な再生成を防ぐことができます。


2. Elementの再利用がしやすくなる

FlutterのUIは、以下の3層のオブジェクトで構成されています:

  • Widget(設計図)
  • Element(ウィジェットのインスタンス)
  • RenderObject(実際に画面上に描画されるオブジェクト)

FlutterはWidgetの構造を比較し、「変更があったかどうか」を判断します。
constウィジェットは 「絶対に変更されない」 ことが保証されているため、Flutterはそれを再利用できます。

その結果:

  • Elementの差分判定(再描画するか否か)が高速に
  • 不要な再構築を防止
  • スクロールやアニメーション中のパフォーマンスも向上

というメリットにつながります。

🔎 buildが何度も呼ばれる理由とconstの関係

Flutterでは、setState()Provider などの変更通知によって、build() が何度も呼ばれます。

しかし、毎回 Widget を新しく作っていたら パフォーマンスが落ちてしまいます
そのため、const で再利用可能な Widget を定義しておくことが重要です。


例:const がないと…

Widget build(BuildContext context) {
  return Column(
    children: [
      Text('Hello'), // 毎回新しいインスタンス
    ],
  );
}

例:const があると…

Widget build(BuildContext context) {
  return Column(
    children: const [
      Text('Hello'), // インスタンスの再利用が可能
    ],
  );
}

⚠️ 注意:constは万能ではない

const は便利ですが、すべてのケースで使えるわけではありません

  • 動的に変わる値 を使いたいときは const にできません。
  • 状態を持つウィジェット(StatefulWidget)で 変更される内部のデータ がある場合も、const の使用は制限されます。

🔚 まとめ

  • const を使うと、Widgetの再生成を防ぎ、Elementの再利用が可能になる
  • Flutterアプリのパフォーマンス向上に直結する
  • 意図を明示でき、コードの可読性・保守性もアップ

👉 使えるところには 積極的に const を使っていこう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?