私が開発したiPhoneアプリについて、経験を元に開発手法等の基礎的な知識から具体的な手順まで、分かりやすく解説していきます。
本記事ではアプリに使用している各種ファイルについて概要を説明します。その中でアプリのエントリーポイント(プログラムを実行する際に、一番最初に実行することになっている箇所)の説明を行います。
各種ファイル説明(ビュー)
NowShareApp.swift
こちらのファイルはアプリのエントリーポイントになります。クラスの定義や初期化、メインUIの構築を行なっています。以下が実際のコードです。
// NowShareApp.swift
import SwiftUI
import FirebaseCore
//@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
return true
}
}
@main
struct NowShareApp: App {
//Core Dataに必要なオブジェクトの作成と管理を行う永続コンテナ(PersistentContainer)のコントローラーを生成
let persistenceController = PersistenceController.shared
@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
init() {
FirebaseApp.configure()
}
var body: some Scene {
WindowGroup {
RootView().environment(\.managedObjectContext, persistenceController.container.viewContext)
}
}
}
AppDelegate
クラス:
- UIResponder:
AppDelegate
クラスがNSObject
を継承させるために記載。主にユーザーインターフェイスイベントに応答するためのクラスであり、タッチやジェスチャなどのイベントを処理するためのメソッドを提供する。 - UIApplicationDelegate: このプロトコルは、アプリケーションのライフサイクルイベントに対する処理を提供する。
application(_:didFinishLaunchingWithOptions:)
:アプリケーションが起動し、初期化が完了した際に呼び出される。(今回はただ単にtrueを返しているだけ)
上記は別で上げる記事の写真アプリから画像を選択する際の処理に使用します。
NowShareApp
構造体:
@main
:Swift 5.3以降で導入されたエントリーポイント属性で、アプリケーションの実行を開始するためのエントリーポイントを示す。App
:このプロトコルは SwiftUI アプリケーションのエントリーポイントとして必要なメソッドやプロパティを定義しいる。persistenceController
:このプロパティは、Core Data ベースの永続性を管理するためのPersistenceController
インスタンスを保持している。@UIApplicationDelegateAdaptor
: 属性を使用して、AppDelegate
クラスをアプリケーションデリゲートとして指定しています。AppDelegate.selfはUIApplicationDelegate
プロトコルに適合したクラスの型を渡すための記載。init()
メソッド:Firebaseの初期化が行われています。
body
プロパティでは、アプリケーションのメインUIを構築しています。
・.environment(\.managedObjectContext, persistenceController.container.viewContext)
RootView
に Core Data のmanagedObjectContext
を提供するための SwiftUI の環境変数を設定しています。
ビュー内でデータベースのやり取り(データを扱えるようにする)をするために記載しています。
RootView.swift
これはログイン済みか否かで処理を分けるために記載しています。主にホーム画面に行くのか、ログイン画面に行くのかです。
LoginView.swift
これはログイン画面、処理のためのファイルです。
ContentView.swift
これは画面下にホーム画面とマイページ画面のタブを表示して切り替え可能にするためのファイルです。
HomeView.swift
ホーム画面のファイルです。スレッドの一覧、スレッド作成のためのボタンが配置してあります。
MypageView.swift
マイページ画面のファイルです。自分の名前や投稿したスレッド、もらっている良いね数を確認できます。
ThreadView.swift
スレッド内で投稿された記事一覧を表示します。また、この画面からスレッドに紐づいた記事を投稿できるようになっています。
ThreadInside.swift
投稿の中身を閲覧するファイルです。記事に対していいねや通報が可能です。
ThreadPost.swift
記事を投稿するためのファイルです。文字や画像を選択して記事を投稿できます。
ThreadPreview.swift
作成途中の記事をプレビューで見ることができる機能です。
ThreadCreate.swift
新しいスレッドの作成依頼を投げるためのファイルです。Slack経由で作成して欲しいスレッドのメッセージが来ます。
Inquiry.swift
通報するためのファイルです。通報内容はSlack経由で来るのでスレッド作成と同じ原理です。
各種ファイル説明(バックエンド)
AppState.swift
デバイスにログインしている名前・ログインの状態を記憶させているファイルです。
ImagePicker.swift
投稿時に写真アプリから画像を選択するための処理を記載したファイルです。
Persistence.swift
Core Dataに必要なオブジェクトの作成と管理を行う永続コンテナを作成するためのファイル。
ThreadItem.swift
CloudKitにデータを格納するための処置を記載したファイル。
ThreadListViewModel.swift
スレッドに対して格納するデータを「ThreadItem.swift」へ投げるためのファイル。
ThreadinListViewModel.swift
投稿に対して格納するデータを「ThreadItem.swift」へ投げるためのファイル。
CoreDataClass.swift.swift
CoreDataに登録されているレコードを定義するファイル。
DB_Model.swift
CoreDataに登録されているレコードの編集・更新を行うためのファイル。
以上がざっくりとしたアプリを構成しているファイルの概要です。次の記事からは1つ1つのファイルについて説明していきます。
アプリ開発は初めての方にとっては難しいと思います。こ私のこの記事や他の開発に関する記事が見てくださる皆様の力になれますと幸いです。
コメント