🍎

Which is "Flutter or Swift & Kotlin"!!!!!

2023/06/22に公開

今回は、FlutterSwift,Kotlinのどちらを最初に学習するべきかについて解説します。

今回は、『将来性』『稼げる金額』『効率』『楽しさ』の4つに分けて、
『Flutter』と『Swift,Kotlin』のそれぞれのメリットやデメリットについて解説します。
この2種類の違いを知ることで自分がどの言語でアプリ開発の学習を始めるべきか明確になります。

✅今回の内容

  1. FlutterとSwift,Kotlinの違い
  2. それぞれのメリットデメリット
  3. まとめ

✅メイン内容

🛠 Swift,Kotlin,Flutterとは

1. iOSとAndroid

まず、flutterとSwift,Kotlinの違いについて。
(以降、Swift,Kotlinをネイティブ言語と呼びます。)

モバイル端末の動作環境は大きく分けて『iOS』『Android』の2種類のOSに分けられます。
Appleが作るモバイル端末(iPhone)は『iOS』。
GoogleやSonyなどが作るモバイル端末(Pixel,XPERIA)は『Androd』です。

『iOS』『Android』はそれぞれアプリケーションやソフトウェアを動かすOSが違うため、
同じ仕組みではありません。

そのため、それぞれのOSでアプリを開発するには
専用のプログラミング言語を使う必要があります。

『iOS』でアプリはSwiftというプログラミング言語を、
『Android』でアプリはKotlinというプログラミング言語を使ってアプリを開発します。


2. クロスプラットフォーム対応のプログラミング言語

『iOS』『Android』でアプリを開発するには従来は専用のプログラミング言語を使って開発する必要がありました。

しかし、両OSで同じアプリをリリースしようとした場合、
同じようなコードをネイティブ言語でそれぞれ書かなければいけませんでした。
これでは、1つのアプリを作るのに2倍の作業量が必要なので、開発コストがどうしても高くなるのが問題でした。

そこでクロスプラットフォームに対応したFlutterが誕生しました。
FlutterはGoogle社が開発したフレームワークで、クロスプラットフォームに対応したDartという言語を使って、1つのプログラムを作成するだけで『iOS』『Android』の両方で動くアプリを同時に開発する事ができます。


🛠 それぞれのメリットデメリット

1. ネイティブ言語

🍎メリット

  • 端末の機能を自由自在に使用できる。
  • それぞれのOSにマッチしたUIや機能を作成しやすい

🌑デメリット

  • 両OSの開発では工数が2倍になる
  • ネイティブ言語を両方覚えないといけない

大きく分けると上記のようになります。
ネイティブ言語は対応するOSが直接サポートしているプログラミング言語なので、
端末の機能の活用性の自由度が高く、最新機能の対応も早いです。

端末の機能とは

  • 音声・ビデオ
  • センサー系
  • カメラ
  • GPS

等のことです。

また、昔からあるプログラミング言語なので参考文献が多く、エラーなどが出ても多くの記事が出てきます。

デメリットとして、序盤でもお話した通り、両OSの開発では工数が2倍になります。
また、両OSでアプリをリリースするには両OSのネイティブ言語を習得する必要があります。

2人で片方ずつ習得しても、1アプリに対する人件費が2倍になります。

ただし、ネイティブ言語は端末やOS機能を自由に使えるだけあり、案件等の単価が高いです。
また、片方のOSしか使わない場合、自由に自分の理想のアプリを作成する事ができるので、
作っていて楽しいです。

よって、ステータスは以下の通りになります。

将来性 : ★★★★☆
稼げる金額 : ★★★★☆
効率 : ★☆☆☆☆
楽しさ : ★★★☆☆


2. Flutter

🍎メリット

  • 1つの言語で両OSの開発ができる
  • 開発がactiveで最新技術に対応したパッケージが豊富

🌑デメリット

  • 端末やOSの機能を自由に使うにはネイティブ言語を書かなければいけない
  • 参考文献等が少ないので、自分次第

Flutter最大の特徴は『1プログラムで両OSを動かせる事』です。
これは、経営面からするとかなり強いメリットになります。
また、開発しているのがGoogle社なので信頼性が高く、開発もかなりactiveです。
開発がactiveだと常に新しいバージョンをリリースしてくれるので、最新技術に取り掛かりやすくなります。

弱点としては、端末やOSの機能をFlutterだけでは自由に使えないところです。
基本的には、公開されているパッケージやライブラリが豊富なので、
それを使用して端末やOS機能を利用します。

しかし、大規模なアプリの開発やOS機能をフルに使用したアプリとなると
その機能の実装のためにネイティブ言語でプログラムを作成する必要があります。

また、参考文献が少ないので、自走心がかなり大事です。
しっかりロジックを理解してコードを書く事ができる人にはかなり向いています。

Flutterは、OS機能を自由に使いづらい弱点がありますが、1プログラムで両OS動かせるのは楽しいし、
新しいフレームワークかつGoogleの開発したものなので、注目が集まっています。
案件数もかなり増えてきており、スタートアップから大手まで『Flutterエンジニア』という求人募集があるくらいです。

よって、ステータスは以下の通りになります。

将来性 : ★★★★☆
稼げる金額 : ★★★☆☆(★★★★★)
効率 : ★★★★☆
楽しさ : ★★★☆☆


✅まとめ

FlutterはOS機能こそ自由に使うことは難しいですが、ネイティブ言語が書ければその問題はありません。
一方、ネイティブ言語は両OSで開発する場合、必ず両OSの専用言語が書けなければいけません。

アプリ1つで、OS機能は多くても3つほどしか使用しないので効率だけならFlutterの方が断然良いです。

しかし、片方のOSでしか動かさないのであればネイティブ言語に特化した方が、深くスキルを習得できるので
出来る幅が増えて楽しくなると思います。

なので、結論としては
やれるなら3つ全部やる。迷ったら一回Flutterから入って、その後どちらかにシフトするのも良い。

という事です。
以上、flutterとネイティブ言語の違いやメリット・デメリットについて解説しました。

flutterの開発環境の作り方(2023年版)は以下の記事で解説しております。
https://zenn.dev/lisras/articles/9f4fe12f920e59

これからもflutterに関する記事をたくさんあげていきますね。

今回はここまで 

Discussion