Flutter

Flutterを1か月学んでみた

記事内に商品プロモーションを含む場合があります

はじめに

私の今までのキャリアはほぼサーバーサイドの開発でした。
そんな私がスマホアプリ作りてえ。。。と思ったときに出会ったのが Flutter でした。
サーバーサイドの経験しかない人間が Flutter を学んでみた所感を残します。

Flutter について

Flutter はマルチプラットフォーム対応のアプリケーションフレームワークです。
世に送り出しているのは天下の Google です。
以前はスマホだけのマルチプラットフォーム対応でしたが、
今ではハイパー進化を遂げており、スマホ、 Web、デスクトップアプリをワンコードで開発できてしまいます。

コードは Dart という言語で書きます。
Dart は Java やJavaScript に書き方が似ています。
こちらも Google が開発しています。以下はサンプルです。

// Hello World
void main() {
print('Hello, World!');
}

// 関数
int fibonacci(int n) {
if (n == 0 || n == 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}

 

iOS と Android のアプリをいっぺんに作れる、Googleが力を入れており将来性あり、Java に似ているということで私は Flutter に手を出し始めました。

他のクロスプラットフォーム開発ツール

ちなみにスマホアプリを作成するクロスプラットフォーム開発ツールには、
Flutter の他で有名なものだと React Native, Xamarin, Ionic などがあります。
直近鈍っていますが Flutter はかなり熱いようです。

Flutter の良いと感じたところ

習得コストが低い

Java の経験があれば、Dart については軽く公式ドキュメントを読むだけで書けるようになると思います。
また、もちろんですが Flutter を勉強すると iOS, Android のアプリ作成力を習得することができます。
※ただし後ほど記載しますが、OS 特有の処理を実装するような場合はネイティブアプリ開発の知識が必要になってきたりします。

爆速で開発できる

Flutter の公式でも推していますが、Hot reload の機能が本当に素晴らしいです。
Java で開発しているときに少しコードを変えて結果を確認しようとした際には、普通に数分の待ち時間が発生しますが、Flutter の Hot reload はミリ秒の世界です。
瞬時に変更した結果が反映されるのでストレスフリーで開発することができます。
これは凄く楽しいです。これだけでも Flutter をやる価値があります。

自分のスマホに作ったアプリを超速でインストールできる

スマホアプリの開発をしたことがなかったのでびっくりしたのですが、こんなに簡単に自分のスマホに作ったアプリを入れられるのかとなりました。
ちょっとしたアプリであれば数時間で自分のスマホで使うことができるようになっています。
(なんなら審査には通らないようなアプリでも。)

永続化が良い感じ

ローカルで永続化を実現する場合は、SQLite が良い感じに使えます。
また、Google ということもあり、Firebase を手厚くサポートしているので、 Cloud Firestore でオンラインの永続化も簡単にできちゃいます。
(認証も FirebaseAuth でさっと作れてしまう。すごい。)

Flutter のちょっとした弱点

スマホアプリ開発未経験の身で書くのは少々忍びないですが、これは弱点だなと思った点もあります。

ネイティブの知識が必要になる場面あり

Flutter だけでは対応できないOSに依存する処理については、ネイティブのコードを書く必要があります。

例えば、iOS 14にはウィジェットというイケイケな機能がありますが、Flutter では実装できません。
Swift など iOS 開発用の言語で実装する必要があります。

また、各設定ファイルに独自に記載が必要なこともあり、その場合は各 OS のルールに従い編集が必要です。

Dart と Flutter だけでできないことは別途学習が必要になります。

アップデートが多い

Flutter は鋭意開発が行われている技術なので、アップデートが頻繁に行われています。
出来立ての技術であることから、公式ではない便利なライブラリも沢山ありますが、公式のアップデートにより破壊的変更が入ると突如死ぬライブラリもぼちぼちあります。

アップデートが入るたび、そのあたりは身構える必要があるかもしれません。

日本語の情報が少ない

開発環境の構築レベルだと日本語でも情報が沢山出てきますが、がっつり実装しようとすると話は変わります。

比較的新しい技術であることから、開発までがっつりやって日本語で情報を公開している人はまだまだ少ない印象です。
欲しい情報を見つけるには英語の海に飛び込むほかありません。

ドキュメントを解読する必要があるので少々辛いです。
英語の勉強になるので、メリットかもしれません。

1か月くらい学んだ所感

ちょこちょこ勉強したところ、小規模なアプリであればさらっと作れるようになりました。
Flutter めっちゃ便利。すごい。楽しい。

サーバーサイドでやっているような Java や SQL などの知識があれば非常にとっかかりやすく、簡単にアプリが作れました。
スマホアプリ未経験でもここまではスッと到達できそうです。

しかしながら企業に属する社会人目線でいくと、会社から世に出すレベルのアプリを Flutter の知識しかない状態で出すのはできないと思います。きちんと iOS, Android アプリの開発経験を積んだ人がいないと厳しいんじゃないかなと思います。

とはいえ、社内や身内だけに公開するような開発の速度を重視できるアプリを作るときには、最高の選択肢となりそうです。

おまけ

アプリを作ってみた

最近、ひろゆきさんの無敵の思考という本を読みました。
無敵になるにあたり、あらかじめ自分のルールを決めておき、それに従うことで選ぶストレスを無くすというところが前提として必要だと言っています。
そういえば、メンタリストDaiGoさんもウィルパワー(意志力)は日常の決断で消耗すると述べていました。

私も参考にやってみてはいるもののルールの存在を忘れてしまい、無駄な力を消費してしまっている現状です。
目標などは言葉にするだけではなく、書いたり形にすることが大切という話を聞いたことがあります。
そこで、自分のルールを登録して、日々自戒することができるアプリを作成しました。

自戒くん

自分のルールを登録して、そのルールを眺めるだけのアプリです。
登録と削除ができます。
これで自分のルールを忘れずにウィルパワーを守ることができそうです。デザインをもう少し頑張りたい