SwiftUI×HealthKitでiOSデータ入門(前編)


-準備 & 環境構築編-

Yahoo!Japan主催のハッカソン HackDay2019 出場のため,きゅうきょSwiftで iOS の HealthKit を触ることになったのでキャッチアップの内容を自分用にまとめていきます.ちなみにこの記事を書いている 2019/12/15 01:10 現在,リアルタイムで絶賛ハッカソン中です.自分が担当しているデータ周りだけをまとめていますが,焦っているため間違いなどあったらすみません

Xcode も Swift も HealthKit もはじめて触りますが,がんばって iPhone からデータを取得し,表示,データベースへ格納するところまで挑戦します.Swift のキャッチアップを兼ねているということもあり,少し長くなります.

  1. SwiftUI×HealthKitでiOSデータ入門(前編) -準備&環境構築編-
  2. SwiftUI×HealthKitでiOSデータ入門(中編) -HealthKitアクセス許可編-
  3. SwiftUI×HealthKitでiOSデータ入門(後編) -HelathKitデータ取得&Firebase編-

から構成されます.

開発環境

  • macOS Catalina (10.15.1)
  • ios (13.2.3)
  • Xcode (11.2.1)
  • Swift (5.1.2)
  • Realm (4.1.1)
  • RealmSwift (4.1.1)

環境構築

わかりやすい記事はたくさんあるので基本はググってもらうとして,ここでは自分がやったことをベースにまとめていきます.

Step1. ios と Xcode

-> Xcodeは最新の状態にし,Swift は Xcode のバージョンに紐づいているため別で必要なアップデートなどはなし.

Xcode でプロジェクトを作成しておいてください.ここではアプリ設定は SingleViewApp にしてUI設定は SwiftUI にしています.

※ Xcode (Swift)の Hello World に関しては SwiftUI Tutorials で行いました.
SwiftUI を触るのは初めてなのでキャッチアップとして SwiftUI Essentials を1通りやりました.ただしこのチュートリアルで作成するプロジェクトの完成形は,本記事のコンセプトから外れるので,ここでは チュートリアルの Section3 まで終えた状態 でスタートします.

チュートリアルにしたがって ContentView.swift をいじった状態です.

ContentView.swift
//
//  ContentView.swift
//  Project Name
//
//  Created by My Name on 2019/12/06.
//  Copyright © 2019 Team Name. All rights reserved.
//

import SwiftUI

// Main Process
struct ContentView: View {

    // 垂直方向のプレビュー設定
    var body: some View {
        VStack (alignment: .leading) {
            Text("Hello, World!")  // 1つめのテキスト (VStack内のテキストは縦に並ぶ)
                .font(.largeTitle)  // フォントを変更
                .foregroundColor(.green)  //カラーを変更

            // 水平方向のプレビュー設定
            HStack {
                Text("First App")  // 2つめのテキスト
                    .font(.subheadline)
                Text("-First Project-")  // Hstack内のテキストは横に並ぶ
                .font(.subheadline)
            }
        }
    .padding()  // 余白を取る
    }
}

// Mainのstructのインスタンスを生成し,画面に表示
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

Canvas はこんな感じになっているはずです.

この状態から進めていきます.

Step2. ios/mac のライブラリ管理ツール cocoapods をインストール

-> Realm をインストールするために必要.こちらの記事を参考にしました.

※ 当初は Realm を使う予定でしたが最終的に Realm ではなく Firebase を使っています.ただ,せっかくインストールまとめてあるので消さずに残すことにします

sudo gem install cocoapods

Step3. Xcodeでプロジェクトを作成

これは初めに作成したものをそのまま使います.

Step4. Realm (レルム) のインストール

-> Realm はモバイル向けデータベースとして人気だそうです.まだ未定ですが,Realm を使うことを想定して進めます.解説はこちら.インストールはこちらのQiitaを参考にしました.

Step3で作成したプロジェクトのディレクトリで

pod init

を実行して Podfile を作成する.Realm公式のInstallationに CocoaPods でのインストール手順があるのでこれを参考にPodfile に必要な記述を追加.

pod install

で必要なライブラリをインストール完了.

RealmSwiftの動作確認

上で入れたRealmの動作確認をします.Xcode でプロジェクトを立ち上げて contentView にコードを書いていきます.さっそく

import "RealmSwift"

すると・・・

No such module "RealmSwift"

のエラーが.こちらの記事を参考にすると Realm を利用する場合 Xcode のプロジェクトを

プロジェクト名.xcodeproj

ではなく,

プロジェクト名.xcworkspace

から開く必要があるとのこと.立ち上がりに時間がかかり,しばらくするとエラーなく起動.ためしにビルドしてみると・・・

今度は

Could not build Objective-C module 'RealmSwift'

どうやら上のメニューから Product -> Scheme -> New Scheme を選択し,「RealmSwift」を選択しないといけないようです.

これで Run するとようやく

Build Succeeded



ここまでで環境設定周りは完了です.次回からは本格的に HealthKit からデータを取ってきて Realm に格納したいと思います.

というわけで SwiftUI×HealthKitでiOSデータ入門 (中編) に続きます!