koogawa blog

iOS、Android、foursquareに関する話題

第16回 #yidev 横浜iPhone勉強会に参加してきたよ

f:id:koogawa:20140927135941j:plain

今日はyidev(横浜iPhone勉強会)に参加してきました!

今回から主催者が @cocopon さんから @es_kumagai さんに交代になり、yidev第3部のスタートとなりました。

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

f:id:koogawa:20140928010908p:plain

最初に主催者である熊谷さんによる「yidev5年の歴史の振りかえり」の発表がありました。

  • 記念すべき第1回目は 2009/9/26 に開催
  • 主催は @takayama さん
  • 「講習会じゃないからね」という言葉が強く印象に残った
  • 熊谷さんも勉強会に強く惹かれるようになった
  • 聞く側から発表する側へ
  • 第3部の主催者に!

熊谷さんの著書

handoff について

@sonson_twit さんによる発表。Handoffのデモを交えながらの発表がとても良かったです。

  • Handoffの日本語ドキュメントが出た
  • Handoffの種類
    • Safariを呼ぶ
    • ネイティブアプリケーション
    • Safariからネイティブアプリケーションを呼ぶ
    • Mac -> Macはまだ試せてない
  • 準備
  • HandoffでURLをSafariで開く
    • NSUserActivityを使うと数行
    • NSUserActivityはコードでretainしておく必要がある
  • うまくいかない場合
    • 対応機種か?
    • iCloundは同じアカウントになってる?
    • NSUserActivityのインスタンスは保持できているか?
    • 他の機器と混線してないか?

Custom Keyboard について

[twitter:@haranicle] さんによる発表。

  • 機種依存文字を入力できるアプリをリリースしている
  • App Extension入門
    • iOS 8から導入されたアプリの垣根を超えて機能を提供できるアプリ
  • 苦労する点
    • App Extensionは突然落ちる
    • デバッグがしにくい
      • シミュレータのDebug>Open System Logでログを見る必要がある
      • ターゲットをキーボードに合わせてRunすることでもログを見れる
    • たまにキーボードが表示されない場合がある
      • Toggle Softwareで表示されることが多い
  • Storyboardは使えるのか
    • UIInputViewControllerには使えない
    • UIInputViewController.view のサブビューには使える
  • 描画できる範囲は?
    • 常に画面の横幅いっぱいに表示される
    • 高さはviewDidApper以降のタイミングなら変えられる
  • 全ての入力エリアで使えるわけではない
  • 音声入力はできない
  • ファイルアクセスはできる
    • 他のApp Extensionと同様、シェア領域にもアクセスできる
  • koogawa疑問
    • 呼べないメソッドはある?たとえばAlertとか
      • 一個ずつ試すしか無さそう
      • UIAlertは無理そう(呼んだらキーボードが消えた!)
    • 通信もできる?→yes
    • 高さは制限なし?無いっぽいけどほどほどに

haranicleさんのアプリ https://itunes.apple.com/jp/app/te-shu-wen-zi/id501993640?mt=8&uo=4&at=10l8JW&ct=hatenablog

UI テストの決定版

[twitter:@kitasuke] さんによる発表。発表とは関係ないですが、kitasukeさんは iWatch がものすごく欲しいそうです。

  • UIテストの目的
    • 自分で担当した作業が原因で、思わぬところで起こるUI関連の不具合を防ぐ
  • 想定されるUIテスト対象

  • ライブラリ

  • KIFでできること
    • Viewのタップ
    • 座標のタップ
    • 長押し
    • 文字入力
    • 他にも色々
  • KIF+Screenshot
  • テストの自動化
    • テストケースが多くなると数分では終わらない
    • すべてのスクショに目を通すのは不可能
    • 前回との差分だけ検知できるようにしたい
  • Github+Travis
    • テスト実行
    • montageで1枚の画像にまとめる
    • compositeで前回と今回の画像diffをとる
  • 良い点
    • 運用コストが大幅に減る
  • 悪い点
    • UI実装者とテストケース実装者が異なると効率が下がる

スクショから始まるデバッグについて

[twitter:@dealforest] さんによる発表。アプリ開発者なら誰でも経験するデバッグの悩みを楽にしてくれるライブラリの解説。プログラマーの3大美徳である【怠惰・短気・傲慢】を再認識させられる発表でもありました。

  • デバッグのサイクル
    • デバッグのための情報を元にしてバグの原因を推測する
    • バグを再現させる
    • Let’s debug!!
  • 配布したアプリのデバッグがむずい
    • break point置いたりできない
    • 端末情報に依存している場合は更にやっかい
  • デバッグのための情報収集
    • Crash Reportを収集する
    • スクショを撮って共有
    • ユーザからの問い合わせ
    • SNSエゴサーチしたり
    • AppStoreレビューはあまり参考にならない
  • そんなわけで作ったのが DFTDebugScreenshot
    • スクショを撮ったタイミングでデバッグに必要な情報を一緒に画像として出力してくれる

スクショを送られてきた時にデバッグを楽にするライブラリを作った - Qiita

SpriteKitゲームをSwiftで書いてみる

[twitter:@studioshin] さんによる発表。studioshinさんは、Sprite Kit iPhone 2DゲームプログラミングXcode 5 完全攻略という書籍を執筆されているそうです。

  • Objective-Cで書いたゲームをSwiftで全部書き換えた
  • Objective-Cで書いた処理をひとつひとつSwiftに書き換えていく例
    • これがとてもわかりやすかった
    • 書き換え後も行数はそんなに変わらない
  • 文字列に @ が無いのに違和感(これは同感)
  • オプショナル大変

ドメイン駆動開発 入門編

[twitter:@cocominap] さんによる発表。ToDo管理アプリを例にドメイン駆動開発を解説。じっくり聞いていたらメモがあまり取れませんでした^^;

ドメイン駆動開発についてはこちらの本がとても良いらしいです。

感想メモ

今回はiOS 8のNDAが解けたあとなので、気軽にツイート出来たのが個人的には良かったです。また、テスト/デバッグ系の発表も多めで、とても勉強になりました。

最近はiOS関連の勉強会も多くなってきましたが、yidevが持つあの独特の雰囲気がやっぱり好きです。*1

「講習会ではないですからね :D」とあるように、またネタがあれば発表側にもまわりたいと思います!

*1:うまく言葉に出来ないのですが、発表中に自然に議論が始まるあの雰囲気が好きなのです