Flutter 🇯🇵
Published in

Flutter 🇯🇵

iOSネイティブアプリ開発者から見たFlutter

2018年8月 Release Preview 1 時点での所感

なぜFlutterに興味を持ったか

一番初めのきっかけはDroidKaigi 2018の発表

5月のGoogle I/O 2018明けにFlutterと戯れた

触っているうちにじわじわとFlutter沼にハマってきた

Flutterへの評価

高い生産性

  • Hot Reload: 1秒未満(差分が少ない時・大体こちらで済む)
  • Hot Restart: 数秒程度(差分が多い時・詳しくは下記の Limitations 参照)
  • Hot Reload/Restartによってとても速いサイクルで実装を進められる
  • UI含めてDartコードで書くという割り切りがうまく機能していてUI実装効率が良い

バランスのとれたDart言語

  • async/await(Promiseと似た非同期型のFuturesの結果を同期的に取得できるキーワード)が言語機能に組み込まれている
  • Streams(Rxの簡易版みたいなもので複雑な非同期処理には別途rxdartパッケージ併用が必要)が標準パッケージに含まれている
  • Cascade notation(.. )によって、あらゆる既存メソッド・プロパティなどをメソッドチェーン的に扱える
  • dartfmt が言語とセットになっていて、書き方を簡単に揃えられる(analysis_options.yamlによって細かいカスタマイズも可能)
  • 標準パッケージが充実していて、野良パッケージが必要な場面が少ない
  • Optionalが無い(quiver パッケージに一応あるものの言語に組み込まれていない)
  • 末尾に ; が必要など古臭く感じられるところがちらほらある
  • Swiftだと括弧が不要な箇所にも書く必要があったりなど、自分の好きな言語より面倒な部分が気になりがち

初めの学習コストはやや高め

Googleの公式ドキュメント・学習資料などが充実していて分かりやすい

FlutterでiOSネイティブアプリを作る時の戦略

FlutterでiOSネイティブアプリに見紛うようなUIを組むことは現時点では難しい

ネイティブアプリ
Flutter

iOSアプリもマテリアルデザインで妥協するのが良さそう

テキスト入力周りが怪しい(らしい)

ネイティブ機能をフル活用するのは現状難しいところがある

Architectural overview: platform channels
  • ネイティブAPIを呼んで結果を受け取ってそれを元にFlutterのビューで表示
  • ネイティブのビューに丸投げ

将来的にはiOSネイティブアプリっぽいUIの実現も可能かもしれない

Flutterをどう活用しようと思っているか

Androidアプリ開発

  • プロジェクト設定・ビルド周りの諸々
  • マテリアルデザイン
  • (できればAndroid端末を普段使いしてAndroidっぽいアプリに慣れ親しむ)
  • (プラグインを自作する場合はもちろんそのネイティブコードを書くだけのスキルは必要だが、既存ので済めば不要)

クロスプラットフォーム開発

デザインツール

プロトタイピングツール

今後の記事の予定

  • Flutterの効率良い学び方 (書きました)
  • Scoped Model・BLoC(Business Logic Component)パターンなど、まだ体系的な説明が不足している事柄についての解説

--

--

Flutterに関する日本語記事を書いていきます🇯🇵

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store