うちのいぬ Tech Blog

Tech Blog of Uchinoinu/My dog

Apple Watchアプリ(WatchKit App, WatchOS)の実機検証時のトラブルを諸々解消

WatchOS用のアプリケーションを実装している最中のことですが、 当然のように実機検証したくなりました。

実機検証自体は、簡単で 検証したいAppleWatchとPairingしてあるiPhoneをMacにつなぐとXcodeが **「いい感じに認識」** してくれて、Watch Kit AppからRunするだけです。

しかし、いい感じに認識してくれず色々とうまく行かなかった為、コツコツと解消しました。

今回はその備忘録です。

  • Xcode: Version 10.1 (10B61)
  • WatchOS: 5.1.3

問題1

paired device unavailable for development

Apple Watchの実機でアプリの動作検証したかったのですが、👇の様なエラーとなりました。

paired device unavailable for development
paired device unavailable for development

解決方法

以下のことをして解決しました。

  • 開発に使用しているiPhoneと対象のAppleWatchのpairingを切る

    • このとき Suicaの残高が失われます。Apple Payに連携して防ぎましょう 的なアラートが表示され焦りました💦結果、表示される指示の通り行えば問題ありませんでした
  • 再度Pairingを行う

    • 時間がかかります
    • 色々通知が表示されます
  • iPhoneMacを再度つなぎます

    • 「このMacを信頼しますか」といったアラートがAppleWatchにでます
    • 🎉直りました🎉 f:id:susanne:20190321162405p:plain 🎉🎉🎉🎉🎉🎉

問題2

Could not launch....

Watchアプリが立ち上がってくれません。iPhoneを見ても、AppleWatchをみても、動いた形跡もないので、実機転送もできてなさそうでした。 f:id:susanne:20190321162548p:plain

解決方法

普通にエラーダイアログに書いてあるとおりにしましたが、うまくいきませんでした。 なので、 Xcode の再起動 も行いました。 そして直りました。

問題3

The operation couldn’t be completed.

The operation couldn’t be completed. Unable to launch because it has an invalid code signature, inadequate entitlements or its profile has not been explicitly trusted by the user. 👆のエラーがでました👇

f:id:susanne:20190321162939p:plain

解決方法

Apple Watchの画面を見てみると、対象のアプリケーションは転送されているようでした。iPhoneも同様。 Apple Watchでアプリを立ち上げてみると、 信頼していないdeveloper ~~ を信頼してこのApple WatchでAppを実行しますか?のダイアログが表示され、信頼するボタンをタップしました。 🎉すると起動しました🎉

まとめ

久しぶりにブログを書いたのですが、ほんと基本的な内容になりました。 こういった内容の記事はすぐに古くなるのですが、実行した環境や日付と一緒に備忘録として残しておくのはいいかもしれないって改めて思いました。

【進路】国連や国際機関で働く為の道筋

大学に入る前くらいから、いつか国連で働いて国際社会の安定のために後継するんだ、と思っていたことをふと思い出しました。

でも大学在学中に、色々起きて、それどころではなくなって、いつしかこの思いも忘れてしまいました。

最近ふとしたことから国連で働くことについて思い出したので、 どうしたら働けるのか、簡単に調べてみました。

まずはどんなポストがあるのかチェック

UN Careers

なにはともあれここですね。 実際の国連事務局での募集情報になります。

次に日本国籍保有者なら外務省 国際機関人事センター

www.mofa-irc.go.jp

そこにはこんなpdfがあったりして、いろんな情報が掲載されています。

http://www.mofa-irc.go.jp/dl-data/UN_brochure.pdf

twitterとかもありました

twitter.com

www.facebook.com

これらを見てみると、『国際機関』で働くには、思っていたよりもたくさんのポストがあり、可能性が示されているんだなぁと思いました。

わりと大学生にとっては、チャンスは多い印象を受けました。

国連事務局への道筋

国連事務局ヤング・プロフェッショナル・プログラム(YPP)試験への応募

これは、国連事務局若手職員を採用するための試験の様です。 募集対象は毎年異なるとのことです。

ちなみに2018年6月13日現在では募集中の様です。 www.mofa-irc.go.jp

https://hr.un.org/sites/hr.un.org/files/YPP%202018%20Flyer-English%20%28June%202018%29_final_0.pdf

ジュニア・プロフェッショナル・オフィサー(JPO)派遣制度への応募

日本外務省が行っているプログラムです。 将来的に国際機関で勤務する正規の職員を志望する若手の日本人の方を対象に、国際機関の正規職員となるために必要な知識・経験を積んで頂く機会を提供する目的で、派遣に係る経費を負担し、一定期間(原則2年間)各国際機関へ職員として派遣するようです。

空きポストを待つ

UN Careers

国連を含めた国際機関の場合

空きポスト情報が日本外務省で公開されています。 www.mofa-irc.go.jp

ポストが空いたらメールをくれるサービスもあるようです。 www.mofa-irc.go.jp

また、FAOやOECDなど若手向けの採用試験を実施している国際機関があるようです。

http://www.fao.org/employment/vacancies/junior-professional-programme/en/

www.oecd.org

条件について

他の様々な求人情報と同じ様に、色々な条件が設定されています。 ほとんどの募集にはビジネスレベルで英語が使いこなせる条件がついています。

他にも、学位、専門分野、経験などがあります。

また、つらい条件として、年齢と項目があるものもあります。 このへんはどうにかならないのでしょうかね。

最後に

以上、簡単に国連・国際機関で働く道筋を簡単にまとめました。 もちろん他にもルートはあると思います。 国際機関は公共機関であることがほとんどの様です。(当たり前なのかな) なので、日本のお硬い組織へのエントリーに似ているのかなと想像しましたが、実際に経験したことがないので定かではありません。

ちなみに、昔実際にお勤めされている方からお話を聞いたときは、割とシビアな世界でしたが、 ハイレベルな専門職になると、様子も違ってくるようでした。

なにはともあれ、自分に英語とそれ以外の専門性をつけることが求められるようですね。

【本】ケビン・クルーズ, Kevin Kruse 著 - 1440分の使い方 ──成功者たちの時間管理15の秘訣 (まだ途中です)

今日読んだ本です。まだ読み切れていません・・・ 経過時間: 25分

1440分の使い方 ──成功者たちの時間管理15の秘訣

学んだこと

言葉たち

  • 大成功した人は、時間のことは対して木にしておらず、価値や優先順位、継続的な習慣を重視している
  • 1日は1440分、1分の可能性を思い出そう
  • 最も重要なtask(MIT: Most Important Task)
  • 最も認知能力が高まる朝の二時間は、想定外の用事や緊急事態が発生しにくい時間帯でもある

先延ばし癖について

原因

克服法

  • Time Travel
    • 妥協した未来の自分を想像して、彼らと戦う
  • 報酬と代償
    • 達成した場合に得られるいい思いと、行わなかった際に苛まれる嫌な思いを想像する
  • 説明責任を果たす相手を設定する
    • 一人でやるより、誰かと一緒に行うことで、達成への意欲や責任感が増す
  • なりきる
    • なりたい存在になりきる
    • 彼らならこうする・こうしないということに沿わないと違和感を覚える抑制効果
    • 徹底的になりきる

自分に活かせること

  • ToDo Listをやめて、あらゆることを具体的にスケジュール表に入れ、それだけを厳格に守る
    • 時間がかかるtaskとすぐ終わるtaskなどが並列に扱われるので、結局MITにたどり着かない
    • "The Busy Person's Guide to the Done List"出典による研究結果として、「ToDoリストの項目の41%は永遠に終わらない」と出ている
    • 未完了taskを持ち歩くストレス
    • Time Blocking
      • 重要なことはすべてやる時間をきめて、スケジュール表にいれる
      • スケジュール表にないものはやらない
    • 重要なことほど一日のうちできるだけ早い時間帯に割り当てる

紹介

Kindle

1440分の使い方 ──成功者たちの時間管理15の秘訣

書籍

1440分の使い方 ──成功者たちの時間管理15の秘訣 (フェニックスシリーズ)

楽天

読み上げもあるんですね


≪AI朗読≫1440分の使い方──成功者たちの時間管理15の秘訣

メンタリストのDaiGoさんの動画だと

www.youtube.com

www.nicovideo.jp

最後に

最近習慣が崩れていてうまくできないことが多かったので、インプットの時間が特に遅くなってしまった感じがします。習慣にすることを繰り返してやろうと思います。

【本】時価総額の低いタグは無視 - すべての教育は「洗脳」である 21世紀の脱・学校論 (光文社新書)

今日読んだ本です。 読了時間: 10分

すべての教育は「洗脳」である 21世紀の脱・学校論 (光文社新書)

学んだこと

  • そもそも「学び」というものをとても高く評価していて、意見が合うなぁと思った
  • 自分の価値を高める為に、自分の特徴とも言える「タグ」を3つほど掛け合わせて、レアな存在になろうという考え方は同感だけど、勇気がいると思った
  • その他既存の日本の教育についてや、企業というものや、風土、常識、親や教師や地域もろもろ・・・・・ずーーーーーっと思っていたし、その根拠もだいたい昔調べたことと似通っていた
  • 結局自分も「やりたいことがあるのに我慢して我慢してやれずに生きている人」に近いけど、私の見解では私は我慢の結果大切な色々が死んだ人です。
  • 確実な未来予測を求めることは、何もできなくさせるので、意味がない

自分に活かせること

  • 丁度色々変化の時期にいて、これまでは隠した方がいいと言われてきたり、自分でそう思ってしまった(ずっと素敵なことだと思っていたのに、いつしか折れた💧)ことを、改めて自分の価値を高めるものとして、掲げていきたい
    • もうそれを始めているけど、もっと出したい
  • 確実な未来を求めないで、変動する今をちゃんと生きていきたい
    • でもちゃんとプランBを用意して、ちゃんと前にすすめるアプローチを取りたい(最近学んでいる手法)

最後に

インプットの時間は減らせてきているけど、それをまとめて文字にすることがなかなか時間がかかってしまうので、もっともっと速くしたい。

3Dアプリの行動履歴ログを獲得する為に参考にした資料の備忘録

qiita.com

経緯

とあるサービスでユーザーの行動解析を行う際に、ログデータを受け取ってなるべくリアルタイムに加工して出力するシステムが必要になったので、どう構築していくか調査することになりました。 その際にとても有用だと感じた資料を残しておきます。備忘録です。

概要

ログ管理のベストプラクティス

AWS Japanのソリューションアーキテクトの方の資料です。AWSを使う場合にはたくさんの定石を知ることができて役立ちました。

秒間数万のログをいい感じにするアーキテクチャ

  • Cookpadのログへの考え方からシステムの変遷まで書かれていて、ログというものへの全体像を実感するのにとても役立ちました

AWS summit 2016 Tokyo 発表内容】タウンワークにおけるサーバーレスアーキテクチャデザイン

サーバーレスアーキテクチャのパターン別ユースケース

各要素

Kinesis

データの一時受けに便利です。KinesisはStreamsとFirehoseとAnalyticsの3つのサービスにわかれています

Kinesis Streams

Kinesis Streamsの公式ページで、結局ここが一番わかり易いです。 diagram-kinesis-streams-how-it-works.png

Kinesis Firehose

Kinesis Firehoseの公式ページがとてもわかり易いです。 diagram-kinesis-firehose-s3-redshift-elasticsearch_v2.png

Amazon Kinesis StreamsとAmazon Kinesis Firehoseは何が違うのか

Amazon Kinesis StreamとAmazon Kinesis FirehoseのAPIを比較する #reinvent

AWS Kinesis Firehoseを動かして見る

KafkaとAWS Kinesisの比較

AWS以外のサービスとの比較、AWSにとらわれないシステム構成などを学ぶことができました

fluent-plugin-kinesisでKinesis Streamsにログを送信する

実用例としてとても参考になりました。

fluent-plugin-kinesis-firehoseでAmazon Kinesis Firehoseにログを転送する

のfirehose版で、こちらも参考になりました。

結合例

ストリーム型(kinesis stream)のAWS Lambdaの同時起動数とデータの取り方を整理

Kinesis Streams と Lambda との組み合わせ方について勉強になりました

Fluentd&Kinesis&Lambdaによる柔軟で高可用性なログ収集基盤の構築

  • Fluentd -> Kinesis -> Lambda -> [S3, DynamoDB...] などの流れが明快にわかってとても参考になります

API Gateway / Lambda / Kinesis を使ったストリーミングなバッチ実行基盤の実装

考察が乗っていてとてもわかりやすいです

Kinesis Producer Library(KPL)とfluentdとLambdaを連携してKinesisのスループットを上げる

2つ目の記事に関して解説が追加された記事になります。わかりやすい。

Data Storage

Amazon DynamoDB

公式ですので、とりあえず目を通します

API Gateway

とりあえずAPI Gatewayはとっても便利という印象でした。 EC2がいいのか、API Gateway + Lambdaがいいのかとか色々悩みましたが、そもそもいろんな使い方があることが勉強になります。

以下、入門編という感じで資料です。

API ホスト名としてのカスタムドメイン名の設定 - Amazon API Gateway

【新機能】Amazon API GatewayがACM (AWS Certificate Manager)に対応。簡単に独自ドメインAPIがSSL化。 | Developers.IO

API Gateway リソースの CORS を有効にする - Amazon API Gateway

API Gateway API のリクエストパラメータをマッピングする - Amazon API Gateway

Amazon API GatewayからAWS Lambdaにパラメータを渡す方法 - Qiita

EC2からLambdaへの移行

AWS 謹製 aws-serverless-express を使って APIGateway + Lambda + Node + Express で RESTful サービスの雛形を最速で作る - Qiita

expressでEC2に構築済のサービスをLambdaに移行していきたかったので、役立ちました

AWS LambdaからIAM RoleのCredential情報を取得し、RedshiftのCOPY処理に利用する

結局毎回権限周りであれこれチグハグするので、こうした記事は大変助かります

既存プロジェクトをRails5.1にアップデートしたので、webpackerを使って、楽できる感じの JS(ES6)とRailsの開発環境を構築してみた

qiita.com

経緯

環境を以下のようにアップデートしたので、webpackerを導入しました。 - Rails 5.1.3

既存プロジェクトにwebpackerを導入する

  • 基本的に README を見れば問題ないです
    • またのコマンドを打てば、サンプル(大元になるガイド)ファイルも出力してくれるので、乗っかればやりやすいです。
gem 'webpacker', '~> 2.0'
# OR if you prefer to use master
gem 'webpacker', git: 'https://github.com/rails/webpacker.git'

gem 'foreman'
bundle install
./bin/rails webpacker:install

vueを導入

  • elmやreactも導入するコマンドがあります
./bin/rails webpacker:install:vue
const { env, settings } = require('../configuration.js')

const isProduction = env.NODE_ENV === 'production'
const extractCSS = !settings.dev_server.hmr

module.exports = {
  test: /\.vue$/,
  loader: 'vue-loader',
  options: {
    extractCSS: isProduction || extractCSS
  }
}

既存環境との両立

  • 既存の古いJSもたくさんあったので、一気にwebpacker環境に持っていくのは大変そうだったため、共存させつつ、少しずつ移行していくことにしました。
  • webpacker環境のファイル構成を app/frontend 以下に構築します。
  • app/frontend/packs 以下のファイルを、 public/packs 以下に、 Compileした後に 出力します。
default: &default
  source_path: app/frontend
  source_entry_path: packs
  public_output_path: packs

.
.
.
const webpack = require('webpack');
const merge = require('webpack-merge');
const sharedConfig = require('./shared.js');
const { settings, output } = require('./configuration.js');

module.exports = merge(sharedConfig, {
  devtool: 'cheap-eval-source-map',

  output: {
    pathinfo: true
  },
.
.
.


});

viewファイルからのインクルード

= stylesheet_pack_tag 'hoge/style/main' # /public/packs/hoge/style/main.css を読みます
= javascript_pack_tag 'hoge/main' # /public/packs/hoge/main.js を読みます
= javascript_include_tag 'http://d3js.org/d3.v3.min.js' # おなじみのタグも使えます

開発の為の工夫

webpacker環境下のファイルを編集したらブラウザがライブリロードされてほしい

  • rails s と合わせて、 webpackerもwatchしたまま走らせたい
    • formanを使って、両方を一つの npm run script で叩く
web: bundle exec rails s
# watcher: ./bin/webpack-watcher
webpacker: ./bin/webpack-dev-server
{
  "scripts": {
    "dev": "bundle install && bundle exec foreman start -f Procfile.dev",
    "build": "bundle exec rails webpacker:compile",
  },
}

開発の際は

yarn dev を叩いて開発

d3.js初心者が3時間でRails5.1に複数のグラフを実装した際に参考にした記事

作ったグラフを行動軌跡図と棒グラフです。

References

Path

Grouped Bar Chart

PieChart

Donut Chart

v3 -> v4