ぽぬメモ!

ただのゲーム好きオヤジ

バーチャルじゃない勉強会でFlutterを使おうとしたら地獄だった(PCが高い話題)| I tried to use Flutter in a study group and it was hell (expensive PC topic).

日曜日にソフトウェアエンジニアの勉強会があった。

ずっとウェビナー形式の勉強会が続いていたので忘れていたが、今回から会議室を借りてリアルな開催になっていたことに気づいた。

リアルの場合、当然ながらパソコンを持って行くんだが、よく考えたら、私物の開発環境が入ったノートパソコンがない。

開発はすべてMac miniでするように変わってしまった。それ以外はiPadで出来てしまう。

そんなわけで開発ができるようなノートパソコンは必要なくなっていた。

勉強会はFlutterの勉強会でモバイルアプリ開発ができるノートパソコンと開発環境を用意しないといけないことに気づいて大急ぎで用意した。

Flutterとは

Flutterとは、2017年にGoogleが発表したオープンソースマルチプラットフォームの開発フレームワークです。 Flutterはマルチプラットフォームなので、Android / iOS / Web / Windows / macOS / Linuxの6つのアプリを全く同じソースコードで開発できます。

Flutter1では、モバイル(AndroidiOS)のみが対象だったのですが、2021年のFlutter2でWebアプリ、2022年のFlutter3でWindows/macOS/Linuxのデスクトップアプリに正式対応し、モバイル以外のプラットフォームのアプリも同一のソースコードで開発できるようになりました。

登場当初からFlutterの人気は凄まじく、現在も世界中で利用されています。2023年3月時点でGitHubのスター数は150k以上で、これはGitHubリポジトリのスター数ランキングで上位20位に入る程の人気です。

2021年には、モバイルアプリのマルチプラットフォームでReact Nativeのシェアを逆転しFlutterが42%で首位になったとの調査情報もあります。

参考:statista社の統計レポート「Cross-platform mobile frameworks used by software developers worldwide from 2019 to 2021

いま、手元には会計とか事務用のWindowsラップトップしかなくて、4、5年落ちのIntel Core i5でメインメモリ8GBの年季がはいったもの。

とはいえ、外部モニターは4Kで出力できるし、12.5インチの内蔵モニターもフルHDだし、事務用には困らないものだが、Android開発用には厳しすぎた。

Flutterはzipファイルをダウンロードして環境変数でPATHを通せば、ライブラリとしてのFlutterと、開発言語としてのDartがまるっと展開されるので、2時間程度で準備できるだろうと思ってしまった。

全てはここから始まった。

ただ、WindowsでFlutterを使うには、その他に、VisualStudioCodeとか、Android Studioとか、Git for Windows7-ZipVisual Studioの(デスクトップアプリをC++で開発する環境)あたりが必要だった。

数時間かけてAndroidの環境を構築したが、それでもGradleビルドは遅く、ある程度のソースコードのビルドには7〜20分はかかる。

開発では、Android Studioと、Android Emulatorを使うことが多いが、Android Studioは巨大なIDEなうえ、Gradleを使ったビルドが異常なほど遅い。キャッシュの設定など高速化のノウハウはあるが、遅いことには変わりない。

仕事は1日8時間、勉強会は1日4時間、20分間のビルドは3回すれば1時間、昔のように夜中にビルドできればいいが、今は都度ビルドして確認し、エビデンスもしっかり残すようになっている。さらに言えば、最近の開発では、コードを書いたらリアルタイムで画面表示に反映(ホットビルド?)されるものに変わってきている。それゆえパワフルな環境が必要で、2週間に1回リリースするようなスプリント開発は、あっという間に時間がなくなる。

以前、普通のモバイルノートパソコンを渡され、これを使ってくれと言われたことがあった。

「1 つのアプリで iOSAndroid の両方のプラットフォームをターゲットにできる」

良い言葉だけど、人員の削減にはなれど、作業は増え、まったく異なるプラットフォームで同じようなものを同時に開発できるといってもそりゃパワーが必要だし、実際には、個別に開発することになる。

Flutterはマルチプラットフォームなので、Android / iOS / Web / Windows / macOS / Linuxの6つのアプリを全く同じソースコードで開発できます。

必然的にWindowsならゲーミングPCのようなもの、Macならスペックの高いもので、ビルド時間を減らさないと、作業は終わらない。それなりのスマートフォンも必要。

engineering.mercari.com

それで、Flutterのビルド結果については、

相当な時間をかけてビルドした結果がこちら。

事務用WindowsAndroid用にビルドしたもの

M2 Mac miniでiPasOS用にビルドしたもの

iPhoneで動作させようとしたが、iOSがベータ版だったため、ビルドできず

(参考)適当なアプリをM2 Mac miniでSwiftUIを用いてビルドしたもの(作業時間5分)

まあまあ重いけど、使えるレベル。

(参考)適当なアプリを事務用WindowsAndroidを用いてビルドしたもの(作業時間3時間 !!)

重くて仕方がない。

~時は流れ~

勉強会後、Ubuntu 22.04を入れて、Linux用のFlutterを構築してみたけど、それなりのことをしようとすると、そもそもAndroid StudioのGradleビルドが激遅い。

15分間待ってフリーズしてしまった。

M2 Mac miniに構築したFlutter環境は、わりとさっくり。

Android Studio

使い慣れたXcodeならさっくりと2,3分で何かしら動作する。

~時は流れ~

すごく高いゲーミングノートPCって、ゲーマーには必要なんだなと実感、

そりゃ、プロのゲーマーは、すごく高いゲーミングノートPC必要だよな。

プロの海賊王になるには海賊船も必要だ。

つらい現実を見ただけのモヤモヤ感しか残らなくて、ストレス性の痛みが出た。