[swift] Swift와 Firebase를 이용한 도서 추천 앱 개발하기

소개

이번 프로젝트에서는 Swift와 Firebase를 사용하여 도서 추천 앱을 개발해보겠습니다. Firebase는 Google에서 제공하는 실시간 데이터베이스 및 인증, 스토리지 등 다양한 클라우드 서비스를 제공하는 플랫폼입니다. 도서 추천 앱은 사용자가 도서를 검색하고 평가하며, 이를 기반으로 사용자에게 추천 도서를 제공하는 기능을 가지고 있습니다.

개발 환경 설정

  1. 프로젝트 생성: Xcode를 열고 새로운 iOS 프로젝트를 생성합니다.
  2. Firebase 설정: Firebase 콘솔에서 프로젝트를 생성합니다. 프로젝트의 GoogleService-Info.plist 파일을 다운로드하고 Xcode 프로젝트에 추가합니다.

Firebase 인증 설정

Firebase 인증을 사용하여 사용자의 로그인 및 회원가입을 구현하겠습니다.

  1. Firebase SDK 추가: Firebase 콘솔에서 iOS 앱을 추가하고, bundle identifier를 입력합니다. GoogleService-Info.plist 파일을 다운로드하고 Xcode 프로젝트에 추가합니다.
  2. FirebaseAuth 라이브러리 추가: Podfile을 열고 pod 'Firebase/Auth'를 추가한 뒤, 터미널에서 pod install 명령어를 실행합니다.
  3. 인증 UI 생성: 로그인 및 회원가입 화면을 구현하기 위해 FirebaseAuth 인스턴스를 생성하고, 필요한 뷰 컨트롤러에서 인증 UI를 띄워줍니다.

코드 예제

import Firebase
import FirebaseAuth

class AuthViewController: UIViewController {

    var handle: AuthStateDidChangeListenerHandle?

    override func viewDidLoad() {
        super.viewDidLoad()

        handle = Auth.auth().addStateDidChangeListener { (auth, user) in
            // 인증 상태 변경 시 호출될 메서드
            // 사용자 로그인 여부에 따라 화면을 업데이트하거나 다음 화면으로 이동할 수 있습니다.
        }
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        // 인증 UI 띄워주기
        Auth.auth().presentLoginViewController(in: self)
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        // 인증 상태 변경 리스너 제거
        Auth.auth().removeStateDidChangeListener(handle!)
    }

}

도서 검색 기능 구현

Firebase의 실시간 데이터베이스를 사용하여 도서 검색 기능을 구현하겠습니다.

  1. Firebase 실시간 데이터베이스 추가: Firebase 콘솔에서 실시간 데이터베이스를 추가합니다.
  2. 도서 데이터 추가: Firebase 콘솔에서 도서 데이터를 직접 입력하거나 CSV 파일을 업로드하여 도서 정보를 추가합니다.
  3. 데이터 조회: Firebase 데이터베이스에 접속하여 도서 정보를 조회하는 기능을 구현합니다.

코드 예제

import Firebase
import FirebaseDatabase

class BookSearchViewController: UIViewController {

    var ref: DatabaseReference?

    override func viewDidLoad() {
        super.viewDidLoad()

        ref = Database.database().reference()
    }

    func searchBooks(keyword: String) {
        // 도서 검색 결과를 Firebase 데이터베이스에서 조회
        ref?.child("books").queryOrdered(byChild: "title")
                          .queryStarting(atValue: keyword)
                          .observeSingleEvent(of: .value, with: { (snapshot) in
            // 도서 검색 결과 처리
            // snapshot에서 도서 정보를 가져와 화면에 표시합니다.
        }) { (error) in
            print(error.localizedDescription)
        }
    }

}

도서 평가 및 추천 기능 구현

Firebase의 실시간 데이터베이스를 사용하여 도서 평가 및 추천 기능을 구현하겠습니다.

  1. 사용자 평가 데이터 추가: 사용자가 도서를 평가하면 Firebase 데이터베이스에 해당 정보를 추가합니다.
  2. 사용자 선호도 기반 추천: 사용자의 도서 평가 데이터를 기반으로 선호도를 계산하여 추천 도서를 제공합니다.

코드 예제

class BookRatingViewController: UIViewController {

    var ref: DatabaseReference?

    override func viewDidLoad() {
        super.viewDidLoad()

        ref = Database.database().reference()
    }

    func rateBook(bookId: String, rating: Int) {
        // 사용자 평가 정보를 Firebase 데이터베이스에 추가
        ref?.child("ratings").childByAutoId().setValue(["bookId": bookId, "rating": rating])
    }

    func recommendBooks() {
        // 사용자 선호도를 기반으로 추천 도서를 Firebase 데이터베이스에서 조회
        ref?.child("books").queryOrdered(byChild: "rating")
                          .observeSingleEvent(of: .value, with: { (snapshot) in
            // 추천 도서 결과 처리
            // snapshot에서 추천 도서 정보를 가져와 화면에 표시합니다.
        }) { (error) in
            print(error.localizedDescription)
        }
    }

}

결론

이렇게 Swift와 Firebase를 이용하여 도서 추천 앱을 개발하는 방법에 대해 알아보았습니다. Firebase의 다양한 기능을 활용하여 실시간 데이터베이스, 인증, 스토리지 등을 간편하게 구현할 수 있습니다. 도서 추천 앱 외에도 다양한 애플리케이션에 Firebase를 적용할 수 있으며, 개발자들의 창의력에 따라 다양한 기능을 구현할 수 있습니다.