導入
仕事でFlutterの話が出てきたので、チュートリアル形式で進める前に簡単にまとめます。
Flutterとは
Flutter は Googleが開発したUIフレームワーク で、1つのコードベースから
iOS、Android、Web、デスクトップ(Windows / macOS / Linux)と複数プラットフォームのアプリを同時に作れるのが特徴です。
開発言語は Dart というGoogle製の言語を使います。
特徴
- マルチプラットフォーム対応: 1つのコードで複数のプラットフォームに対応しています
- ネイティブ並みの高速なUI描画: 独自のレンダリングエンジンSkiaを使用するため高速に描画されます
- ホットリロード: コード変更を即座に画面に反映されます
- 豊富なウィジェット: UI部品は全てウィジェットとして管理、提供されます
基本構造
Flutterアプリはウィジェットのツリー構造で構築される。
例)「画面全体」 –> 「AppBar(ヘッダー)」 –> 「ボタン」
Hello Worldのコード例
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Hello Flutter')),
body: Center(child: Text('Hello World!')),
),
);
}
}
メリット・デメリット
メリット
- 開発コストの削減(1つのコードベースで複数プラットフォーム対応)
- 高速な開発サイクル(ホットリロード機能)
- 豊富なUIコンポーネント
デメリット
- アプリサイズが大きくなりがち
- 大規模になると複雑になることがある
- プラットフォーム固有の最新機能への対応に遅れが生じる場合がある
- Dart言語の学習コストが必要
※静的型付け言語やJavaScriptの経験があるとそうでもないという意見もありました
個人的な感想
iOSネイティブ開発はSwiftが主流というイメージでしたが、初めからAndroidとiOSの両方のアプリを作成するプロダクトや、開発コストをかけたくない場合だとFlutterという選択肢が出てくるのかなと思った。
まとめ
Flutter(Dart)の特徴をざっくりと理解したつもりですが、
表現の誤りや誤解等あれば、ぜひ編集リクエストやコメントからお願いいたします
参考