IT
PR

100 Days of SwiftUI【Day 66〜Day 70】

koji-shirokuma
記事内に商品プロモーションを含む場合があります

こんにちは、白くまコージです!

iOSアプリを開発できるようになるため、Swiftを勉強中です。

100 Days of SwiftUIのDay 66〜Day 70が完了したので、ここに記録を残します。

学習記録

Day 66 – Project 13, part 5

学習時間

40分

学んだこと

  • Core Imageのフィルタを切り替える方法
  • ShareLinkを使って画像を共有する方法
  • App Storeのレビューをリクエストする方法

感想

Project 13の実装パートです。

Core Imageのフィルタを設定するためのkCIFilterxxxKeyは堅牢なSwiftにしては珍しく型安全ではないコードだなと感じました。昔からあるフレームワークだからでしょうか?

App Storeのレビューをリクエストするタイミングは考慮が必要だなと思いました。条件を満たして以降毎回表示するのもよくないので、ここはロジックを工夫する必要がありそうです。

Day 67 – Project 13, part 6

学習時間

50分

学んだこと

チャレンジパートのため、以下の課題に挑戦しました。

  • 画像が選択されていない状態ではスライダーとボタンを非表示となるよう修正
  • スライダーを追加して入力項目を増やす
  • Core Imageのフィルターを3つ追加する

感想

Project 13のチャレンジパートです。

今回の課題は特に難しくなかったので、問題なく実装できました。

Day 68 – Project 14, part 1

学習時間

40分

学んだこと

  • Comparableへの準拠方法
  • Comparableに準拠したstructを使ったsorted()
  • Documents Directoryに対するデータの読み書き
  • enumを使った条件分岐によるViewの切り替え

感想

Project 14の解説パートです。

特に難しい内容はなかったため、すんなりと終了しました。

個人的にはenumを使うとコードがキレイになって好きなため、ようやく登場したかと思いました。(最初のSwiftの解説以来??)

Day 69 – Project 14, part 2

学習時間

40分

学んだこと

  • MapKitを使ったMapの実装方法
  • Touch IDとFace IDによる認証方法

感想

Project 14の解説パートです。

MapKitに関しては新しく覚えることが非常に多い印象でした。一つひとつ覚えるのは大変なので、実際にMapを使いたいときになったら必要なものを習得していくのが良さそう。

Touch IDとFace IDに関しては、意外と簡単に実装できるのでびっくりしました。シミュレータにおけるFace IDを使った認証の再現方法も簡単だったので、使いやすいなと感じました。

ただ、自分でTouch IDやFace IDが必要になるアプリを作ることはあるのだろうか、とも思いました。自分が使っているアプリだと銀行系などの秘匿情報を扱うアプリじゃない限り、アプリ側での認証が求められることはなかったと記憶しているので。とはいえ、覚えておいて損はないと思いました。

Day 70 – Project 14, part 3

学習時間

70分

学んだこと

  • Mapをタップした際の座標を取得する方法
  • Mapをタップした箇所にマーカーを設定する方法
  • Mapのマーカーを任意のViewにする方法
  • デバッグ時のみ実行したいコード
  • Equatableの実装方法
  • Optional型を使ったsheetの表示
  • Viewのinit()にて@Stateプロパティを初期化する方法
  • @escapingが付いたクロージャ

感想

Project 14の実装パートです。

onLongPressGestureのコードは実行してもシミュレータで正常に動作しなかったため、こちらのサイトを参考に修正しました。

@Stateプロパティのinit()での初期化と、@escapingがよくわからなかったので追加で調査をしました。

@Stateプロパティのinit()での初期化については、アンダースコアとState(initialValue: Value)を使用しないとエラーになるということだが、なぜか以下のコードでもエラーにはなりませんでした。

name = location.name
description = location.description

iOSやSwiftUIのバージョンアップで変わった可能性がありますが、明確な情報は得られず、ここは謎のままとなってしまいました。

ちなみに元のコードは以下の通りです。

_name = State(initialValue: location.name)
_description = State(initialValue: location.description)

@escapingはクロージャをスコープ外で呼び出す時に必要だと理解しました。

クロージャを受け取ったスコープの外に定義されている変数などに代入する場合が該当すると思います。

まとめ

100 Days of SwiftUIのDay 66〜Day 70が完了しました。

今回で全体の3分の2が完了しました。まだまだSwiftに慣れたとは言えないと思うので、もっともっと勉強して自分でアプリが作れるようになりたいです。

以上、白くまコージでした!

ABOUT ME
白くまコージ
白くまコージ
独立を目指すITエンジニア
IT企業に勤めるエンジニア。アプリケーション開発が専門。
静岡県出身で関東在住の30代後半。既婚。
健康のために夜更かしは絶対にしない派。

2024年9月よりブログ執筆を開始。独立を目指して日々勉強中。
記事URLをコピーしました