《コラム》
プログラミング初心者が
アプリ開発をする
ための第一歩
スマートフォンやiPhoneが普及して急激に広まってきたアプリ(アプリケーション)。
世界中でたくさんのアプリが今日も開発されていますが、どのように開発されているのか、個人でも未経験からアプリ開発できるのか。
今回は初心者が未経験からアプリを開発するために必要な一連の流れや最近の開発トレンド、使用技術に至るまでといった幅広い話を、G’s ACADEMYで講師を務めたこともある現役エンジニアの山本(やまたつ)さんに聞きました。
山本 竜也 モバイルアプリエンジニア
Tatsuya Yamamoto
熊本県出身の27歳。新卒で未経験エンジニアとして入社した会社では全くコードを書かず、将来に不安を感じたため、2018年11月にジーズアカデミーのDev12期として入学。在学中に個人アプリをリリースし、卒業後はiOSエンジニアとしてスタートアップにジョイン。その後、フリーランスになり、現在は正社員として働いている。
Flutter を使用した開発が得意で、iOS、Android アプリを開発している。
Twitterはこちら
目次
1. G’s ACADEMYという場所はどういうところなのか。
2. Webアプリとネイティブアプリの違い
3. アプリ開発の全体像
4. アプリ開発に使うプログラミング言語
5. iOSアプリ開発ならSwift
6. Androidアプリ開発ならKotlin
7. プログラミング言語は目的にあわせて選定しよう
7-2. おすすめの勉強法
8. アプリ開発に必要な費用
9. プログラミング不要のノーコードツール
アプリってなに?
いまさらな気もしますがアプリとは何を指すのですか?あれもこれもアプリといわれているような印象があります。
一般的にアプリといわれるものはWebアプリとネイティブアプリという二つに分かれています。Webアプリは、Webブラウザ上で動かすことができるアプリケーション全般を指します。
そうですね。一方のネイティブアプリはGoogle PlayやApp Storeでダウンロードが必要なやつです。
Webアプリとネイティブアプリは開発の仕方が全然違うので、アプリを開発したいと漠然と考えている場合はまずこの二つの違いを整理する必要があります。
Webアプリとネイティブアプリの違い
そうですね。一方のネイティブアプリはGoogle PlayやApp Storeでダウンロードが必要なやつです。
Webアプリとネイティブアプリは開発の仕方が全然違うので、アプリを開発したいと漠然と考えている場合はまずこの二つの違いを整理する必要があります。
Webアプリの特徴はユーザーが最初に利用するまでの手間が少なく、開発コストも低いことですね。

Webアプリ開発に関しては別記事を参照してもらうとして、一方のネイティブアプリは端末にインストールしないと使えないので、いかにユーザーにインストールしてもらえるかは大きな課題です
多くのユーザーも同じ心理なので、この点は工夫が必要です。
ただ、ネイティブアプリは一度インストールしてもらった後は本領を発揮して、Webアプリよりも快適なユーザー体験(UX)を提供しやすいという特徴があります。
一度インストールしているので全体的に動作が早かったり、アプリによってはオフラインでも利用できたり。他にもGPS機能やプッシュ通知、音楽再生等の機能はスマホ本体機能と連携してより快適に動作したりします。
ですのでWebアプリもネイティブアプリも長所があり、最終的に知名度が高いサービスはWebアプリもネイティブアプリも両方提供して相互補完的に運用されていることが多いですね。
ネイティブアプリ中心の記事でいうのもなんですが、Webアプリ開発からスタートするのがおすすめです。(笑)
Webアプリはひとつ開発すれば誰でも自由にアクセスできて利用できますが、ネイティブアプリはiOSアプリとAndroidアプリ両方を作らないと網羅的にユーザーにサービスを提供できないんですよね。しかもそれぞれ時間をかけて作る必要があるので、先ほど挙げたネイティブアプリのメリットを生かしたサービスでない限りはWebアプリから開発するのがおすすめです。

アプリ開発の全体像
アプリ開発の全体的な流れは下の通りです。
基本的にはWebアプリもネイティブアプリも同様の流れで開発は進んでいき、ネイティブアプリは最後にApp StoreやGoogle Playでアプリ公開の申請が必要になります。
1. 要件定義
1. 大まかな機能やデザイン、コンセプトを決める
2. 基本設計
1. 大まかな機能に必要なデータ設計や他に必要な機能を詰める
2. デザインもここで大体決定
3. 詳細設計
1. 実装上必要な細かい条件を決める
-ニックネームは何文字まで?等
2. 細かいデザインの動きも決める
-エラー時、押せない時等のメッセージ等
4. 実装
5. テスト
6. アプリの申請(App Store か Google Play)
1. ストアに申請するときに開発者プログラム登録費用が必要
2. リジェクトされる可能性もある。リジェクトされたら
7. リリース
iOSアプリ開発ならSwift
どのOSのアプリを開発するかで使用する言語は異なってきますが、iOSだと主流はAppleが提供しているプログラミング言語のSwiftですね。
大半のiOSアプリはこのSwiftで開発されています。
Androidアプリ開発ならKotlin
Androidの場合はKotlinが多いです。以前はJavaを使った開発が多かったけど、GoogleからAndroidアプリ開発の公式言語に採用されたこともあり、現在は多くの開発案件でKotlinを使われている印象があります。
そのほかにもiOSアプリ、Androidアプリ両方の開発(クロスプラットフォーム)に対応しているFlutterやReact Native、Xamarin等を使ってネイティブアプリ開発をすることもできます。
特に Flutter は Webアプリも同じコードで開発できてコストをかなり抑えられるメリットもあるので最近は注目度が上がってきていますね!Flutter も Kotlin同様、 Google が開発しているので信頼できると思っています。
プログラミング言語は目的にあわせて選定しよう
初心者が未経験からアプリ開発を始める場合iOSアプリとAndroidアプリどちらから開発するのがいいんですか?
正直なところ、未経験から始めるアプリ開発は自分がもっているデバイスで選べばよいと思います。AndroidもiOSもシェアは半分くらいずつですし、自分のデバイスでテストできるだけでも開発のストレスは減りますし。
それと、個人的にとても大事だと思うのはアプリが公開されて自分のデバイスにインストールできたときの感動体験かな。これは本当に感動しますよ!
ぼくも自分のアプリがiPhoneにインストールされたときは感動しました!
うーん、ケースバイケースですね。
個人でアプリを開発することがゴールの場合はFlutterを用いて開発するのでも良いです。その後Androidアプリを開発する場合に開発コストが比較的ひくいですし。
ただ、後々エンジニアとしての転職等を視野に入れている場合は現状SwiftやKotlinで開発するのがおすすめです。
なぜかというと、現状のネイティブアプリ開発案件の多くは Swift や Kotlin がメインだからです。初心者が開発にジョインする場合、保守運用・機能開発フェーズの方が入りやすく、そのフェーズの Flutter 案件はまだ少ないです。
Flutter の案件も増えてきていますが、新規開発やプロトタイプ作成の案件が多いです。Flutter は2年前くらいから盛り上がってきた技術なので、案件数はそこまで多くなく、開発者もまだ少ない印象です。
ゼロからリリースまで丸っと求められるような案件が多いので、実務経験が乏しいとたとえFlutterの技術だけがあっても仕事にたどり着けなかったりするんです。
だけど、Flutter を使った案件は確実に増えていくと思うので、エンジニアとして差別化したいなら Flutter に挑戦しても良いと思います!2年程 Flutter で開発していますが今でも楽しいです!
そんな感じです!

おすすめの勉強法
細かい勉強法は人によって合う合わないがあると思います。ぼくがおすすめする勉強法はこちらのような流れです。
1. デザインツールでアプリを作成してみる
a. デザインは他のアプリを真似して、同じようなものにする
b. おすすめは Figma
2. Udemy で動画を見ながらコードを書く練習をする
3. 実際にコードを描きながらアプリを作成
a. 最初にデザイン
b. その後にデータの保存とか、アカウント作成とか機能を入れる
c. 詰まったら、MENTAやCodeBoyで聞く
d. 必要ならオンラインサロン的なやつに入ってみる
4. 最低限の機能でリリースする
独学で挑むか、スクールに通うか
そうですね。つくりたいプロダクトによって勉強しなければならないことも変わってくるので、まずはどんなプロダクトを開発したいか明確にすることが重要だと思います。ゴールが明確になれば必要なものも分かってきますし、独学でやり切れる人もいるとは思います。
人によってこの流れで事足りる人もいれば、もっと総合的にしっかり学んでいきたい、自分のモチベーションを高める場所に所属したいという人もいると思うので、そういった方はスクールを利用するのがいいと思います。
アプリ開発に必要な費用
ちなみにアプリ開発は学習コストこそかかりますがそれ以外の費用はあまりかかりません。
Swiftを使ってiOSアプリを開発する場合はXcodeという開発専用のソフトウェアをインストールする必要があるのでMacが必須です。それ以外だとApp Storeでアプリを公開するためにApple Developer Programへの登録費用$99が発生します。
その他にアプリ公開後はサーバー代が発生します。おすすめはFirebaseなどのクラウドサービスの利用で、通信の回数の上限を越えなければ料金もが発生しないのでユーザーが数百人いても無料で使用できます。使用されていてもよほどのユーザー数でなければ数百円程度です。
Androidアプリ開発も同じような流れで、Google Playでアプリを公開するためにGoogle Play Developer Consoleに加入する際に$25発生します。
学習に使うお金はほんとに人それぞれです。ぼくはジーズに通って同期と一緒にモチベーション高めながらアウトプット中心の学習をしましたが、
独学でいけるぜって方は Udemy でアプリ開発に関する講座を買って動画学習でもいいと思います。それこそ5000円程度で一通り学習できますし、最近の動画教材はかなり丁寧ですからね。
独学はモチベーション維持が非常に難しいので、スクールに通うのでもコストを抑えて独学でチャレンジしてみるのでも、肌に合う方でチャレンジしてみるのが良いです。つくりたいアプリがあるならとにかく一歩踏み出すが重要です!
プログラミング不要のノーコードツールも
日本発のノーコードツールだとYappli等がありますが、かなり便利だと聞いています。
スピード感でいうとノーコードツールの方が圧倒的に早いです。
作りたいアプリが決まっていてノーコードで機能を満たせるのなら、ノーコードツールで作ってしまえばいいと思います。簡単だし、そこまで時間もかかりませんので。
デメリットでいうと、ノーコードツールは簡単に開発ができる分、複雑なアプリを作ることは難しいです。なので本格的なオリジナルアプリはやはりプログラミングを学んで開発しないといけませんね。
ですね。無料のツールも増えていますし、考えるより実際に使ってみるのが良いと思います!
G’s ACADEMYでは毎週学校説明会を開催しています。
未経験の方向けにプログラミングの全体像もお伝えしていますので、第一歩を踏み出したいという方はぜひ学校説明会にお越しください!