【iOS/Android】スマホアプリ開発におすすめの言語/フレームワーク5選!

今回はスマホアプリを開発する際にその言語は何を使ったらいいのかっていうのを見ていきたいと思います。プログラミング言語はかなりの種類の数があるから、どれならスマホアプリ開発できるんだよ・・・?と思ってしまいますよね。せっかくプログラミング言語を学んでも、それじゃあスマホのアプリは開発できませんってなったらとても悲惨です。

そうならないためにスマホアプリ開発をするなら何の言語を使っていったらいいのかを書いていきたい。OSによって使えるものなんかが決まってくるから自分が作りたいものに応じて言語は選択していこう。個人的な見解も入るから、アプリ開発するときの言語選ぶときの参考程度にしておくれ。

iPhoneアプリ開発ならSwift?

Swift

iPhoneアプリ開発はSwiftがやっぱり有名かなと思う。AndroidとiOSを両方同じコードで開発することのできるReact NativeやFlutterはあるけど、iOSの機能に深く関わるならSwiftがおすすめ。

React NativeでiOSの機能に追いついていこうとするとOSに根差した深い機能なんかを作る時にかなりしんどい思いをすると思います(React NativeでiPhone/Androidアプリ開発の現場見たことあるけど、かなりキツそうだった)。

Swiftとは

SwiftはAppleが開発しているオープンソースの言語ということでGithubからコードを見ることができる。といっても大体使う言語ってオープンソースだよね。

この記事を書いている時点でのSwiftのバージョンは5系ということで、自分が一番触っていたであろう2系の頃とはかなり書き方も変わった。AppleのページにはこんなアプリがSwiftで開発されたと書かれているね。

キックスターターやLinkedINなんかもSwiftで作られているんですね。LINEマンガなんかもそうみたい。ただアプリって1つの言語で完結することはほとんどないだろうから、画面はSwiftで裏の処理は他の言語でっていうのが多いだろうね。(個人的には有名な結構のアプリはSwiftを使っているところが多そうだなー、なんて思っている)

 swiftの難易度

アプリをこれから作っていこう、さあ何の言語を使おうか!っていう時に知りたいのがその言語の難易度ですよね。自分はRubyやGO、PHP、JavaScript、TypeScriptなんかの言語を触ることが多いけど、そんな自分はSwiftは少々とっつきにくい印象がある。

Swiftのdeveloperサイトに紹介が載っているけど、うーんどうなんだろう。RubyやPHP、Pythonのコードは似ていてどれかひとつ分かれば何となく他のも読める感あるけど、Swiftは何とも言えない。

オプショナルデリゲートなんかのことを知らないといけなくて初めてアプリ開発をしていた時に「ん?」ってなった。他の言語の知識があると「うっ・・」ってなってしまうかもしれないけど、最初に学ぶなら何も思わないで進めるかもしれない。英語だけどSwiftUIのチュートリアルもありますね。

環境構築が必要ない

アプリ開発の良いところはこの一点が大きい気がします。何か作ろうってなった時にWebアプリなんかだと環境構築が鬼門だったりして、それだけで疲れ果てる場合あります。(はじめたての頃なんか結構地獄。)その点Swiftで開発する際にはXcodeで新規作成すればできるからその点だけは良いかもしれん。

Xcodeを使う

Xcodeを使って開発するっていうのも特徴の一つですよね。Webアプリなら適当に好きなエディタ開いてそこでゴリゴリコードを書いていくけど、Swiftのアプリ開発はXcodeを立ち上げてその中でコードを書いていく。

画面を作成する時に、コードじゃなくて画面上で直感的にいじることのできるストーリーボードか、コードで書くSwiftUIを今は選択肢として選べる。SwiftUIは使ったことがないけど、ストーリーボードは自分は苦手だ・・・

AppStoreの公開にはお金がかかるぞ

アプリ開発するのはまあいいとして、その作ったアプリをストアに公開する際にお金がかかるんですよね。

App StoreでAppを配布する予定がある場合、Apple Developer Programに登録してください。年間メンバーシップの料金は11,800円です。

プログラムの利用方法

11800円!!これ結構どうしようかなーって悩むポイントになりますよね。自分まだそんな作れないし、もうちょっと作れるようになってから課金してストア公開チャレンジしようかなー、なんてきっと思う。ちなみにAndroidの場合は25ドルということでAndroidの方が安いね・・・

Androidアプリ開発

Androidのアプリ開発はAndroidStudioという開発ツールを使うのが一般的ですよね。こんなやつ。Xcodeと同じような感じで新規のアプリを作り始める時にはボタンぽちぽちでいける。

AndroidStudioのインストールはAndroid Studioのインストールから行うことができるぞ。

Kotlin

Android開発をするならKotlinっていうイメージを持っているのではないでしょうか。また、Jetbrains社が開発に関わっている言語ということで知っている人もいるかもしれませんね。ちなみにInteliJ IDEAを提供しているのがJetbrains。

Jetbrains

Kotlinのドキュメントは英語だけど結構充実しているから、どんな感じのものか知りたい人は覗いてみるといいですよ。どんな感じで書いて行ったらいいのか何となくわかる。

Kotlin

Kotlinのコードを見てみると、他の言語をいじったことのある人なら結構とっつきやすいんじゃないかなあっていう印象を受ける。

Kotlinの開発事例

どうやらかなりKotlinはAndroidのアプリ開発に使用されているようです。上位 1,000 件の Android アプリの 80% 以上が Kotlin を使用しているって凄いな。

Kotlin を利用することで、開発チームは生産性を向上させ、アプリの質を高め、デベロッパーの満足度を上げることができました。上位 1,000 件の Android アプリの 80% 以上が Kotlin を使用している理由をご覧ください。

デベロッパーの事例

SmartNewsやTwitterなんかもKotlinの力を生かしているようですね。

developersのサイトにkotlin載っているけど、Kotlinの公式サイトもあってドキュメント結構豊富そうですね。ただKotlinの公式サイトの方が英語だから英語に嫌悪感がある場合はうっ・・・ってなってしまう。

Java

Java

Javaでアプリ開発っていうのも聞いたりするけど、今はKotlinで開発するのが一般的なんじゃないかなーと思う。今からアプリ作ろうと思ってJavaを勉強するのは個人的に・・・っていう感じだ。昔ながらの金融機関のシステムなんかにJavaは多く使われている印象がある。

Javaのサイトじゃなくて、developersのサイトにJavaで基礎トレーニングを行うもののリンクが貼られていたりしますね。

JavaはJavaを前から使っていて得意だよ!だからアプリもJavaで作るね!っていう感じならいいかと思っちゃう。

Androidのアプリ公開費用

Androidでストアに公開するためにはディベロッパー登録をする必要がある。その際に登録料がかかってきてその料金がUS$25だ。

Play Console の使用方法

iOSの方は年間1万円ぐらいかかるし、それと比べるとAndroidは安いですよね。こちらは1回限りの登録料っていうことで年間払いじゃないのが素晴らしい。ストアへの公開を値段だけで考えるならAndroidか・・・

クロスプラットフォームなフレームワークで開発

世の中にはiOSとAndroidのコードを分けずに、コードを共通して使うことのできるものがある。クロスプラットフォームというやつだ。ここではその中で有名なReact NativeとFlutterを紹介したいと思う。

React Native

Github - ReactNative

React NativeはFacebookが開発しているUIフレームワーク。Reactと名前がついている通り、Reactを知っている人ならコードを見れば大体同じような感じなのがわかってしまうと思う。

React Native

React Nativeで作られたアプリ

React Nativeで作られたアプリにはどんなものがあるのだろうか。国内のReact Nativeで作られてるアプリをピックアップという記事を見てみると以下のアプリなんかがReact Nativeで開発されているようですね。

  • air Closet
  • Quipper
  • stand.fm
  • Progate
  • menu
  • ...

stand.fmがReact Nativeなのが結構驚きなんだけど、まじですか。iPhoneアプリならSwiftだと思った。求人情報から技術スタック見てみると書かれていますね。

クライアント

React Nativeをメインに、音声編集・Live配信・コラボ収録などネイティブの開発が必要な箇所は積極的にネイティブで開発しています。

- React Native
- Redux
- Objective-C, Swift, Java
など

stand.fm - recruit

それとWeb版React Native for Webっていうやつで作られているらしい。凄いなstand.fm。(stand.fm使ったことあったからちょっと見てしまった)

React Nativeの難易度

React Nativeの難易度だけど、Reactを触ったことのある人なら楽だと思われる。それかVue.jsを触ったことがあればまだいける気がする(Reactの方が厳格だけど、似ている部分は多い)。ReactもVueも触ったことがなければ、結構しんどいんじゃないかなーって思います。

言語はJavascriptなんだけど、ライフサイクルだったりコンポーネントの作り方やjsxの書き方だったり結構戸惑うんじゃないかなと。。

React Nativeはこんな人におすすめ

React NativeをできてしまえばReactのコードを見ても、だいたい分かってしまうと思います(逆もまた然り)。なのでアプリ開発というよりはReactでWeb開発も視野に入れていきたい・・・!っていう場合にはおすすめ。

Dart - Flutter

DartというよりFlutterですかね。Googleが開発したモバイルアプリ用のフレームワークでDartっていう言語を使って開発していく。Dartは2011年にGoogleによって発表されたプログラミング言語で新しいですね。とりあえずFlutterのtutorialからHello World!!のコードを見てみるとこんな感じ。

Flutterのコードはあんまり馴染みのない感じがしなくもない。Flutterじゃなくて言語のDartのサイトのサンプルを見てみると、結構シンプルな感じかな。Java や C# と似ているみたいだけど、型付けができるようだし若干TypeScriptにも似ているような気がしなくもない。

 

FlutterのFAQに誰のためのものかや、どれぐらい使うのに開発経験が必要かなんかが軽く書いてるけど、こんな感じですね。(翻訳した)

Flutterは、オブジェクト指向の概念(クラス、メソッド、変数など)および命令型プログラミングの概念(ループ、条件など)に精通しているプログラマーにとって親しみやすいものです。

プログラミングの経験がほとんどない人が、プロトタイピングやアプリ開発のためにFlutterを学び、使用しているのを見てきました

うむなるほど、まあそう恐ることはないのかもしれない。

Flutterを使ったアプリ

FlutterのサイトにShowcaseが載っている。いくつかの場面やアプリで利用されているようですね。ebayやGoogle Ads、STADIAなんかにも使われているんですね。

また、Workshipの記事にFlutterが使われているアプリの事例なんてものが掲載されていますね。

  • KlasterMe :コンテンツの発掘・制作アプリ
  • Pairing :独身者向けマッチングアプリ
  • Meeve:オフラインで人々を繋げるアプリ
  • n8 :イベント情報収集アプリ
  • ・・・

モバイルアプリ開発にGoogleのFlutterを使うべき8つの理由

結構ありますね。Flutterって結構新しめな印象

何の言語を使ったらいいのか

いくつかアプリ開発をすることのできる言語を見てきたけど、ぶっちゃけどれ使ったらいいのか何とも微妙ですよね。まとめるとこんな感じだけど、よくありそうな意見だ。

  • Androidアプリ開発・・・Kotlin
  • iPhoneアプリ開発・・・Swift
  • 両方いっぺんに開発したい・・・React Native、Flutter

React NativeとFlutterはどっちを選べばいいかは悩ましいね。それぞれのGithubページを見てみると、プルリクの頻度やスター数からFlutterの方が勢いはあるかな。

Reactやりたい!Reactに慣れているならReactNativeで、どっちもやったことないならFlutterっていう気もしてくる。まあここら辺は色々調べて納得する方で開発していきましょう。

おすすめの記事