Swift,Objective-Cプログラミング ~ iOS ~

Objective-C,Swift,Apple Watchなどのプログラミング

【iOS HealthKit入門 #003】HealthKitに保存するデータの作成 ※サンプルあり

HealthKit参考書籍

iOS 8 Swift Programming Cookbook: Solutions & Examples for iOS Apps

データを作成するときに関わるクラス

下記のクラス、またはそのサブクラスがデータ作成に関わります。

  • HKUnitクラス
  • HKQuantityクラス
  • HKObjectTypeクラス
  • HKObjectクラス

HKUnitクラス

データの単位を表します。 例えば、メートルや秒、グラムなど。 温度であれば、摂氏や華氏といった単位があります。

例えば、下記のように初期化します。

// 単位:メートル
let meterUnit = HKUnit.meterUnit()
// 単位:秒
let secondUnit = HKUnit.secondUnit()
// 単位:グラム
let gramUnit = HKUnit.gramUnit()
// 単位:キログラム
let kiloGramUnit = HKUnit.gramUnitWithMetricPrefix(.Kilo)
// 単位:摂氏温度
let degreeCUnit = HKUnit.degreeCelsiusUnit()

HKQuantityクラス

データの量を表します。 xメートル、x秒、xグラムなどのxです。

このHKQuantityクラスは

  • データの量
  • データの単位(HKQuantityクラス)

を指定することで初期化します。

例えば、

  • 10メートル
let tenMeterQuantity = HKQuantity(unit: HKUnit.meterUnit(), doubleValue: 10)
  • 22秒
let secondQuantity = HKQuantity(unit: HKUnit.secondUnit(), doubleValue: 22)
  • 320グラム
let gramQuantity = HKQuantity(unit: HKUnit.gramUnit(), doubleValue: 320)

HKObjectTypeクラス

HKQuantityクラスで1.5メートル、10秒、300グラムなどの
データを作ることができます。

このHKObjectTypeクラスを使って、

  • 歩いた距離なのか
  • 身長なのか
  • 睡眠時間なのか
  • 体重なのか
  • 体温なのか

などのデータの種類を表します。

このデータの種類は数が多いため、3種類に分類されています。

  1. HKCharacteristicType
  2. HKQuantityType
  3. HKCategoryType
HKCharacteristicType

基本的に変更しないデータを扱うのに使用されます。
例えば、性別、血液型、生年月日などのデータの種類。

クラスを初期化するときには

class func characteristicTypeForIdentifier(_ identifier: String) -> HKCharacteristicType?

を使う。

identifierの部分には例えば、

  • HKCharacteristicTypeIdentifierBiologicalSex
  • HKCharacteristicTypeIdentifierBloodType
  • HKCharacteristicTypeIdentifierDateOfBirth

がある。

HKQuantityType

心拍数、体温、血圧、歩数、サイクリングした距離などの
データの種類。

クラスを初期化するときには

class func quantityTypeForIdentifier(_ identifier: String) -> HKQuantityType?

を使う。

identifierの部分には例えば、

  • HKQuantityTypeIdentifierHeartRate
  • HKQuantityTypeIdentifierBodyTemperature
  • HKQuantityTypeIdentifierBloodPressureSystolic

がある。

HKCategoryType

睡眠、座っているか否か、性行為などのデータの種類。

クラスを初期化するときには

class func categoryTypeForIdentifier(_ identifier: String) -> HKCategoryType?

を使う。

identifierの部分には例えば、

  • HKCategoryTypeIdentifierSleepAnalysis
  • HKCategoryTypeIdentifierSleepAnalysis
  • HKCategoryTypeIdentifierSexualActivity

がある。

HKObjectクラス

HKObjectがHealthKitに保存するデータです。
ここまでで紹介したHKUnitクラス、HKQuantityクラス、HKObjectTypeクラスは
HKObjectの構成要素となります。

そして、実際にデータを保存する際にはHKObjectクラスだけでなく、
サブクラスも含めて下記のクラスをよく使うことになります。

  • HKObject
  • HKQuantitySample
  • HKCategorySample

HKQuantitySampleクラスで体温データを作成してみる。
HKQuantitySampleクラスは心拍数、体温、血圧、歩数、
サイクリングした距離などのデータを扱うときに使う。

下記のように作成します。

// 体温37.5度
let bodyTemparatureQuantity = HKQuantity(unit: HKUnit.degreeCelsiusUnit(), doubleValue: 37.5)
let bodyTemparatureType = HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyTemperature)!
let quantitySample = HKQuantitySample(type: bodyTemparatureType, quantity: bodyTemparatureQuantity, startDate: NSDate(), endDate: NSDate())


おわりに

次はデータの保存について調べていく。

参考情報

HealthKit

  • HealthKitについて書いてある書籍は今のところこれしか知らない

iOS 8 Swift Programming Cookbook: Solutions & Examples for iOS Apps

Swift

iOSアプリ開発未経験の人向け
iOSアプリ開発をはじめたとき最初に買った書籍 【アプリ作成未経験の人向け】
Storyboardを使って画面を作成していく。
手順にしたがって操作していくと、ボタンの作成やWebViewの作成などができる。
アプリって、こんな感じで作るんだというのを体験できる。

Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】

Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】


・わかりやすくていい、と聞いた本
立ち読みした感じだと【アプリ作成未経験の人向け】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】


②を終えたくらいの知識の方向け
・アプリ開発独学中に2冊めに購入した書籍
プログラミング知識はなくても、若干理解するのに時間がかかる程度で、
読み進められるわかりやすさがある。

iPhoneアプリ開発塾

iPhoneアプリ開発塾


③中級者、上級者向け

詳解 Swift

詳解 Swift