【情報共有アプリ】各種ファイルの紹介

App

私が開発した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 クラス:

  • UIResponderAppDelegate クラスが NSObject を継承させるために記載。主にユーザーインターフェイスイベントに応答するためのクラスであり、タッチやジェスチャなどのイベントを処理するためのメソッドを提供する。
  • UIApplicationDelegate: このプロトコルは、アプリケーションのライフサイクルイベントに対する処理を提供する。
  • application(_:didFinishLaunchingWithOptions:) :アプリケーションが起動し、初期化が完了した際に呼び出される。(今回はただ単にtrueを返しているだけ)

上記は別で上げる記事の写真アプリから画像を選択する際の処理に使用します。

NowShareApp 構造体:

  • @main:Swift 5.3以降で導入されたエントリーポイント属性で、アプリケーションの実行を開始するためのエントリーポイントを示す。
  • App:このプロトコルは SwiftUI アプリケーションのエントリーポイントとして必要なメソッドやプロパティを定義しいる。
  • persistenceController:このプロパティは、Core Data ベースの永続性を管理するための PersistenceController インスタンスを保持している。
  • @UIApplicationDelegateAdaptor: 属性を使用して、AppDelegate クラスをアプリケーションデリゲートとして指定しています。AppDelegate.selfUIApplicationDelegate プロトコルに適合したクラスの型を渡すための記載。
  • 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つのファイルについて説明していきます。
アプリ開発は初めての方にとっては難しいと思います。こ私のこの記事や他の開発に関する記事が見てくださる皆様の力になれますと幸いです。

アプリ”NowShare”をダウンロード
情報共有アプリ"NowShare"
今からみんなでナレッジ共有! 本当に欲しい情報をキャッチ&リリース 教えてあげたい情報を知りたい人にすぐに共有。 ためになった情報にはいいねを押して盛り上げよう!
Appエンジニア
ナスジニアをフォローする
🍆ナスジニアのブログ(iPhoneアプリ開発)

コメント

タイトルとURLをコピーしました