My Favorite Things - Coding or die.

とある技術者の経験記録、的な。

CAMPFIRE iOS #2 に参加してきた。

CAMPFIRE iOS #2に参加してきました。

ブログ枠です。 多忙でまとめるのが遅くなってしまいました。

WWDC2017 レポート & Quick Look Preview Extension について

  • WWDCに行った感想
    • 英語の勉強にもなるし良い経験になる
  • メリット
    • 1週間、WWDCに集中できる(業務から離れられる)
    • 参加者の日本人同士で交流できる
    • 新機能について不明点があったらLabsに聞ける
  • デメリット
    • 業務溜まったり
    • 飛行機が
  • Bash
    • 有名なアーティストの演奏を聞きながらお食事
    • すごく楽しかったのでぜひ
  • WWDC Labs
    • 既存アプリについてアドバイス
    • 新機能の説明
    • 実装の相談
    • マーケティング関連の質問
      • 英語力がなくて伝わらない場合はタイピングしてもらった
      • やはり英会話は必要
  • UIKitラボ
    • 記事詳細の実装方法について
    • HTMLをUITableViewにマッピングしている
      • UIWebViewの描画だと遅かったから
      • WKWebViewだと速くなった
    • どちらが良いの?
      • サービスの方向性次第だよ
      • UITableView/WebViewどっちでもたくさん使われてるから大丈夫だよ!
    • TRILLのUIについての相談
      • タブ化したほうがよい
      • ユーザに見せたい画面がどれだか分からない
      • 参考に出来るものとしてAppStoreを見ればいいんじゃない?というアドバイスを貰った
    • CoreMLとか
    • Labsは素晴らしい
  • Quick Look Preview Extension
    • 現地でも人気がなかった・・・
    • TRILLではCore Spotlightを導入しているのでチェックした
    • 動画ででも紹介
      • フォースタッチでクイックルック
      • (会場の反応が薄い・・・)
      • 今後は対応端末も増えてくるし、バカにできないんじゃないと思う
  • CoreML
    • デモ
      • 動物をランダムで表示して、それを解析する
      • 機械学習の部分は完全にオフライン
        • ユーザのプライバシーを考慮
        • サーバサイドの実装が必要ない
      • 40行くらいのデモ
  • Day1対応
    • 去年行ったこと
      • Swift3対応
      • UNNotification対応
      • Widget
    • うまく行けばフィーチャー枠に乗っけてくれる
    • 3回くらい特集に組み込まれた
      • Day1の対応をしたおかげ?
    • Swift化は企画も納得してくれたのでやりやすかった
  • まとめ
    • 英語力が必要
    • Quick Look すぐにサービスに使えるのでおすすめ
    • Day1対応

WWDCについてのリアルな感想が聞けて良かったです。

ちなみに Quick Look Preview Extension は正直あんまり興味をそそられませんでした。私がフォースタッチの端末を持っていないのと、フォースタッチ自体あまり良い機能とは感じないためですが。(SteveJobsだったら絶対につけない機能だと思ってます)

マスティフ: (for Xcode Beta) バージョンアップ対応を軽減するためのサービス

  • イントロ
    • マスティフ
    • 今日は Xcode β について
  • 宣伝
    • iOS Test Night #5
    • 今の人数は把握済みです
    • WEB-DBに寄稿しました
      • Espresso / XCTest / Appium
      • UIテスト自動化
  • WWDCについて思うこと
    • Xcode9になってようやくまともなIDE
    • アプリの動作確認とか既存の動作については?
  • WWDC2017の影響
    • 既にリリース
      • 自動アップデート
      • サブタイトル
      • プロモーション用テキスト
    • そのうち
      • Xcode9
      • iOS11
  • マスティフとは?
    • バージョンアップ対応軽減サービス
    • ライブラリのバージョンアップを自動的に行なってくれる
    • 既存ライブラリが動くことを定期的に動作確認
      • 使えなくなったことを早めに知りたい
    • 大きな流れ
        1. バージョンチェック
        1. バージョンで動作確認(Jenkins)
        1. 通知
    • 1日1回、現行バージョンの動作確認
    • 新しいリリースの検知
      • Xcodeとか自動的にインストールされる
      • Fastlane/gem
    • 朝来て通知を見たら落ちるのが分かってた
      • Firebase
    • セマンティックバージョンに従っているものは少ない
  • WWDC2017初日の出来事
    • deliverが失敗してた
    • 出社するまでには全ての対応が終わっていた
  • Xcode βとの生活
    • 1.ベータ版はn回リリースされる
      • info.plistのバージョン番号は変わらない
      • buildNumberを見る
    • 2.ベータ版のGM
    • 3.正式版
    • マスティフ
      • Xcode β は通常フロートは別で用意
      • 古いのは残さない
      • 散布アプリを元に動作確認
        • 既存
        • 新規対応
  • SWETとして
    • テスト周りと中心に見ていく
  • 最後に
    • WWDC2017お疲れ様でした
      • GM版が出るまでが勝負
      • バージョンアップ対応における不安とコストは極力下げていこう
    • フィーチャー
      • iOSバージョンアップも自動化出来ないかを検討中
        • AWS Device Farm での利用を検討したがベータ版が無い
        • 新しいテストの仕組みで自動化できるかも?
          • うまく行ったらシェアします

Mastiff、OSS化が楽しみです。

Essential for What’s new in Distribution

  • イントロ
  • Distribution で何が変わったか?
  • Report
    • 新しいAppStore
      • 俺達が作った最強のAppStoreという話
    • iTunes Connect
    • StoreKit
    • Device Configuration Deployment And Management
      • ATS対応が2018年に必須化される(さらっと)
    • Advanced StoreKit
      • レシートのバリデーションやSandboxの話
  • AppStore
    • タブが増えた
    • IAPが可能に
    • サブタイトル
    • 動画プレビューが勝手に再生される
    • プロモーションテキスト
  • iTunesConnect
    • 段階的リリース
    • TestFlight
    • 90日間有効
    • 外部テスターが10000人
    • AppStoreで閲覧可能
  • Phased Release
    • 設定しているユーザのみ
    • StoreにアクセスすればDL可能
    • 最大7日で100%リリース
    • Pause可能
      • 何か問題があったら止められる?
      • 制限があるのでAndroidほどではない
  • StoreKit
    • レーティングの話
      • すべてのバージョンのレビューのみ表示
      • バージョンアップ時にリセット可能
        • 日本のユーザのせい?
      • Rating/Reviewを求められるように
      • AppStoreRviewへのDeepLink
      • 1行だけのAPI
        • 適切なタイミングでしか出せない
        • 年3回
        • ボタンを使うならDeepLink、アラートを使うなら、SKStoreReviewControllerを使うこと
          • アラートはNG?
  • レビューのガイドラインが変わった
    • App Review Guideline
      • diffが見れるサイト
  • 本編(WWDC2017)
    • Dub-Dubという略し方だった
    • サンノゼ
    • WWDC Extended、ここでやった
  • AltConf 2017
    • 隣の建物でやってた
    • 今年は結構ガラガラだった
  • Swift Panel
    • Swiftを作った人のパネルディスカッション
    • 待ってる人がやたら多い
    • 2ショット写真が取りたかった
  • Beer Bash
  • 写真
    • いろんな開発者と会いました
    • アメリカ人はNBA大好き
  • 犬?
    • Zaku-K9
      • 麻薬とかを見つける警察犬

いやはやWWDCは楽しそうです。

段階的リリースはAndroidほど自由度は高くないようですが、ブランドを大切にしているAppleとしてはよく導入したものだなぁと思います。これもSteveJobsなら絶対にやらないことでしょうが・・・まぁ開発者にとっては楽になるので良しとするのもありでしょうか。

クックパッドiOS更新との付き合い方

  • イントロ
  • 過去のiOS/Xcode更新の対応事例の紹介
    • Handoff対応
      • iOS/Macの体験を引き継ぐ(iOS8)
      • レシピ画面を共有
      • 自動アップデートに連動して辛いことも
    • AppleWatch
      • レシピで指定された時間のタイマーを
    • Swift
      • かなり慎重に導入した
      • レガシーコードのリファクタリングやnullabilityも利用した
      • 現在は35%がSwift
    • 新しい機能を導入・利用する理由
      • 利便性
        • 4.7/5.5インチ
        • Spotlight
        • Shared Web Credential
          • 楽にログインできるように
    • プロモーションのため
      • Handoff対応
      • AppleWatch対応
        • Appleのサイトに載せてもらえる
      • 新機能を利用したアプリはAppStoreで目立つ
    • 開発効率向上の為
      • Swiftの利用
      • AutoLayout、UIStackView、WebView
      • 非推奨になったAPIは利用しないように(負債になる)
    • 変更点の情報収集
      • 公式ドキュメント、API diff
      • iOS/Xcodeのベータ版をすぐに試す
      • Beta版でドキッとしたこと
        • Safariからのリンクが全てアプリに遷移みたいな
          • 途中で動きが変わった
        • アプリ削除でKeychainの情報も消える
      • バグかと思ったらバグレポートを送ったり、フォーラムを見ると良い
    • 事業への影響
      • コンテンツブロッカー
        • スマホWebの広告はどうなる?
        • アプリのことだけ気にすればいいわけではない
      • ATS
        • どこまで対応すればいいのか・・・
        • 広告SDKの通信など自社だけで解決しないものもある
    • 開発環境の変化に追従する
      • Xcode/Swiftバージョンアップ
      • 常に情報収集して追従していく
      • 開発を続けられない状況にならないように気をつける
    • サポートバージョンの見直し
      • 新機能が使えるのは新しいバージョンだけなので
      • 基本は直近2バージョン
      • OS更新の案内をきちんとする(慣れていないユーザもいるので)
    • 新機能導入の判断基準
      • ユーザが便利になったり、影響サービスとマッチするものは積極的に
      • 機能リリース後に取り下げることもある
        • サービス拡大像をうまく描けなかった
        • 中途半端に残してもユーザ・サービス提供側、双方に不利益
      • 開発効率やパフォーマンス、セキュリティ向上なら
      • 明らかにやらないと行き詰まるものはやるしかない
        • 最新のSDKを使う
  • まとめ
    • ユーザが便利になる機能は積極的に採用していく
    • バージョン・アップによる変更点の情報はしっかりと
    • 安定したリリースサイクルを回すために、開発環境に関わるところは早めに

かなりボリューミーな発表内容だった気がします。

iOSでの新機能に関してうまくいかなかった点も含めての発表内容だったのでとても参考になりました。

iOS11対応に向けて - Yahoo! JAPANアプリiOS10対応事例紹介

  • イントロ
  • iOS 10 の話
    • どのように新OSと向きあっていくか?
    • 失敗や試行錯誤
  • 65
    • WWDC終了〜iOS10リリースまでの営業日
  • 全体スケジュール
    • 6月:キックオフ
    • 7月:アイディア出し
    • 8月:開発
    • 9月:リリース
  • 6名体制
    • YJの中でも珍しい(力を入れてる)
  • キックオフ
    • 過去、リリースに間に合わないことがあった
      • 完成度にこだわってしまった
    • トレードオフスライダーを作って方向性を
      • スケジュール ※一番
      • API対応
      • 特集掲載
      • 途中から入ってくるメンバーにも必ず共有するようにした
  • アイディア出し
    • 良いアイディアが欲しい
    • 1.有志の協力者募集
      • デザイナーが4名入ってくれた
    • 2.デザインスタジオ
      • ブレストでペーパープロトタイピング
      • あとでみんなで発表
    • 良いアイディアはたくさん出た
      • トレードオフスライダーによりスケジュールが大切だという判断が容易にできた
  • 品質チェック
    • 社内SDKの取り込み
    • 課題
      • 取り組む温度感がまちまち
      • 多対多のコミュニケーションでコストがかかった
    • テスト計画
      • 課題
        • コスト大(7,000件) ※手動のテストです
          • かけ過ぎだと怒られた
      • 改善策
        • 社内SDKの対応に期限を設ける
          • タイミングを揃える
        • マスターテストケースに優先度付
    • まとめ
      • 成功するためのルールを作って自立したチームへ
      • テスト計画は効率とコストバランスを見て早期に立てる
        • これでiOS11も万全

YahooでのiOS新機能対応についての戦略的な内容が聞けて、大変貴重だと感じました。

みんなでアイディア出しをしたり、トレードオフスライダーを作ったり、すごく面白そうなことをやっているなぁと感じました。

まとめ

WWDCに関する情報や感想、iOS新機能対応、Mastiff、など、様々な発表が聞けて非常に有意義な勉強会でした。

会場(LODGE)も広くてキレイ、かつ懇親会でのお寿司も美味しかったりと、なかなかにリッチな勉強会でもありました。