今度はFlutter?Swiftとどちらを勉強すべきか
2021年3月17日 掲載
最近Flutterが使われる案件も増えてきました。
Flutterとはどのようなものなのでしょうか。
またFlutterとApple社のSwiftであればどちらを学ぶべきなのでしょうか。
またどのような人がFlutterを学ぶべきなのでしょうか。
詳しく解説していきたいと思います。
Flutterとは?
Flutterというものを初めて知った方も多いと思います。
そこでFlutterとは何かについて、基礎知識をまずは解説します。
Flutterはどのように誕生したのか、他の言語とどういった違いがあるのかに関しても、説明しましょう。
【SNS】
Flutter 使えば私みたいなアプリ初心者でもすぐそれっぽいの作れちゃうからすごく便利!
— さと@AI画伯?Flutter初心者 (@sato_neet) February 2, 2021
Google社が開発したツール
FlutterはGoogle社が開発したツールです。
よく勘違いされますが、Flutterはプログラミング言語ではありません。
オープンソースのアプリケーションフレームワークです。
Flutterを使う場合、Dartという言語によって開発することになります。
Dartは元々、JavaScriptの代替言語として開発されました。
そのためJavaScriptと非常に文法が似ている言語でもあります。
プログラミング経験者なら、Dartの習得にはそこまで時間はかからないでしょう。
Dartは元々あまり人気がなかったのですが、2018年にFlutterが誕生してから注目を集め始めました。
現状日本語の情報は少ないですが、今後増えていくと予想されます。
【SNS】
flutterの勉強として、割り勘アプリ開発中。
flutterは開発元がGoogleということもあって、Material UIのアプリがすぐに作れる。
Dartという謎の言語(こちらもGoogle製)を覚えないといけないけどね…#flutter pic.twitter.com/2m45JQDjuO— 渡邊 陽平 (Yohei Watanabe) (@yohei_haribou) December 27, 2020
flutterの特徴
flutterの特徴はホットリロードであることです。
ホットリロードとはソースコードを上書き保存した瞬間に、ブラウザを読み直してくれる機能です。
フロントエンドの開発をする場合、これはかなり便利な機能と言えます。
また、iOSとAndroid両方に対応するアプリを開発できるのも特徴です。
1つの言語で両方のアプリを開発できる言語はあまりなく、これも画期的と言えます。
flutterのメリット
flutterの具体的なメリットを紹介します。
なぜflutterを使う企業が増えているのか、本項目を読めば理由が分かるでしょう。
Dart言語によって、単一のコードでiOS、Androidアプリが作れる
flutterなら、iOSとAndroidの両方のアプリが作れます。
従来はiOSならObjective-CやSwift、AndroidならJavaやKotlinという言語が使われていました。
しかし、2種類の言語を使いこなせるプログラマーは、そこまで多くありません。
そのため企業は、iOSアプリエンジニアとAndroidアプリエンジニアを両方雇う必要があったのです。
ところがflutterを導入すれば、単一のコードでiOS、Androidアプリが作れます。
また、プログラムの修正を行う場合も、iOS、Android同時に行えます。
Android Studioをダウンロードすることで、macOSでもflutterでの開発をおこなうことができます。
これがflutterを使う最も大きな理由といえるでしょう。
そのためflutterを使えば、エンジニアを雇うコスト、開発コスト両方を削減することが可能です。
さらにWebアプリ開発を行うこともできます。flutter webのベータ版がアップデートされることも発表されており、使用の機会が増加することが見込まれています。
ホットリロードですぐに画面が確認出来る
flutterはホットリロードができるのもメリットです。
ホットリロード機能によって、ソースを修正したらすぐに画面を確認できます。
一々画面をリロードするのは、プログラマーによってストレスであり、作業効率の低下に繋がります。
そのため、flutterを使うことで作業効率を上げられる利点もあるのです。
部品の汎用性が高い、UIパーツが豊富
flutterを使う場合、Widgetという部品を組み合わせてモバイルアプリを開発します。
Widgetを使うことで、一からコードを書く必要がなくなり、開発コストを削減できます。
その上Widgetは汎用性が高く、あらゆるアプリ開発で柔軟に利用可能です。
また、flutterはUIパーツも豊富です。
UIパーツが豊富だと、レイアウト面や使いやすさも意識したアプリを作成できます。
このようにflutterを使いこなせば、従来よりサービスの質も上げられるのです。
Googleが作成している
Googleが作成した、というのもセールスポイントでしょう。
GAFAの一角を担うGoogleが作成していることもあり、公式サイトも充実しています。
また、サンプルコードも多数取り揃えられています。
flutterは言語としての信頼性も高いと言えるでしょう。
Googleの影響は大きいので、今後flutterを使う企業が増えると推測されます。
flutterのデメリット
flutterのデメリットや使う場合に注意すべき点を紹介します。
特にflutterはプログラミング初心者にとって、扱いにくい側面があることに注意が必要です。
良い部分だけでなく悪い部分も知ることで、flutterをより使いこなすことができるでしょう。
iOS,Android双方のネイティブ言語を学ぶ必要がある
基本的にはflutterで、モバイルアプリに必要なほとんどの機能は用意することが可能です。
しかし、flutterでは実現できない機能もいくつかあり、その部分はネイティブコードで書く必要があります。
SwiftやKotlinを完全に学ばなくて良い、という訳ではない点は注意です。
とはいえ、必要な箇所以外はflutter一つで問題ないのは大きいです。
【SNS】
flutter便利だけどまだまだネイティブの痒いところまで手が届かない。結局channel作ってswiftとjavaと3つ書いて時間がかかるというw
こういうのを汎用的にして公開してる人達は本当に尊敬する。— ゆすけ.きはら@焼肉奢りシャチョ (@ukhr13) February 4, 2021
日本語のドキュメントが少ない
flutterは2018年にリリースされたフレームワークのため、まだ日本語のドキュメントは少ないです。
公式サイト含め文献は英語が多く、翻訳の手間があります。
英語が苦手な方にとっては結構しんどいかもしれません。
今後Flutterが流行すれば、日本語のドキュメントも増えていくと思われます。
ネイティブと比べるとライブラリが少ない
やはり新しいフレームワークのため、ネイティブで用意されているライブラリと比べると数が少ないです。
実際、github上にある情報量をflutterとswiftで比較すると、flutterが220ブランチ、446タグの情報が掲載されているのに対して、swiftは349ブランチ、1834のタグに関する情報が共有されています。
ライブラリも今後増えていくことに期待しましょう。
また、flutterはライブラリに関しては少ないですが、Widgetをはじめとした部品なら豊富です。
こちらの記事を参照することで、様々な機能を持った部品があることがお分かりいただけると思います。
Widgetの汎用性は高いので、ライブラリを使わなくてもアプリ開発はできます。
どのような人がflutterを学ぶべきか?
最後に、どのような人がflutterを学ぶべきかをまとめました。
以下に該当する人なら、ぜひflutterを学んで欲しいです。
モバイルアプリ開発経験のある人
flutterでは実装が難しい部分は、ネイティブ言語を使う必要があります。
しかし、iOS、Androidでの開発経験があれば、ネイティブ言語は習得済みなので、そこで苦労はしないでしょう。
それぞれの言語を柔軟に使い分けられる人なら、flutterを導入するのはおすすめです。
どのような人がSwiftを学ぶべきか?
iOSアプリを開発する場合、flutterではなくSwiftを使う手もあります。
SwiftはObjective-Cより高速かつ学習コストが低く、利用企業が増えている言語です。
iOSアプリだけでなく、MacアプリなどのApple製品全てを開発できます。
そのため、flutterよりも先にSwiftを学ぶべきか、迷っている方も多いかもしれません。
どのような人がSwiftを学ぶべきか、みていきましょう。
モバイルアプリを作ったことがない人
これからモバイルアプリ開発に挑戦する人は、Swiftが良いです。
Swiftはコードがシンプルな上に覚えることも少なく、最初に習得する言語としておすすめです。
また、フレームワークも充実しているので、作業工数を減らすことができます。
エンジニア未経験者
エンジニア自体未経験の人も、Swiftから学ぶのがおすすめです。
エンジニア未経験がいきなりflutterを使うと、混乱を招く可能性があるかもしれません。
日本語のドキュメントが少ないという点も、flutterの敷居を上げる要因となっているでしょう。
flutterを使うなら、受託開発や自社開発含め、プロセスを経て経験を積むべきでしょう。
その点Swiftはとにかく簡単ですし、エンジニア未経験者が挫折しにくいです。
Swiftを学べるプログラミングスクールもいくつかあり、敷居も低いです。
また、対応範囲の広いSwiftを使うことで、エンジニアとしての経験値も増えます。
まとめ
本記事ではflutterという言語について解説しました。
本記事で解説したことは以下の4つに集約されます。
・flutterはiOS,Android双方で開発できる汎用性を持ちます。
・モバイルアプリ開発を行ったことがある人ならFlutterを学んでも良いでしょう。
・逆にモバイル未経験者、エンジニア未経験者はSwiftで経験を積みましょう。
・自分のスキル・市場の動向を見極めてどちらを勉強すると良いのかもしれませんね。
flutterは何より、iOSとAndroid双方の開発分野が使えるのが強みです。
ソースコードを単一にできれば、その後の修正も楽でしょう。
ただ、flutterでは実装できない機能もいくつかあり、その場合SwiftやKotlinを使う必要があります。
そのため、モバイルアプリ開発を行った人がflutterを学んだ方が良いです。
モバイルアプリを開発した経験がない方は、Swiftの方がおすすめでしょう。
本記事がこれから学ぶ言語を決めたいエンジニアの方にとって、有意義なものとなれば幸いです。また、新たに習得する言語に関して、以下の記事でおすすめの言語を紹介しています。