koogawa blog

iOS、Android、foursquareに関する話題

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

昨日は「横浜iPhone勉強会」に参加してきましたよ。

f:id:koogawa:20150711133846j:plain

今回は記念すべき第20回目の開催です!\(^o^)/

https://atnd.org/events/67499atnd.org

ツイートもまとめさせて頂きました。

今回は自己紹介タイム中、スクリーンに参加者のアイコンを映しておく、という試みがありました。

f:id:koogawa:20150711142458j:plain

今までだと顔とアイコンが一致しないまま勉強会を終えることが多かったので、個人的にこの試みは大成功だったと思います!

***

そんなわけで以下、発表内容の簡単なメモになります。(発表者の皆さま、間違い等あればご指摘ください)

iOS開発者のためのバックエンド入門 (2)

@yuumi3 さんによる発表。Ruby on railsを使い、実際に簡単なバックエンドを作るデモがありました。やはり手馴れている方のライブコーディングはとてもわかりやすく、見ている側も楽しかったです。

  • Rubyの良い点
    • 書くコードが少なくてすむ
    • 生産性が高い
    • 情報が豊富
    • 利用者が多い
  • 悪い点
    • 性能が高くない
    • 非互換なバージョンアップが起こる
    • CoC、ルールを知らないとコードが読めない
  • インストール
  • RubyのWeb App Framework
  • 簡単なToDoアプリを作る
    • iOSアプリ側はSwift
    • ネットワーク系のライブラリなどは使っていない
  • Deploy
    • herokuを利用
    • サーバの設定・管理が不要
    • ごく小アクセスなら無料

WWDC でのお話(+Apple Watch のお話)

@kitasuke さんによる発表。サンフランシスコの楽しさが伝わってくる内容でした。WWDCのチケットは無くとも、本人の行動力次第でたくさんのことを得られるんですね!

  • チケット外れたけどサンフランシスコに行った
  • チケット無くても得るものはたくさんある
  • ミートアップにも参加できる
    • Realm, CocoaPods State of the Union, Mercari Inc. など
  • チケット無いデメリット
    • ラボに行けない
    • バッシュに参加できない
  • Yosemiteは絶対に見るべき
  • 後半はwatchOS 2のお話
    • HealthKitについて(資料の公開は検討中とのことですのでメモも自粛)

Xcode 7におけるUIテストとカバレジ計測

@nowsprinting さんによる発表。非常に丁寧な説明で、とてもわかりやすい発表でした。ちなみに、nowsprintingさんはあの「テスト自動化入門」の著者の方でした!

  • UIテストの位置づけ
    • ユニットテスト
      • XCTestを使用する(Xcode 5より導入)
      • MVCのMを中心に
      • OCMock、OCHamcrest, Kiwiなどの補助ツール
    • 統合テスト
    • システムテスト
      • ipaを端末にインストールし、UIを操作する
      • サーバ側はステージング、もしくはプロダクション環境を準備
      • 一般的に独立したテストチーム(QA)が行う
    • 受け入れテスト
    • UIテストはどのレベルでやるべきなのか?
      • システムテストレベルでの自動化はスモークテストにとどめる。もしくはBDD
      • UI操作を伴う機能テストは統合テストレベル中心に行うのが良さそう
      • それでも限界はある。あきらめ大事
  • UI Testing API
    • XCTESTに追加されたUI操作を行うクラス
      • XCUIApplication
        • XCUIElementのサブクラス
        • テスト対象アプリを起動したり終了したり
      • XCUIElement
        • ヒエラルキーからボタンを探して取得したりタップしたり
        • Accessibility identifier, label, title などで指定
      • XCUIElementQuery
        • すべてのButtonのサブクラスを取得する、など様々なことができる
        • wait/sleep を考慮する必要がない。適宜waitしてUIエレメントを探してくれる
  • UI recording
    • シミュレータでの操作をそのまま録画してテストコードを出力してくれる!
  • Code coverage
    • スキーム設定でオンにするだけでコードカバレッジが取れるようになる
    • 結果はReport Navigatorで確認できる
  • Test Reports

フォント関係のお話

@nolili さんによる発表。noliliさんとは以前からTwitterでつながっていたのですが、この会でようやくご挨拶することができました!(自己紹介タイムのおかげ)

とても綺麗なスライドだったのですが、NDAの関係もあり公開は控えるとのことです。メモも自粛させて頂きます。

Complication について

@mo_to_44 さんによる発表。Apple Watchの文字盤のところに情報を表示できる「Complication」のお話です。

  • Complicationとは
    • 時計のフェイスに情報を表示できる
    • 時系列ごとの情報の表示が可能 (Time Travel機能)
    • 表示領域をタップするとWatch App へ遷移する
  • Complication Familis
    • Modular small, largeなど複数のComplication Familiesが用意されている
    • 全てのComplication Familiesをサポートする必要はない
  • CLKComplicationTemplate
    • CLKImageProviderとCLKTextProviderで構成される
    • 表示形式に適したTemplateを選んで使用する
  • CLKComplicationDataSource
    • complication表示のために必要なデータを作成
  • 実装上の注意点
    • データソースのメソッドは最小限に
    • 通信してデータを取るとか、計算するとか、時間のかかることはしない
    • 計算が必要な場合はWatchExtension以外の場所(iOS App側とか)で行い、キャッシュしてcomplicationからアクセスする
  • 参考資料

Xcode Botとテストについて

@TachibanaKaoru さんによる発表。Apple公式の継続的インテグレーションツール「Bot」のお話です。会場には意外とBotの存在を知らない人も多く、とても貴重な発表になりました。

  • Botとは
    • Xcode 5から導入されているApple公式のCI
  • 主な機能
    • 自動ビルド
    • インテグレーション詳細情報の表示
    • Test実行
    • ipaの作成と配布
  • Xcode 7で導入された機能
    • UI Testの実施
    • Code Coverageの表示
  • Botを使用するメリット
    • 証明書などが不要
    • XcodeからTeamを設定し、Provisioningを「Automatic」にしておくと自動的にプロビジョニングを選んでくれる
    • そのまま実機にもインストールできる
    • 複数のBotを設置可能。ひとつひとつをBotと呼ぶ
  • Bot設定デモ(メモは自粛)
  • まとめ
    • Botは無料でインストールも簡単
    • プロビジョニングも設定不要(自動選択)
    • ipaの配布も楽
    • App Storeへアップロードもできる
    • UI Testもできるようになった!

CloudKit のお話(+Apple Watchリモコン化計画)

@haranicle さんによる発表。

  • cloudKitの紹介

と思ったら

  • Apple Watchリモコン化計画!
    • Watchから照明器具を操作したい
  • IRKIT で実現する方法
    • すでに実現している人がいた!
    • 外出先からも操作可能
  • HomeKit で実現する方法
    • iOS 9からApple Watchにも対応している
    • HomeKit に対応した製品が必要
    • 外出先からも操作可能
    • 専用のシミュレータ(HomeKit Accessory Simulator)がある
      • Xcode内からダウンロード可能
    • 各製品の動作状況も確認できる

クラス継承とプロトコル拡張を比べてみる

発表が押していたこともあり、@es_kumagai さんの発表は残念ながら時間切れ(´・ω・`) 次回は是非、お聞きしたいです!

まとめ

今回はWWDC 2015直後ということもあり、iOS 9Xcode 7関連の発表が多い印象でした。ご存知の通り、WWDCのセッションはとても数が多く、ひとりで全部見ることは困難なので、こういった勉強会を通してどんどん情報共有していきたいですね(^ω^)

また、最初にも書いた通り、今回はアイコンをスクリーンに出しながらの自己紹介になったため、初めて顔とアイコンが一致した!という人も何人かいました。これが会話のきっかけになったりと、大変有意義な時間を過ごせました。

次回のYIDEVも楽しみですね!