駆け出しエンジニアぱかぱかの成長記録

引くほど忘れっぽい新卒2年目駆け出しSEぱかぱかの備忘録です。

【iOS】今さらStoryboard開発を改めて学んでみる

こんにちは!ぱかぱかです!
正月休みはテンポよく投稿できていたのですが、仕事が始まった途端に投稿が途絶えてしまいました…
1月は週末にスノボや旅行など色々な予定が入っており、充実した日々を過ごしておりました。
今週末は久しぶりに何も予定がないので書き進めていきたいと思います。

今回はiOSのStoryboard開発についてです。

Storyboard

せっかくMacを買ったのにiOSの開発をまともにやっていなかった私…
だいぶ前ですが、iOS開発について書いた記事が以下です。

radish-se.hatenablog.com
radish-se.hatenablog.com

この本をベースにサラッと触って終了しています…

この時行っていたのはSwiftUIによる開発でした。
SwiftUIは2019年に登場した開発方法で、今はこちらが主流となっています。

一方でStoryboard開発はSwiftUIが登場する以前の開発方法です。
オブジェクトをドラッグ&ドロップで配置してレイアウトを作っていきます。

今はSwiftUIが主流なのになぜ今さらStoryboardを復習しようとしているかというと、業務のアプリでStoryboardを使っているからですね。
画面についてはあまり新規で作成する機会がなかったので、このタイミングで改めて学び直しておこうと思います。

題材

Udemyを見てもSwiftUIの講座ばかりでなかなかStoryboardを扱っているものが見つからず。
色々漁っているとようやくちょっと古めでStoryboardを使っている以下講座に出会いました。

www.udemy.com

今回はこの講座をベースに学習を進めました。

作ったもの

講座の内容に従って簡単なメモアプリを作成しました。
所要時間はなんだかんだ2~3時間?

UITableViewを使ったメモ一覧。
右上の+で新規メモ追加。

スワイプでメモの削除が可能。

左上のアイコンをタップすると、ActionSheetで色を選択しメモのヘッダーの色が変えられる。
設定情報はUserDefaultに保存し、アプリ再起動後も設定内容が反映される。

学び

・Realmを使ったDB管理なんか楽そう

DBについて、業務のアプリではAndroid/iOSともにSQLiteを使っています。
今回はRealmを使ってメモ情報の登録・削除・更新を行ったのですが、なんかDBを意識せずできてしまった感じがあります。

ざっくりの流れは以下のような感じ。

①Realmモデルを定義する
Objectクラスを継承してプロパティに@objc dynamicキーワードを付ける。

class MemoDataModel: Object {
    @objc dynamic var id: String = UUID().uuidString
    @objc dynamic var text: String = ""
    @objc dynamic var recordDate: Date = Date()
}

②Realmをインポート

import RealmSwift

③Realmオブジェクトを取得

let realm = try! Realm()

CRUD操作
数行で直感的にかける。

・Create

val newMemo = MemoDataModel()

try! realm.write {
    realm.add(newMemo)
}

・Read

let result = realm.objects(MemoDataModel.self)

・Update

try! realm.write {
    newMemo.text = newText
}

・Delete

try! realm.write {
            realm.delete(targetMemo)
        }

なんか楽ちんでいいな〜と思いました。
AndroidのRoomでもあくまでカラム名とかを意識してDBいじってます感があったので、差を感じました。
複雑な処理はどうやるのかわかりませんが…

UI部品使いこなせたら便利そう

今回はUITableViewとアクションシートとタブバーのボタンくらいしかいじっていませんが、単純な処理をする分には思いの外扱いやすかったです。
業務でView周りに苦しめられている姿をよく見るので、複雑なことをやろうとすると大変なのだと思いますが、今回はそれを味わうことなく終わったのでまだiOS嫌いにはならずにすみました。

今後

もう少し踏み込んでiOSの開発もしたいのですが、それをSwiftUIでやるかStoryboardでやるかが問題です。
グルメノートもAndroidが完成しきっていないのでなんともですが、ちょこちょこiOSに移植して行きたい所。
たぶん今後のことを考えてもSwiftUIでやっちゃうんだろうな…という気がしています。
Storyboardはやはり業務で慣れていきたいと思います。
今回受講したUdemyももう1つ課題のアプリが残っているので、そちらはStoryboardを使って完成させたいと思います。

ではまた!