「Myトレ」リリースまでに身に付けた私のスキル

こんにちは。
先月、念願だった自作アプリをAppleStoreに公開できました!

今後このアプリの機能強化やバグ改修をガシガシ進めていく予定ですが、一旦ここで立ち止まり、改めて私がどんな技術を学んでたのか整理したいと思い、本記事を作成しました。

学習した技術の概要

その1 swift

iOSにてアプリ開発するのに必要とする言語です。
ほかにもObjective-Cという言語がありますが、swiftのが後続に登場した言語となっています。

上記のObjective-CもswiftもXcodeというAppleの公式開発ツール上で動作することが可能となります。
このXcodeMac上でしか動作させることができないため、iOS用のアプリ開発をするために必然とMacが必要になります。
windows上でも開発できるクロスコンパイラがあるそうですが、この記事では触れません

スマホのOSシェアという観点でいると、日本でもiOSよりAndroidのシェアが超えているという現状もありますので、
今後はAndroid開発も視野に入れて行こうと思ってます。
日本でのスマホのOSシェア、Androidが57.2%、iOSが42.8%に - iPhone Mania

Macはサイズも見た目もシンプルで好きなんですけどね笑

その2 Firebase

Firebaseはgoogleが提供するクラウドサービスであり、BaaS(Backend as a Service)のサービスを提供しています。
今回「Myトレ」のバックエンドに用意しました。

backend as a serviceという名前の通り、新しくサービスを立ち上げる上で必要なデータベース(以下DB)に対して、FirebaseのAPIを用いることでswiftから簡単にアクセスできます。

Firebase上の設定は「データベースの構造」と「セキュリティルール」の設定が必要になりますが、ここさえできてしまえば自分のアプリからアクセスできるようになります(ブラウザで設定します)。

ちなみに、udemyのとあるswiftの講義を受講してて、このfirebaseが登場してきたので今回はmyトレに使用してみました。

使用した機能

cloud firestore データベースの機能。Myトレのデータも本サービス上に格納されます!
認証 この機能が大変便利です。これがあるおかげで、gmailapple IDで自分のアプリのサービスへのログインが可能となります!

学習した技術の取得内容

  1. swift
  • udemy

 【Swift5対応】自動更新型ニュースアプリと名刺管理アプリを学ぼう!(
https://www.udemy.com/course/swift5_xcode_news/learn/lecture/14862845#overview
)

 開発環境(XCode)の立ち上げから、具体的なコーディングの話まで詰め込んでいて、swiftの初心者の私も一つアプリを作りきることができました。
 
 コードの話になりますが、UITableViewやUILabel, UIButtonなど、アプリを組む上で「絶対使うであろう」部品の使い方を説明してくれて他、前述したFirebaseとの連携するための手順、コーディング方法も紹介してくれています。

 そして、実際にサンプルとして作る画面が実用的(実際にありそうなアプリを作る)であるため、作っていて楽しかったです。

  • その他

ざっくりしてますが、
アプリの今後の拡張性や基本を理解したいと思い、以下の使用をググりながら学習しました。

CocoaPods 外部ライブラリ導入ツール
上記のudemyの講義内でも登場しますが、本ツールを用いることで外部のAPIを簡単に実装できます。FirebaseのAPIももちろんですが、アニメーションを楽に再現できるlottieも重宝しました。
VIPER iOSの開発で用いられるデザインパターン
一つの機能に対して、View, Interactor, Presenter, Routerのクラスに分けることで、クラス毎の役割を明確にすることができます。
また、クラス間へのアクセスはprotocolを介してアクセスするため、テストコードも描けるようになります。
今後のアプリの機能拡張し易くするために導入しました。
  1. Firebase
Cloud Firestore Firebaseのデータベースサービス
本データベースは「NoSQLドキュメント指向データベース」と呼称するそうです。「Myトレ」でユーザ毎のデータを管理するために、コレクション、ドキュメントの概念を抑えました。
余談ですが、データはマップ型(json型のようなものですかね)で扱うので、swift側もjsonを管理するコードをいくつか実装しました。
セキュリティ Cloud Firestoreに対するセキュリティルール実装
上記のudemyの講義ではこのセキュリティルール言語までは紹介してなかったので自力で取得しました。
ここを怠ると予期せぬケースでセキュリティを突破され自分のCloud Firestoreのリソースをめちゃくちゃにされてしまうため、ユーザ毎にアクセスできるリソースや投入できるデータの形式、認証状態等を実装しました。

最後に

2019年11月あたりから「Myトレ」の開発を行なってました。当初は半年くらいでAppleStoreに公開できたらいいなーなんて思ってましたが、なんやかんやで9ヶ月位かかりました。
具体的に何時間要したか計測できてなかったですが、VIPERのデザインパターンを取り入れたことや、FirebaseのAPI実装(Cloud Firestoreにget, create, update, deleteを発行する)、セキュリティルールの検討が大変でした(知らないことが多い状態で、一から実装してかないといけなかったので)。

とはいえ、無事一通りの機能を実装することができたので、今後はこれに対して新しい機能を追加していきたいと思ってます。