Road to WWDC2015 「Keynote」
Keynote
WWDCといえばこれ。
今年も祭りに参加しますよ!
今から寝ます。4時間後起きて並びます。今年も3時予定。
#WWDCの道
— ひとのみち (@hitonomichi) 2015, 6月 8
Keynoteを前の方で見るには、
早朝、というか前の夜から並び、
朝7:00くらいに立たされてまた待たされ、
開場と同時に抜かされないようエスカレーターに乗り、
次のエスカレーターに続く廊下をモスコーン1周を早歩き(走らない!)、
2階の朝食ゾーンでつめつめでまた待たされ、
Presidioという広い部屋の開場と同時に抜かされないようエスカレーターに乗り、
3階のPresidioを空いている列から前を狙う。
なかなか大変で疲れます。
並ぶ
今年は3時前に到着。
すでに@nakiwoさん@itok_twitさんが到着されていたので、
おにぎりせんべいで買収して合流。
程なくして@usamik26さん@griffin_stewieさん@kim_g4nさんも到着。
この辺。
去年より早いのに去年より5m後ろ。
#WWDCの道
— ひとのみち (@hitonomichi) 2015, 6月 8
さっそく@griffin_stewieさんが仕事モードに。
さすが仕事のできる男。
他愛のない話をしながら待ちます。
今回の第一配給。スクラッチ。全ての紙が同じ並び。当たるとそこのパーティーに参加できるという・・。いらんし。
いつもならコーヒー来るのにその後何も来ず。。
特に何も起こらず時刻は5:00。
少し明るくなってきた
#WWDCの道 pic.twitter.com/BxJDO2QiU6
— ひとのみち (@hitonomichi) 2015, 6月 8
ツイキャスみたいなのをする大御所。
誰か見てたのかなー。
車が店舗になってるタイプのドーナツ屋さんが参列者の前に。
なんと無料でコーヒーとドーナツ!寒い体に嬉しい応援。
今年はこれだけ。
でも美味しかったっす。
ありがとう。
#WWDCの道 pic.twitter.com/3AuffOM8cW
— ひとのみち (@hitonomichi) 2015, 6月 8
一番前はわいわいなってます。
CNNなどTVも来てます。
散歩から戻るとみんな立ってる・・。
いつの間にか動いてる!
ここからまた少し待機。
#WWDCの道 pic.twitter.com/X8W6NQY6Ox
— ひとのみち (@hitonomichi) 2015, 6月 8
入った!
#WWDCの道
— ひとのみち (@hitonomichi) 2015, 6月 8
横から入られないように詰めて前へ進みます。
2階
走らない走らない。
走ったら怒られます。
今年もドーナツトラップが。
ここで止まると一気に抜かされます。後でいくらでも取れます。
鉄則のスルー!
と思ってたら。あら@itok_twitさん、ジュース取っちゃうんだ、遅れますよ〜どうせ普通のジュースなんだから、、、?!
ん?
え?え?!
odwara!!!!
オダワラ!オダワラ!
復活のオダワラ!
#WWDCの道 pic.twitter.com/XIiSBAj6N5
— ひとのみち (@hitonomichi) 2015, 6月 8
衝撃のodwara復活!!
おっさん達がオレンジジュースに大盛り上がりw
一番にジュース取ってオダワラやった時の@itok_twit さんの顔を忘れることができない。
— ひとのみち (@hitonomichi) 2015, 6月 8
ここからまた待機。
2時間くらい休憩。
つめつめ〜
食料。
関西組。
通路右端をきっちり確保。
たまにはDeveloperっぽい会話も始まり。
ボタン同時押し談義なう。
#WWDCの道
— ひとのみち (@hitonomichi) 2015, 6月 8
非同期処理を同期的にやる方法講座なう。
#WWDCの道
— ひとのみち (@hitonomichi) 2015, 6月 8
動いた。
#WWDCの道
— ひとのみち (@hitonomichi) 2015, 6月 8
ダブルすみひろ。
見ろ。開発者がゴミのようだ。
会場のPresidio
PresidioにIN!
一番右端の列。
前から4列目。
#WWDCの道
— ひとのみち (@hitonomichi) 2015, 6月 8
うーん席が良くない。
カメラは私の上に。こんなに直ぐ近くにあるのに。。
Keynoteスタート
今年もグモーニン!を生で聞くことができました。
私なりの今年の目玉は2つ。
- watchOS 2
- iPadのMultitasking
去年ほどのインパクトはなかったね。
相変わらずジョークには反応できず。
でも新機能と会場の熱気に背中を押されてまた頑張れる気がしますよ!
ありがとうございました!
関連記事はこちら。
WWDC2015 カテゴリーの記事一覧 - ROADTO みちログ
今年は映りせんでした。
残念でした。
#WWDCの道 pic.twitter.com/O7P7Nrzo1F
— ひとのみち (@hitonomichi) 2015, 6月 8
Road to WWDC2015 「前夜祭」
WWDC前夜祭
@taketo1024 さんらの呼びかけで日本人Developerが集う前夜祭が開かれました。
去年は行けなくて残念だったので今年はすぐに参加表明しました。
出発
ホテルロビー集合で出発。
会場は中華料理のFang。
着いた着いたと思ったら@k_katsumiさんが。
ひさしぶり〜ってやろうと思ったら、まってましたとばかりにレイバンいじりを受けました。
その勢いたるやw
おかげでだいぶ和みました。
前夜祭始まり。
そら案内の方の前。
#WWDCの道 pic.twitter.com/lwQpPkZ1Sp
— ひとのみち (@hitonomichi) June 8, 2015
おのおの乾杯スタイルでスタート!
deploygateの安田さんにTシャツもらいました。
普段でも着れるクオリティー!
deploygate.com
自己紹介とかどんな仕事してるとか
こんなことしようと思ってこれを頑張ってるとか
同じ業界で頑張ってる人たちと話せてまたエネルギーもらいました。
楽しかった!
@shu223 さんにアドバイスももらったので緊張して写真撮りました。
会期中になかなか交流しにくいので前もって顔見知りになっておくと
より楽しく円滑に過ごせますね。
幹事の方々、ありがとうございました。
関連記事はこちら。
WWDC2015 カテゴリーの記事一覧 - ROADTO みちログ
Road to WWDC2015 「レジストレーション」
レジストレーション
ホテルから早速レジストレーションへ。
いわゆる受付で、WWDC初日のKeynoteを生で見るためには
前日までに済ましおく必要があります。
また、長旅で疲れた体にテンションを注入してくれる儀式です!
一年前歩いた道をすすむと見えてきましたあの看板!
来た来たー!
この辺りまで来ると背中に番号を背負った人たちがたくさん歩いています。
レジスト済ませた人はその年の背番号入りジャケットがもらえます。
Moscone Westへ
会場のモスコーンに入ると壁にどかーんとその年のアイコンが書いてあります。
レジストにWWDCチケットのPassbookとパスポートを出せば完了。
私はAppleWatchのPassbookでピッ。
ジャケットをもらって完了!簡単!親切!
はい以上。
ジャケットですが私の前の人が太っちょさんでL頼まはって
明らかに入らんやろって思ってたら結局その人は一番お大きいやつにしてて
自分で自分のサイズわかってないんかよーwって思ってて、
次自分の番になって最初Mをお願いして試着してみたら少し大きくて、
Sに変えてくださいって言ってる自分に気付いて
はははー俺も自分のサイズわかってないなーwって思ったんですよって
これ誰が興味あんねん!
レジストレーション完了
あと、前あったおもちゃ屋は潰れたけど他にもあるよ。
@hitonomichi サンフランシスコショッピングセンターの上に小さなおもちゃ屋あり。
メトレオンの二階のショッピングセンターに適当なおもちゃ屋売り場あり
— Yuichi Fujishige (@nakiwo) June 8, 2015
関連記事はこちら。
WWDC2015 カテゴリーの記事一覧 - ROADTO みちログ
Road to WWDC2015 「サンフランシスコに行くよ」
出発
いよいよこの日かやってきました。
WWDCに出発します。
ホテルまでの道のりです。
関空へ
まずは関空へ。
家を出発。
#WWDCの道
— ひとのみち (@hitonomichi) June 7, 2015
戦地に向かう男の背中は強さと頼もしさが満ち溢れていますね。
いきなり飛行機の出発が3時間遅れという仕打ち。
おかげで予定してたApple本社への巡礼があっけなく水の泡。
え?飛行機3時間5分遅れ?
マジ?
#WWDCの道
— ひとのみち (@hitonomichi) June 7, 2015
もろもろの出国準備を淡々と。
モバイルWi-Fiレンタルdone.
受け取っただけ。
#WWDCの道
— ひとのみち (@hitonomichi) June 7, 2015
チェックインdone.
身軽に。
#WWDCの道
— ひとのみち (@hitonomichi) June 7, 2015
Exchange done.
$1=¥126.37
やっす。
#WWDCの道
— ひとのみち (@hitonomichi) June 7, 2015
出国
関西組の皆さんとも合流。
搭乗はAppleWatchで。
AppleWatchのPassbookで飛行機の搭乗口行ったら初めて見たーって言われた。
んでバーコード読み取り機の作りが腕入らなくて結局外してピッてした。
ちゃんと通れたんだけど僕も係りのお姉さん達も不安そうでしたw
#WWDCの道 pic.twitter.com/kd39Odz1FL
— ひとのみち (@hitonomichi) June 7, 2015
今回はサンフランシスコへの直行便。
United航空。
ご飯は普通。
ホテルへ
10時間くらいのフライトでサンフランシスコへ。
サンフランシスコ到着。快晴。来たよ。これから苦しみの1week。お覚悟は、よろしくて?#WWDCの道 (at @flysfo in San Francisco, CA) https://t.co/kyTsQfmKeO pic.twitter.com/S7kQ4jSQ2d
— ひとのみち (@hitonomichi) June 7, 2015
イミグレに1時間20分。
何にも聞いてくれへんかった。
何にも。目的とか。練習してたのに。
何にも。
#WWDCの道
— ひとのみち (@hitonomichi) June 7, 2015
空港からはBARTで移動。
切符を買わずにClipper Cardを買ってみました。
この道と書いているカードがそれです。
ICOCAみたいなチャージするタイプのやつ。
$25チャージ、発行手数料$3でした。
うそです。道と書いているカードはClipper Cardではありません。
ほどなくして最寄り駅Powell stに到着。
@nakiwoさんを探せ。
同室の方と合流してホテルにチェックイン。
到着。
荷物を置いてほっと一息。
これこれ。この雑踏感。
来たなー。
今年もよろしくお願いします。
記念に。
15:14にWakeUp!
6/7(日) San Franciscoの天気
快晴
これからの最高19.4 ℃/最低13.4 ℃
#AlarmWeather http://t.co/kKZxc60yjh
— ひとのみち (@hitonomichi) June 7, 2015
関連記事はこちら。
WWDC2015 カテゴリーの記事一覧 - ROADTO みちログ
Road to WWDC2015「準備するよ」
準備するよ
WWDCの季節がやってきました。
去年に引き続き、今年も参加してきます。
まさ連続で行くことになろうとは。
数年前の自分に言っても信じないでしょう。
ということで、もうすぐ出発なので準備します。
去年の自分の記事も参考にして。
hitonomichi.hatenablog.com
hitonomichi.hatenablog.com
予約・申請系
オールOK。
ホテルはユースホステルの二人部屋。
ありがたいことに誘って頂いて部屋代も割り勘。
リーズナボー!
デジタル系
- Macbook Airとケーブル
- iPhone 6plusとケーブル
- AppleWatchとケーブル
- モバイルバッテリーとケーブル
- イヤフォンとケーブル
- 4穴USB充電ケーブル
- モバイルWiFi(関空でレンタル)
ケーブルの多さよ。関西電力かよ。
MBAの充電だけが心配。
発電機もっていったろか。
関西電力かよ。
着替えと小物
- 半袖Tシャツ+長袖シャツの組み合わせを数セット
- 下着と靴下(適当)
洗濯できるっぽい。
やったことないけどチャレンジしてみよ。 - パンツ数本
- 春物ジャケット
ジャケットはKeynote並ぶ用と夜出歩く用。
夜はぐっと冷えるし、たぶんWWDCジャケットもらえるけど
それで歩くと狙われるから。 - WWDCパスケース パス落とすと、もう入れないグッバイモスコーン!なので落としにくい首さげパスケースを持参。
- 道プレート
- ノートとペン
- 名刺
- 歯磨きセット
- 整髪料
- 薬
- 英語話す気概
持っていかないもの
- コンデジ
去年持って行ったけどほとんどiPhoneで写真とってたので今年はなし。 - イス
並ぶときあるといいらしいけどウロウロする派なのでなし。 - 洗濯グッズ
潜在とかホテルにありそう。 - 変圧器
なくて大丈夫。 - さぼりたい自分の中の弱い気持ち。
こんなもんかな。 去年より軽くしていきたいところです。
あとメガネ必須。
— ひとのみち (@hitonomichi) June 5, 2015
関連記事はこちら。
WWDC2015 カテゴリーの記事一覧 - ROADTO みちログ
GeoFenceとCoreMotionを組み合わせたバックグラウンド常駐監視の一案
仕事へのパッションが抑えられません。
ジオフェンシングとモーションセンサーを使って
バックグラウンドやロック状態でも何かをしたいときの一案。
ジオフェンシングって知ってますか?
ではEnjoy ジオフェンシングとモーションセンサー!
やりたいこと
ある領域内にいるうちは定期的に何かしたい。
何かのトリガーでバックグラウンドでアプリを起動させても動くのって10秒ほど。
がんばって延長させても最長10分弱。
そうじゃなくて定期的に何かしたい。
やることの要約
- 指定領域内に入ったらモーションセンサー開始
- モーションセンサーで歩くたびに何かする
- 指定領域内は継続
- バックグラウンドでもロック時も動作開始、継続
- 指定領域から出たらモーションセンサー停止
前提
- Xcode6.3.1
- 検証機はiPhone6plus iOS8.3。
- AppStoreに申請したことはない。
- SwiftじゃないよObjective-Cです。
「・・・」のところは本筋から外れるので間引いています。
気になる方はサンプルコードからどうぞ。
サンプルコード
実装のまえに
プロテイ、、プロジェクトの設定をします。
位置情報「常に使用」を有効にします。
* Info.plistにNSLocationAlwaysUsageDescription
を追加
バックグラウンドで動かす設定をします。
* TARGETS
- Capabilities
- Background Modes
をON
* Location updates
にチェックをつける
やっと実装
まずはインポート。
余談ですがframeworkに追加しなくてよくなったのね。
framework追加なしでエラーになりません。
#import <CoreLocation/CoreLocation.h> #import <CoreMotion/CoreMotion.h>
CLLocationManager初期化と監視領域の指定。
CLLocationCoordinate2DMake
で指定した緯度軽度を中心に、
CLLocationDistance
で指定した領域を監視します。
//CLLocationManager初期化 self.locationManager = [[CLLocationManager alloc] init]; ・・・ self.locationManager.delegate = self; //Region初期化 CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(37.324540, -122.041241);//アメリカ(クパチーノ) CLLocationDistance radiusOnMeter = 100.0;//範囲指定 self.geoRegion = [[CLCircularRegion alloc] initWithCenter:coordinate radius:radiusOnMeter identifier:@"jp.roadto.ROADTO-Geo"]; //位置情報の許可状況に合わせて動作開始 if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { // iOS8 switch ([CLLocationManager authorizationStatus]) { case kCLAuthorizationStatusNotDetermined: NSLog(@"位置情報の許可が未設定なのでユーザに確認する"); [self.locationManager requestAlwaysAuthorization]; break; case kCLAuthorizationStatusAuthorizedAlways: NSLog(@"「常に許可」されている"); break; ・・・ } } else { // iOS7以下 [self.locationManager startUpdatingLocation]; }
続きましてCLLocationManagerDelegateメソッドたち
requestStateForRegion
で監視が始まったときとか
requestAlwaysAuthorization
の位置情報使用確認後とかに通知されます。
領域内に入ったときにモーションセンサーをONにし、
領域外になったときにモーションセンサーをOFFにします。
説明はコメントにて。
#pragma mark - CLLocationManagerDelegate // CLLocationManager初期化時または // アプリの位置情報の許可状態ステータスが変更されたときに通知される -(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { switch (status) { case kCLAuthorizationStatusNotDetermined: break; case kCLAuthorizationStatusAuthorizedAlways: NSLog(@"「常に許可」"); // 領域監視スタート [self.locationManager startMonitoringForRegion:self.geoRegion]; break; ・・・ } } //領域監視がスタートしたときに通知 - (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region { //現在の領域状態を確認。 //「- locationManager:didDetermineState:forRegion:」が呼ばれます。 [self.locationManager requestStateForRegion:region]; } //領域内に入ったときに通知 - (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region { NSLog(@"領域内になったよ"); //モーションセンサー 開始 内容は次の章で説明。 [self startMotionActivity]; } //領域の状態について通知。状態が変わるたびに呼び出される。 - (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region { switch (state) { case CLRegionStateInside: NSLog(@"領域内"); //モーションセンサー 開始 内容は次の章で説明。 [self startMotionActivity]; break; ・・・ } } //領域から出たことを通知 - (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region { NSLog(@"領域外になったよ"); //モーションセンサー 停止 [self stopMotionActivity]; }
あとはモーションセンサー
CMMotionActivityManager
を使ってモーションを取ります。
今回は歩いているか否かを使っていますが、他にもいろんな状態をとれます。
「//do something」でしたい何かの処理を書きます。
#pragma mark - モーションセンサー //モーションセンサー 初期化 - (CMMotionActivityManager *)getActivityManager { if (!self.motionActivityManager) { self.motionActivityManager = [[CMMotionActivityManager alloc] init]; } return self.motionActivityManager; } //モーションセンサー 開始 - (void)startMotionActivity { NSLog(@"モーションセンサー 開始"); //iOS7,8ともに必要 [self.locationManager startUpdatingLocation]; //←キモ。iOS7,8ともに必要です。 if([CMMotionActivityManager isActivityAvailable]){ NSOperationQueue *queue = [NSOperationQueue mainQueue]; CMMotionActivityManager *motionActivityManager = [self getActivityManager]; [motionActivityManager startActivityUpdatesToQueue:queue withHandler:^(CMMotionActivity *motionActivity){ //do something NSString *log = [NSString stringWithFormat:@"motion %@", motionActivity.walking ? @"そうだね。プロテインだね。" : @"んーんーんー。"]; NSLog(log); ・・・ }]; } } //モーションセンサー 停止 - (void)stopMotionActivity { NSLog(@"モーションセンサー 停止"); CMMotionActivityManager *motionActivityManagerUpdate = [self getActivityManager]; [motionActivityManagerUpdate stopActivityUpdates]; }
テストに出ます
「←キモ」のところ。
startMotionActivity内で「-locationManager startUpdatingLocation」を呼んでいます。
これ自体は位置情報の更新監視をスタートさせるものですが
なぜかこれを書くとモーションセンサーもバックグラウンドで動いてくれます。
バックグラウンドでもロック状態でも起動するし、
フォアグラウンドで起動して、バックグラウンドやロック状態になっても動き続けます。
尚、「M7」モーションセンサーはiPhone5sから搭載なので、
iPhone5以前は使えません。
結果
サンプルコードを起動させます。
サンプルコードでは画面に出力させています。
歩いているかどうかを判定しています。
歩いてると出てますね。「そうだね。プロテインだね。」
バックグラウンドでも動いていますね。「そうだね。プロテインだね。」
以上です。
エヴィバディパッション!
そうだね。プロテインだね。
— ひとのみち (@hitonomichi) 2015, 5月 29
Road to Passbookの作成
Passbookを作ってみる機会があって色々調べたので残しておきましょう。
ではEnjoy Passboooooooooook!
前提
素材を集める
証明書を作成
「キーチェーンアクセス」ー「証明書アシスタント」ー「認証局に証明書を要求」
「CertificateSigningRequest.certSigningRequest」ができました。
あとで使います。
Pass Type IDsを作成
デブセンでPass Type IDsを作成します。
証明書(さっき作った.certSigningRequest)を使用します。
できたらDownloadします。
ダブルクリックでキーチェーンに保管します。
テンプレートをゲットだぜ
Passbookのテンプレートを取得します。
ここから。Passbook Support Materials
「Passbook Materials」てリンクからダウンロード。
落ちてきたpassbook_materials.dmgを開く。
必要なやつだけ別に置いてみたら分かりやすいんじゃね?
任意の場所にフォルダを作成。今回は「PassSample」とします。
「PassSample」にサンプルjsonファイルと必要素材のどれかを置きます。
今回は「Generic.raw」を使用します。
signpassのプロジェクトをXcodeでビルドし作成されたsignpassを「PassSample」フォルダに移動に置きます。
こんな感じ。
Passbookの中に具を詰めます
pass.jsonを編集します。
まず、必要な情報があるのでキーチェーンアクセスから証明書を見てみます。
作成して保存した証明書を右クリックから「情報を見る」で開きます。
詳細な情報を開くと、あったあった。
これらをpass.jsonに設定します。
- passTypeIdentifierにPass Type IDを指定
例)"pass.com.example.PassbookSample" - teamIdentifierに部署を指定。10桁の英数字文字列です。
- organizationNameに組織を指定。
その他必要な項目を設定します。
ここを参考に。
Pass Design and Creation
オーブンに入れて出来上がりを待ちます
ターミナル起動。
「PassSample」ディレクトリに移動。
実行。
./signpass -p Generic.raw
Generic.pkpassができました!
ダブルクリックでプレビューできます。
作成手順は以上です!
アレンジで自分だけのPassbookを。
去年のWWDCで現地のディベロッパーは名刺をPassbookで持ってるって耳にしたので、
試しにひとのみちPassbook名刺をつくりました。
ひとのみちPassbook名刺
iPhoneだとPassbookアプリに入るよ。
え?いらない?ですよね。いらない人は燃えるゴミの日にだすか、かたつむりにあげてください。
別腹
余談ですが。
PassbookはiBeaconに反応してロック画面に表示しますが、
表示対象のPassbook複数あったらどうなるか。
たぶん並んで表示されるんやろーなーと思ってたら、、なんと!
思ってた通り並んで表示されました。
ちなみに、passTypeIdentifierが違えば別モノとして表示、
passTypeIdentifierが同じでserialNumberが違うと同じpassTypeIdentifierのうちどれか一つが表示されました。
食後に
PassbookはiBeaconや緯度経度に連動するし、
AppleWatchにも搭載されるし、
あんまり流行っていないけど、使い道はあると思ってるんですけどね。
自動更新とかサーバ絡んだことはまたそのうち研究します。