😊

最短で個人アプリ開発者になる方法※これから始めたい方向け・Flutter

2022/05/27に公開

オススメ書籍

これから始める場合、flutter 1.x の時に書かれた本を読むのは辞めておいた方がいいです。
理由は、flutter 2.x 以降、null-safetyという仕様が加わり、書き方がガラッと変わりました。

僕は2.xがリリースされたあたりでFlutterを初めて、情報がアテにならずかなり苦戦しました。

これから始める方向け 【kindle unlimitedなら無料!】

スマホで動くアプリを作ろう!ゼロから始めるFlutter実践入門編 ①: シンプルなアプリを作ってみよう
https://amzn.to/3yxutNM

初心者による初心者のためのFlutter詳解
https://amzn.to/39YcpSK

脱初心者向け(課金の実装など、具体的な実装方法や技術が書いてあります)

現場で使える Flutter開発入門
https://amzn.to/3kUXuLv

筆者について

僕は元々文系出身です。今までロクに勉強したこともなく、誇れる学歴もありません。
2021年の7月ぐらいからアプリの開発を始めました。

理系でもなく、高学歴でもない僕でも現在個人アプリを3つリリースしており、
今新しいアプリを二つ開発中です。(大したアプリではないのでお恥ずかしいです😅)

ちなみにIOSとAndroid両方のアプリを作っております。

アプリ開発の過去と僕がFlutterを選ぶまで

一昔前ならSwiftとKotlin、もっと昔ならObject-CやJavaといった
手間がかかり時間がかかる言語を使ってアプリを作る必要がありました。

そのため、一部の例外はありますが個人アプリ開発者が作れるアプリのレベルは、
どうしても企業で大量のエンジニアが束になって作るものに比べて劣るものになっていた現状があります。

しかし、2019年に爆誕したFlutterという技術によって状況は変わりました。
FlutterはIOS,Android,Webなど、複数のプラットフォームの開発を一気にできるといったものです。

これをクロスプラットフォームフレームワークというのですが、Flutter以前から
React-NativeやXamarinといったものがあり、特に珍しいものではありませんでした。

ややこしくなるのでそれぞれの違いに関しての説明は割愛しますが、

過去のクロスプラットフォームを取り巻く状況は、日本においては
React-NativeとFlutter という二代巨頭の中から好きな方を選ぶといったものでした。

2020年の初頭ぐらいまではReact-Nativeの方が優勢でした。
Reactをやっていた人は学習コストをほとんど掛けず使えたからだと思います。

その頃のFlutterは、僕が思うに以下のようなデメリットがありました。

  1. 遅い
  2. パッケージが少ない
  3. エンジニアが少ない
  4. 企業があまり導入していない
  5. 情報が少ない

そのためFlutterを使うデメリットの方が大きかった時期には、
React-Nativeの方が優勢だったのではないかと思います。

しかし、現在Flutterは上記のデメリットを全て克服し、
現在最も勢いのあるクロスプラットフォームフレームワークになりました。

アプリエンジニアは続々とFlutterを習得し、
企業はFlutterを導入し、
Flutterをメインに扱うYouTubeチャンネルも現れました。

僕が思うにこの動画が日本にFlutterを広く知らしめ、数多くのFlutterエンジニアを誕生させたのではないかと思っています。かくいう僕もこの動画を見てFlutterを始めました。

https://youtu.be/6ihpx9LtAs4

僕はアプリを作り始める前、どの言語で開発していこうか考えていました。
できれば将来性があり、習得が容易で、楽に開発できるものはないか探していました。

その際、SwiftとReact-Nativeどちらで開発しようかと考えていた際、
たまたまこの動画を見つけました。

それまでFlutterというものを全く知らなかったのですが、
調べていくうちに素晴らしい技術だと思い、Flutterを始めるに至りました。

Flutterを始めて、自分のアプリを作る流れ

  1. 環境構築&初ビルド
  2. 基礎的な技術の習得
  3. 作りたいアプリのアイデアを固める
  4. 必要な技術を選定する
  5. 必要な技術の作り方を集める
  6. 実際にコーディングをする

僕はこのような流れで進めました。

1.環境構築

2. 基礎的な技術の習得

YouTubeの動画もいいですが、体系的に学ばれる方が良いかと思います。

写経をして動かしながら、「これはこういうものか!」と気づきを繰り返して覚えた方が
記憶に残りやすいので、僕は本などで写経をしながら学ばれる方が良いと考えております。

スマホで動くアプリを作ろう!ゼロから始めるFlutter実践入門編 ①: シンプルなアプリを作ってみよう
https://amzn.to/3yxutNM

初心者による初心者のためのFlutter詳解
https://amzn.to/39YcpSK

3. 作りたいアプリのアイデアを固める

この部分が一番楽しいです。

基本的に僕は、3.で考えたアイデアを4.で実現できるかどうか考え、
無理なら3.に戻って考えて...を繰り返しています。

5年前に衝撃を受けたニュースを忘れた頃に見たいなと思ったのですが、
ニュースをお気に入りに入れて保存しておくのって意外とないですよね。

こういうのって作れないでしょうか。

4.ではこのアイデアを元に進めていきます。

4. 必要な仕様・技術を選定する

最短でアプリ開発者になるためには、この部分が一番重要です。

IT技術に関しては膨大で且つやり方が変わりやすいので、僕は基礎的な部分だけは
体系的に知っておき、他は後付けて足していくやり方が適していると考えております。

2.で扱ったような技術は、足し算や引き算、掛け算や割り算のような全ての基礎となる部分です。
そこは当然全部知っておくべきですが、

http通信やRiverpodやwebViewなど、人によっては使わない技術は必要であれば
勉強するといった形で行います。

3.で出たアイデアになりますが、例えば自分の好きなニュースをお気に入りに登録できるニュースアプリを作ると仮定します。ここではFaveriteニュースというアプリ名にします。

Favoriteニュースを作るために必要なもの

  • ニュース本体
  • ニュースを入れるウィジェット
  • お気に入り機能
  • 更新ボタン
  • お問い合わせフォーム

大まかにこの5つが必要になったとします。

  • ニュース本体
    〇〇通信が出してるAPIから取得

  • ニュースを入れるウィジェット
    ListView Builderを使う

  • 更新ボタン
    FloatingActionButton

  • お気に入り機能
    ListViewに星のアイコンを表示し、そこをタップしたら
    favoriteリストに格納されるようにする。

favorite_buttonパッケージを使う

  • お問い合わせフォーム
    WebViewを利用して、Googleフォームを開く

5.必要な技術の作り方を集める

上記で選定した仕様を元に、具体的な作り方を集めていきます。
ここでは、更新ボタンの作り方がわかったとします。

  • 更新ボタン
    FloatingActionButtonのonPressedにsetStateを置いて
    updateNewsメソッドを走らせて更新する。
floatingActionButton: FloatingActionButton(
      onPressed: () {
		setState(){
		updateNews();
		}
	},
        child: Icon(Icons.update),
      ),

コードは必須ではありませんが、こんな風に具体的な作り方集めていきます。

6.実際にコーディングをする

5.で集めた具体的な作り方を見ながら、一つずつ実装していきます。

僕の場合は、複数の機能を同時に実装すると脳のワーキングメモリを食うので、
必ず一つずつ作ってます。

メモも多用して、できるだけ「覚えておく」という作業をなくすと効率的だと思います。

ここまで読んでくださった方へ

ここまで読んでくださりありがとうございました。

プログラミングをもっと楽にするにはより知る以外にはないかと思います。
難しいことをやりたい場面では、必ず難しい概念が説明に現れます。

僕の場合、MVVMやシングルトンといったもので詰まりました。
「ここはシングルトンで〜」みたいに、当たり前のように言ってきます。

わからないことをググったら、また一つわからないことが増えた という状況に陥ります。
そうなった場合、手元に以下のような書籍があれば役に立つのではないかと思います。

Riverpod・MVVMについて

Udemyベストセラー講師のFlutterでRiverpod基本集
https://amzn.to/3lPm54M

オブジェクト指向について

スッキリわかるjava入門
https://amzn.to/3MAKYNH

おそらくこの本が日本で一番オブジェクト指向を分かり易く解説しています。
javaに関する本なので、オブジェクト指向の部分だけでいいので読んでみる価値はあるかと思います

Discussion