スマホアプリを作りたい!
よぉし!プログラミング言語を学ぼう!!と、その前に、皆さんはアプリケーションにはたくさんの種類があることをご存知でしょうか?
職業アプリ開発者として25年、現役エンジニアとしても活躍する筆者がこれから学ぶ方にぜひおすすめしたい技術Flutterについて解説します。
こちらの記事も参考にしてみてください。
アプリを動かす環境(プラットフォーム)
アプリとひとくちに言っても、実は動作する環境がたくさんあることをご存知でしょうか。
大きく分けると4つに分けられると思います。
今日はネイティブアプリの中でもスマホアプリの開発について解説していきましょう。
スマホアプリを作るプログラミング言語
現在スマホ(スマートフォン)のOSと言えばAppleのiOS、GoogleのAndroidがほとんどです。
この2つのOSのアプリケーションを開発する言語の代表的なプログラミング言語を挙げてみました。
iOSアプリ開発のプログラミング言語
Objective-C
Objective-C(オブジェクティブ シー)はMacOSの公式開発言語です。
現在では主にAppleのmacOSやiOS上で動作するアプリケーションの開発で利用されていますが、後述するSwiftの台頭により、一時期よりも案件数は少なくなったものの、今でも見かけるプログラミング言語です。
Swift
Swift(スウィフト)はAppleのiOSおよびmacOS、Linux、Windowsで利用出来るアプリケーションを作成できるプログラミング言語です。
2014年、Appleが正式版をリリースしました。
現在ではiOSアプリの開発では、Swiftが採用されていることが多くなりました。
Appleが発表した、iPad上でSwiftのプログラミングを学べるアプリ、Swift Playgroundsが有名です。
Androidアプリ開発のプログラミング言語
Java
JavaはWebアプリケーションでも使用される古い歴史を持つ言語ですが、Androidアプリ開発には良く使われている言語です。
Kotlinとの親和性も高いため、現在でも人気が高いプログラミング言語だと言えるでしょう。
Kotlin
Kotlin(コトリン)はジェットブレインズ社が2011年に発表したプログラミング言語です。
Java仮想マシン上で動作することができ、Javaよりも簡潔に書けることを目指しているプログラミング言語です。
現在、Android開発と言えばKotlinを想像するように、多くのアプリケーションで採用されています。
クロス(マルチ)プラットフォームのプログラミング言語
クロスプラットフォーム、マルチプラットフォームとは、1つの言語で複数のプラットフォーム上で動くアプリケーションを開発できる言語や開発環境のことです。
JavaやSwiftも複数のプラットフォームを想定していますが、ここでは、クロスプラットフォームを想定して開発された言語を紹介します。
React Native
React Native(リアクトネイティブ)はJavaScript(ジャバスクリプト)で開発できるモバイルアプリフレームワークです。
React NativeはFacebook社が開発しています。
Reactを開発したFacebook社が手掛けているため、Reactを知っている方なら馴染み深い言語で記述することができます。
現在日本での案件数はそれほど多くはありませんが、海外では一般的になっている印象です。
何より1つの言語でiOSアプリ、Androidアプリの両方を作成できるため、今後日本でも需要は増えるでしょう。
このプログラミング言語を採用しているアプリはFacebookやUberEatsなどです。
Flutter
Flutter(フラッター)はGoogleが開発したDart(ダート)のSDK(ソフトウエア開発キット)です。
2018年に正式版が発表されました。
まだ発表されてから間もないですが、アメリカやインドなどのIT先進国では採用数が年々増えています。
2021年にはWeb版も正式リリースされました。
日本ではまだまだ案件数が少ないですが、今後の開発の中心になっていくでしょう。
またPWAにも力を入れており、今後はWindowsアプリ、MacOSアプリとしてもFlutterを選択することが増えることが予想されます。
今から学ぶならどの言語か?
SwiftやReactNativeを上げる技術者も多いですが、案件数や将来性などを考えると、
筆者はFlutterを強く推薦します。
Flutterはプラットフォームを選ばず、1つの言語ですべてのアプリケーションを実現できてしまう。これは今までのプログラミング言語に大きく差をつけていると考えます。
Flutterをすすめる6つの理由
- 開発効率が良い
- 言語がわかりやすい
- デザインが作りやすい
- 選択できる開発環境が多い
- 技術者が少ない
理由をひとつひとつ解説していきましょう。
開発効率が良い
モバイルだけではなく、WebアプリケーションやWindowsアプリケーション、MacOSアプリケーションまでも1つの言語(Dart)で製作できれば、開発の期間はグンと低くなりますよね。
また、教育にかけるコストも1つの言語を学ばせることで複数のプラットフォームに対応できます。
そうすると企業としてはコストを抑えることにもつながります。
技術者もFlutter(Dart)を学んで、複数のプラットフォームアプリを製作できれば、学習コストを抑えることが可能です。
プログラミング言語(Dart)がわかりやすい
DartはJavaScriptに似ていると良く言われます。
JavaScriptを学習したことがあればすんなり習得できるでしょう。
JavaやC#を習得していれば特に違和感なく使いこなすことができます。
また、初学者でも理解しやすい記述になっています。
デザインが作りやすい(環境に依存しないUIを実現できる)
FlutterはGoogleが推奨しているマテリアルデザインを採用しているため、ユーザーが直感的に操作できるデザインにすることができます。
Cupertino(クパチーノ)というコンポーネントを使用すると、iOS風のデザインに統一することも可能ですが、マテリアルデザインを使用することで簡単に、そして統一感のあるデザインを作成できます。
選択できる開発環境が多い
現在Flutterで推奨されている開発環境は以下です。
- Android Studio
- IntelliJ
- VS Code
- Emacs
これらの開発用エディタがインストールされているならOSは問いません(各OS用のSDKを選択します)
Linuxでも、MacOSでも、Windowsでも、ChromeOSでも開発が可能です。
技術者が少ない
デメリットのひとつにもなるのですが、現在日本のFlutter技術者はまだかなり少ないです。
それは、案件数が少ないことにも起因しています。
しかし、これから学習するのであれば、需要が確実に伸びるであろうこの技術を学ばない手はありません。
未経験でもFlutterを扱えれば、転職や就職にかなり有利になるでしょう。
Flutterのデメリット
Flutterにはもちろんデメリットも存在します。
- 案件が少ない
- リファレンスが英語のみ、学習教材が少ない
- バージョンアップが早い
- ライブラリが少ない、バージョンアップが早い
案件数が少ない
案件数は先ほど述べたようにまだ日本では浸透していないため、現状は少ないです。
ですが、メリットでも述べたように必ず伸びていく市場ですし、アメリカやインドなどのIT業界ではFlutterが台頭してきています。
リファレンスが英語のみ、学習教材が少ない
リファレンスが日本語訳されるにはまだ少し時間がかかると思いますが、google翻訳を使ったりしながら、学習してみてください。
また、学習教材が少ないとはいえ、少しずつ増えてきている印象です。
UdemyなどでFlutterの教材探してみるとかなり増えてきているのが印象的です。
筆者が個人的におすすめするのはこちらのオンライン講座です。
かなりのボリュームがありますが、初学者にもわかりやすくひとつひとつ丁寧に説明してくれています。
ライブラリが少ない、バージョンアップが早い
こちらも新しい技術であるが故のデメリットでしょう。
ですが、これからもどんどん新しいライブラリは増えていきますし、使いにくいところが使いやすくなっていくはずです。
どうしても情報は英語になりますが、どんどん新しい技術を習得して、第一人者になりましょう。
Flutterを選ぶなら、何を学ぶべき?
そんなにFlutterがいいなら、よしじゃぁFlutterをやるぞ~~。だってこれだけでいいんでしょ?と、思った皆さん。
残念ながら、これだけで完結はいたしません。
アプリケーションにはデータベースやWebの技術は必須です。
以前のこちらの記事も参考にしてみてください。
Webの基礎やデータベースを体系的に学ぶためには、スクールを利用することが一番の近道です。
考えて悩むくらいなら、一度無料の体験を試してみてください。(無料ですしね)
Webの基礎やデータベースを学び、あなたもFlutterエンジニアを目指しましょう!
https://nontarit.com/2022/03/29/post-295/