HealthKitで'NSHealthShareUsageDescription must be set in the app's Info.plist in order to request read authorization.'

HealthKitを利用したアプリを開発していて、エミュレーターでHealthKitを利用する処理を実行すると、以下のようなエラーが表示れました。

'NSHealthShareUsageDescription must be set in the app's Info.plist in order to request read authorization.'

以下のWebサイトに対応方法が掲載されていました。

stackoverflow.com

Info.plistにNSHealthShareUsageDescriptionを追加することで、正常にHealthKitを利用することができました。

Swift3で文字列の置換

Swift2で文字列の置換をする際にstringByReplacingOccurrencesOfString()を使っていましたが、Swift3になって以下のようなエラーが表示されました。

Value of type 'String' has no member 'stringByReplacingOccurrencesOfString'

調べてみると、メソッドに変更があったようです。

stackoverflow.com

以下のようにreplacingOccurrences()を使ってSwift3で文字列の置換をすることができました。

string.replacingOccurrences(of: " ", with: "+")

ResearchKitでArgument type 'Int' does not conform to expected type 'NSCoding & NSCopying & NSObjectProtocol'

1年ぶりにResearchKitを使ったプログラミングをしているのですが、SwiftもResearchKitもバージョンアップされているので、いろいろと書き方が変わっていました。

1年前はORKTextChoice()で選択肢を作るコードを以下のように指定してました。

ORKTextChoice(text: "male", value: 1)

このコードをビルドすると以下のようなエラーメッセージが表示されました。

Argument type 'Int' does not conform to expected type 'NSCoding & NSCopying & NSObjectProtocol'

以下のWebサイトに対応方法がありました。

techqa.info

データ型を指定して解決することができました。

ORKTextChoice(text: "male", value: 1 as NSNumber)

ASICS GEL-KENUN

2016年はAIR MAX '95の復刻版を履いていたのですが、現代のシューズと比べると重いし通気性も悪いような気がしました。今年はASICSのGEL-KENUNを購入しました。

Google App EngineにLet's EncryptのSSL証明書を設定

Google App EngineにLet's EncryptのSSL証明書を設定しました。基本的には以下のエントリーの通りに実行しましたが、Homebrewでcertbotをインストールして実行する方法にしました。

blog1.erp2py.com

Homebrewでcertbotをインストールして、SSL証明書を作成するコマンドを実行します。

$ brew install certbot
$ sudo certbot -a manual certonly

指定されたURLにアクセスして、指定された文字列が記述されている必要があります。さきほどのエントリーで紹介されていた方法が簡単で、Google App Engineのapp.yamlに以下の指定をします。

- url: /.well-known/acme-challenge/?(.{5}).*
  static_files: applications/myapp/static/letsencrypt/\1.txt
  upload: applications/myapp/static/letsencrypt/(.+)
  mime_type: text/plain

「指定されたURLの最初の5文字.txt」というファイルを作成して、そのファイルに指定された文字列を記述します。URLが正常に稼働した段階で、certbotコマンドの続きをします。正常に実行されると、以下のディレクトリに証明書のファイルが作成されます。

  • /etc/letsencrypt/live/yourdomain/fullchain.pem
  • /etc/letsencrypt/live/yourdomain/privkey.pem

これらのファイルをGoogle App Engineの管理画面から登録します。fullchain.pemはそのまま登録すればよいのですが、privkey.pemは以下のコマンドに通した結果を登録する必要があります。

$ sudo openssl rsa -inform pem -in privkey.pem -outform pem

農園の土壌改良のために培養土を購入

今年になってから農園で本格的に作物を育ててみようと思い、年明けから畑仕事をしていました。何年もビニールシートをかけていた土地だったので、土の状態がよくありませんでした。土壌改良のため、最初は駅前の園芸店で培養土を購入したのですが、Amazonでリーズナブルな値段の培養土を販売していたので、それを購入しました。

SUNBELLEX とっても軽?い花と野菜の培養土 40L×4袋

SUNBELLEX とっても軽?い花と野菜の培養土 40L×4袋

2017年にやってみたのは以下になります。

年明けから春にかけては定期的に農園に行っていたのですが、最近はいろいろと忙しくて行けなくなってしまいました。シシトウやジャガイモは収穫できているようです。シシトウは簡単でたくさん収穫できるという情報の通りで、やってみてよかったです。ブラックベリーは順調に葉を茂らせていて、来年の春には収穫できそうです。

仕事用にキーボードを購入

MacBook Proの新モデルのキーボードは打っていると疲れてしまうように感じるので、仕事用のキーボードを購入しました。

これまではRealforceMacBook Proの旧モデルのキーボードを使っていました。キーボードに詳しい人達が「青軸」「茶軸」と言っていて、そのあたりの情報を調べたり実際に使ってみた結果、赤軸、英語配列Bluetooth対応のキーボードを購入しました。

赤軸の適度な打鍵感がよいです。

青軸は打鍵音が大きいので、職場では使わないほうがよさそうですね。