koogawa blog

iOS、Android、foursquareに関する話題

yidev 第十四回勉強会で発表してきたよ

f:id:koogawa:20131221230742j:plain

今日は、横浜・馬車道で開催された yidev 勉強会に参加してきました。

これまでも、yidevの勉強会には何度か参加させて頂いたのですが、今回は初めて発表者として参加させて頂きました。めちゃくちゃ緊張しましたが、とても良い経験になりました!

というわけで、以下、簡単なメモになります。

Dynamic Typeの基本的なお話

発表者:@koogawa ※私です

  • 概要
    • iOS 7から追加された機能
    • ユーザが自由に文字サイズを設定できる
    • アプリ側がDynamic Type機能をサポートする必要がある
    • 標準アプリではメールアプリ、メモなどがサポート
    • 標準アプリ以外ではEvernote、Tweetbot 3などがサポートしてる
  • 実装方法
    • フォントサイズではなくテキストスタイルで指定する
    • UIFontTextStyleHeadline などを指定できる
    • サイズ・書体などはOS側で動的に調整してくれる
    • Storyboardでも設定可能
  • 文字サイズの設定変更はアプリ側で監視する必要がある
    • UIContentSizeCategoryDidChangeNotificationを監視すれば良い
  • ユーザの反応
    • 文字サイズの設定がインストールしているアプリ全体に影響してしまうため不評だった
    • OSの設定画面から変更できることに気付かないユーザも多かった
    • ユーザにあまり浸透していない印象
  • まとめ
    • 浸透するまではアプリ内で文字サイズを設定できたほうが良いかも
    • Dynamic Type使うならユーザにちゃんとガイダンスする

せっかくなので、発表してみて嬉しかったことをメモしてみます。

  • 発表中、みんなメモを取ってくれてて感動した
  • 相槌をうってくれると安心する
  • 質問してくれると嬉しい
    • 答えられない質問を受けたとき、@k_katsumi さんがフォローしてくれた!

NSInvocationについて

発表者:@saku2sakuさん(Retty株式会社iPhoneアプリ、とんかつ担当)

サンプルコード:NSInvocationSample.zip

  • NSInvocationって?
  • メソッドをシグニチャからコールする仕組み
  • リーダブルコードいいよ
  • NSInvocationでの呼び出しを経験しよう!
  • クラスメソッドを呼んでみよう!
  • 引数を渡してみよう!
    • 引数設定の際のインデックスは2はじまり
    • 0インデックスには self が入っているっぽい
  • 返り値を取得してみよう!
    • 戻り値は getReturnValue 使う
  • 最後の難関
  • まとめ
  • 使うシーンは限られているはず
  • アルゴリズムを見なおした上、用法用量を守ってお使いください
  • リーダブルコード!!!

最近、テストコード環境どんなかんじですか?ぼくはこんなかんじです。

発表者:@tokoromさん

  • 「Downloadable Storyboardを発表予定でしたが、飽きたので今日はテストの話をします」
  • 前提条件
  • 標準のXCTestフレームワークを使う
  • Command + U でテスト実行&Xcode単体でもテスト結果が確認できること
  • この範囲で外部ライブラリの利用を許容
  • 非同期処理のテスト
  • GHUnit
  • 2年前くらいはデファクトスタンダード
  • 更新止まっちゃってた
  • 現在は x2on さんが頑張ってくれてる
  • matcher
    • XCTAssertsでもなんとかなりそう
    • Expectaが好き
  • その他つかてってる
    • OCMock
    • OHHTTPStubs
  • CUI & Guard
    • Guardめっちゃいいよ
    • 画面を2分割して、左はvimで開発しながら、右でguard動かしてる
  • コードカバレッジ
  • CI

NSURLSessionとか

発表者:@cqa02303さん

  • はじめに
    • 今年はあっという間だった
    • Arduinoで遊んでみた(ちょっと飽きてきた)
    • やっぱりAppStore最高!
    • 本書いたよ!Amazonでポチりましょう

  • NSURLSession
    • アプリとサーバの間にdaemonが入るようになった
    • アプリが死んでも通信を続けられる
    • タスクで管理できるようになっている
    • バックグラウンドで使用できる
    • SessionTaskには、Data/Download/Uploadが存在する
    • セルラー通信を許可するか設定可能
    • Wi-Fi限定にもできる

JavaScriptCoreについて

発表者:@k_katsumiさん

  • iOS 7から追加になったJavaScriptCore
  • Objective-C から JavaScript が呼べるようになった(逆も可)
  • JSで実装済みのライブラリをそのまま使えるよ
  • 使い方
    • JSContext *context = [[JSContext alloc] init] // コンテキスト作る
    • [context evaluateScript:@"(javascript文)"]; // JSを評価
    • JSValue *func = context[@"hogeMethod"] // パーサーメソッド取得(ラップされてるけど実態はJS)
    • [func callWithArgument:@[a, b, c]] // でメソッド呼び出せる
    • [parser invokeMethod:@"parse" withArgument:@[text]] みたいな感じでJSメソッドを指定もできる。引数は配列で渡す

会社をやめて独立したらすること。他

発表者:@nagamatsumasatoさん

大変貴重なお話をお聞きすることができました(メモは自粛)

iBeaconについて

発表者:@noliliさん

  • はじめに
    • 今日はなんと岐阜から参加!
    • 会社でARARTアプリ作ってます
    • 個人でもBloomclockというアプリを作ってる
    • iOSの教科書というブックも出してる

ARART

ARART

  • MATILDE INC.
  • エンターテインメント
  • 無料

  • iBeacon
    • お店に置かれてるビーコンにはすべてUUIDが振られている
    • iPhoneがどのビーコンの近くにいるかわかる
    • AirLocate というAppleの良いサンプルがある(要Devleperアカウント)
    • ResionMonitoring
      • 指定したリージョンに入ったら教えてくれる
      • 出た時も教えてくれるけど、30秒ぐらいかかるよ
      • CLRegionStateでリージョン内にいるのか外なのかわかる
    • Ranging
      • ビーコンとの距離がわかる
      • Unknown, Immediate, Far などの値で返ってくる
    • Estimote はもう売り切れてて買えない
      • ただし、さっきこの勉強会会場でEstimoteが反応した
    • PassbookをiBeaconと連携させるデモ!おもしろい