ガイド
FLUTTER INTERVIEW Qs
Flutter開発者を採用する際の技術面接で使える質問と模範回答。Widget/Element/RenderObject、状態管理、Flutter Engine、Platform Channelsなどを網羅。
最終更新:2026年5月
Widget、Element、RenderObjectの違いを説明してください
WidgetはUIの設計図(不変オブジェクト)で、ElementはWidgetのインスタンスでツリー上に1回だけ存在します。RenderObjectは実際のレイアウトと描画を担当し、サイズ計算やヒットテストを行います。Widgetが再構築されても、キーが同じならElementが再利用され、RenderObjectの再作成が回避されるためパフォーマンスが向上します。
RiverpodとBlocの違いを説明してください
RiverpodはProviderの後継で、コンパイル時の安全性とグローバルな参照が可能です。ボイラープレートが少なく、テストが容易です。Blocはイベント駆動型アーキテクチャで、明確な状態遷移と強力なDevToolsが強みです。小〜中規模アプリではRiverpod、大規模エンタープライズや複雑なワークフローではBlocが推奨されます。
Flutter Engineとアーキテクチャについて説明してください
Flutter EngineはC++で書かれたコアで、Skia(またはImpeller)を使ってGPUに直接描画します。Dart VMはJIT(開発時)とAOT(リリース時)の両方をサポートします。Framework層のWidgetツリー、Elementツリー、RenderObjectツリーが協調して動作し、Platform Channelsを介してネイティブOSと通信します。
Platform Channelsの仕組みと用途を説明してください
Platform ChannelsはDartコードとネイティブコード(Kotlin/Swift)間でメソッド呼び出しを行う仕組みです。MethodChannelで一方向の呼び出し、EventChannelでストリーミングデータの受信が可能です。カメラ、GPS、バッテリー状態などのネイティブAPIにアクセスする際に使用します。頻繁な呼び出しはパフォーマンスに影響するため、FFIやPigeonの検討も有効です。
Flutterアプリのパフォーマンスを最適化する方法を教えてください
constコンストラクタを使ってWidgetの再構築を抑制、ListView.builderで仮想スクロールを実装、RepaintBoundaryで不要な再描画を防止します。さらに、Image.networkのキャッシュ戦略、 isolateを使った重い計算の非同期化、DevToolsのPerformanceタブでのjank検出も重要です。
Flutterのテスト戦略について説明してください
Unitテストでビジネスロジックと状態管理を検証、WidgetテストでUIのレンダリングとインタラクションを確認、Integrationテストでエンドツーエンドのフローを検証します。Mockitoやmocktailで依存関係をモックし、goldenファイルテストでUIの回帰を防ぎます。CI上で`flutter test`を自動実行し、カバレッジを監視します。
お問い合わせ