My Favorite Things - Coding or die.

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

Otemachi.swift #01 に参加してきた

参加してきました。 nikkei.connpass.com

今回はブログ枠ではないですが、簡単にダンプした内容をメモです。

会場

発表に集中しやすい落ち着いた雰囲気の会場でした。

すべての椅子にテーブルがついていて参加者にもやさしい感じだと思いました。 (ただし僕が座った椅子のテーブルは3度くらい傾斜があったような気がします・・・)

ちなみに懇親会は隣にあったタリーズで行ったのですが、タリーズとは思えないオシャレ感(失礼)で驚きました。 (ちなみに僕はカフェの中でもタリーズの利用率が一番高いです)

発表

WWDCの感想

  • 難易度
    • ハード
    • 抽選に当たる必要がある
    • チケット代高い(20万)
    • 周辺のホテルがめちゃくちゃ高い
    • 一泊$300
    • 早めに確保しよう
    • 10時間
  • 工事中だからサンフランシスコじゃなかった(らしい)
  • 空港についてから1.5h
  • 受け入れムード?
    • Uberの運転手でもWWDC知らない人はいた
  • 前日チェックイン
    • 入館証と上着をもらう
  • Keynote
    • 入るまでも並ぶ(2, 3時間)
    • CEO、役員クラスが話す
    • 開発者よりビジネス向け
    • 新しいiOSバージョン
    • ハードウェア
  • OPムービー
    • The world is depending on you.
  • Keynote
    • Mac/iOS11/iPad Proあたりが盛り上がった
    • HomePodもわりと盛り上がっていた
  • あと
    • 会場に残って、偉い人と写真撮影
    • 昼食を早めにゲット
  • Platforms State of the Union
    • 開発者向けの内容
    • Keynote よりは断然座れる
    • What’s new をまとめた内容
  • ハンズオン
    • 芝生エリアもあった
  • ラボ
    • Appleのエンジニア、デザイナなどに質問したりレビューしてもらう
    • 達人はBashで再開するらしい
    • 当日の7時くらいに予約しないと
  • ふりかえり
    • 乾燥していて意外と涼しい

開発中のアプリをXcode9 & Swift4に移行しました

speakerdeck.com

  • ハマったところ
    • ライブラリがコンパルエラー
  • Xcode9
    • コンパイル速度
      • Swift 1万step
      • クリーンビルドでは全く変わっていなかった
      • 差分コンパイルが気持ち速くなった?
      • エディタは速くなっていたので快適になった
    • Wireless Development
      • クリーンだと2〜3倍遅い
      • 差分ビルドだとWifiの方が速い場合もある
    • まとめ
      • Xcode9は素晴らしい
      • 開発者にも目を向けて改善してくれた

Swift Package Manager

speakerdeck.com

  • WWDC
    • San Jose には行った
    • いろんな人に会えたので良かった
  • Version 4 での変更内容
    • 殆ど語られていない
  • What’s New in Swift
    • 02:25/slide7
    • 7000+
    • サーバサイドで使われることが多い
  • 大きな変更があった(と語られたが)
    • そんなになさそう?
    • Swiftの言語バージョンを指定するのは前から
  • Swift Evolution を調べた
    • SE-0158
    • SE-0162
    • SE-0149
    • SE-0150
      • ワークフローの改善?
      • Gitブランチも指定できるように
    • SE-146
      • プロダクトを定義できるようになった
      • 他のパッケージに対してどのターゲットを公開するか?
    • SE-175
      • .resolvedのファイルが出来た?
  • マニフェストファイルの変更
    • exclude がなくなった?
  • まだ試してない
  • まとめ
    • コマンドラインツール/サーバサイドあで活用
    • Version4への移行がスムーズっぽい?
    • Linux上でほぼおなじライブラリが使えるから使う
      • ほぼの話
    • まだまだ発展途上?

Codableことはじめ

speakerdeck.com

  • 自己紹介
    • takasek
  • Codableとは
    • Swift4の機能
    • JSON/plistをエンコード・デコード
    • いろいろなところで発表されてる
      • 3日連続のピックアップ
  • イケメンポイント
    • Codableを宣言するだけでOK
    • カスタマイズも出来る
    • どんなEncoder/Decoderでも利用できる
  • CSVデコード出来る
  • カスタマイズ
    • コンパイラが型のメンバを自動生成している
    • 既存実装を上書きできる
    • キー名のカスタマイズ(codingKey)
    • デコードロジック(init)
  • とにかく自動生成してくれる
    • クラスの継承も考慮してくれる
    • Encoding Strategiesを決められる
  • 組み込みのエラー制御
    • 詳細なエラー情報を投げてくる
    • 予期しないエラーはこない
    • 独自のチェックも入れられる
  • エンコーディングの詳細をカプセル化
  • 抽象化されたフォーマット

XCTest.framework

  • 自己紹介
    • 学生
    • アルバイト
    • テストを書いていないって人が多いから
  • Xcode 9.0
    • 非同期テスト
      • 実装がXCTestCaseから独立
      • 非道記事のエラーが具体的に取れるようになった
      • タイムアウトでも成功になるような処理が書ける
      • 何をwaitするのか明確に
      • waitForExpectations
        • XCTestErrorが返ってくる
      • func wait
      • XCTWaiterのfunc wait
        • delegateを書ける様になったり
      • 扱いやすくなった
    • teardown
      • 個々のメソッドにteadownを入れられるようになった
      • 積むタイミングには注意
    • 名前ありアクティビティ
      • サブステップに分割出来るようになった
      • runActivity
      • ログが分かりやすくなる
    • マルチApp
      • 複数のアプリを扱えるようになった
      • launch()に加えて、activate()が増えた
      • 列挙型で状態が取れる
    • UI Elements
      • wait処理が増えた(existsがtrueになるまで待つ)
      • firstMatchで早く処理できる
    • screenshot
    • 保存
      • XCTAttachment
      • テスト中の情報を保存できるようになった
      • 成功時に残しておく場合は.keepAlwaysする必要あり
      • まとめて保存する方法ない?

High Efficiency Image File Format (HEIF)について話します

speakerdeck.com

  • 自己紹介
  • 新しい画像フォーマットに対応
    • HEIF
    • 今日は概要とデモだけ
  • JPEGデファクト
    • 連続した画像をうまく保存できない
    • 深度情報を保存できない
  • Appleが求めた画像フォーマット
    • HEVC
      • コーデック形式
      • H.264に比べて2倍の圧縮性能
      • 今後10年はサポート
    • HEIF
      • 連続する画像の保存圧縮
      • アニメーション
      • 国際規格
  • HEIFファイル
  • HEIF作成にはNokiaのライブラリを使う?
  • 実験
    • 朝刊の紙面情報を試してみた
      • 3000 x 4044 px
      • JPEG > HEIF > WebP
      • JPEGと比較しても拡大ノイズが少ない
    • 電子版アプリ
      • JPEGとくらべて20%通信量削減
  • 最後に
    • WebPと違ってハードウェアアクセラレーションが効く
    • 通信量をJPEGより削減できる
    • 素数が多い画像だと効果が高い?
    • ドキュメントが少ない

More Swift App Startup Time

speakerdeck.com

  • アプリの起動速度を高速化
  • 困っていること
    • dLibを増やすとアプリの起動速度が遅くなる
    • SwiftのライブラリはDynamicFrameworkとしてリンクされる
      • Carthage
      • CocoaPods
    • 増やすと遅くなる
  • おすすめセッション
    • App Startup TIme
    • Optimizing App Startup Time
      • 計測と改善
  • dyld3(現状2.x)
    • 新しいDynamic Linkerを作ってる
    • 実用段階になったらリンク早くなる
  • 計測手法と改善方法
    • Optimizing Startup Time Lab
      • めちゃくちゃニッチなLabがあった
  • Labで聞いたこと
    • dLib増やしすぎると遅くなる?
      • YES
    • namespaceないし、frameworkないとつらい
      • Prefixつければ?
    • iOS11で入るか?
      • まだ言えない
  • 起動時間の計測方法
      1. Instruments を使う
      2. Time Profiler
      3. Static Initializer Call
      4. 見られる
      1. Instruments via CLI
      2. 出力データはGUIじゃないと閲覧できない
      3. バイナリなのでパースできない
      1. task_info + UI Test
      2. didFinishLaunchで起動時間をとる
      3. CPU時間をとる(スマートではないけれど)
      1. DYLD_PRINT_
      2. dylibの読み込み時間が出力されるようになる
  • まとめ
    • 遅いのはどうしようもない
  • Labで生き残る方法
    • 台本を作っていく
    • ゆっくり喋ってくれ
    • 同じことを2人以上に聞く

Core ML

  • 自己紹介
  • Vision Framework/NLP
    • 学習済みモデルをAppleように変換?
  • CoreML in depth をみれば分かる
  • Q
    • なぜこれを作った?
    • マルチスレッドで使える?
      • 動かせた
    • モデルを分けて同時に利用できる
    • モデルファイルは500MBくらいある
  • まとめ
    • 使うのは簡単
    • モリーはめちゃくちゃ食うよ

5分でわかる Password AutoFill for Apps

speakerdeck.com

  • 自己紹介
  • Password AutoFill for Apps
    • Safariのパスワード自動入力と同じものをアプリで
    • Safari上のWebでログイン済みで無いとダメ
  • なぜこの機能に注目した?
  • 実装方法
    • アプリ
      • ContentTypeにusername/passwordが追加された
      • Associated Domains にWebサービスを設定
      • アプリ側にも設定
    • サーバサイド
      • ファイルを置く
  • 実装したけど鍵マークが表示されない
    • シミュレータでも実機でも出ない
  • まとめ

CoreNFC

speakerdeck.com

  • NFCAPIが来た
    • セッションはなかった
  • メリット
    • 直感的
    • 互換性
    • 安い
  • Reader/Writerモード(実装必須)
  • 八重洲NFC専門ショップ
  • ユーザをトラッキングしたり(イベント)
  • Wiiのコントローラーにも
  • iPhone7とiPhone7+

感想

全体的に濃い内容が多く、非常にためになる内容ばかりでした。 個人的には新しいXCTestの内容に非常に興味をもちました。