Categories: 勉強会

#wwdc18 WWDC 2018 After Partyに参加してきた!まとめ

mercariでおこわなれたWWDC 2018の内容をFeedbackするWWDC 2018 After Partyに参加してきたのでそのメモです。

※大体の情報はappleのサイトからも見れる情報になると思っていますが、部分的に隠したほうがいい情報等ありましたらご指摘いただけると幸いです。

WWDC Overview

Event Overview

  • SAN JOSEの発表の様子
  • keynoteは横にすごい長かった
  • 廊下にhompod2で音楽をだしたりしていた
  • ARKitのゲームが人気
  • laboは今年は去年device previewの部屋でやっていました
  • 外ではWWDC以外のイベントもやっている
    • すぐとなりでやっているALTCONFはとてもよい
    • LAYERSというデザインのカンファレンスもやっている
    • #firebaseparty は踊っている人がいてとても楽しかった
  • bashはPanic! At The Discoが出演
  • 金曜はtry! Swiftもやっていた
    • パネラ0全員が今までやこれからのswiftの開発を話していた

WWDC Developer Announcements

  • iOS
    • 同じデバイスでもパフォーマンスが向上している
    • Auto Layoutも軽くなった
    • Siri Shortcutsを用いるとどんなアプリからでもsiriを使えるようになった
    • ARKit 2/ Core ML2も可能性があってよい
    • パスワードの自動入力機能がサードパーティー製のパスワードマネージャーもサポート
  • watchOS
    • バックグラウンドでも音楽を聞ける
    • ヘルスキットも追加要素あり
  • tvOS
    • Dolby Atmosに対応
    • collection viewのパワーアップがあった
  • mac OS
    • Dark modeが良い!

New AR Experience

About AR and ARKit

  • ARの歴史はオズの魔法使いを書いた人が1901年に草案を出した
    • 1966年にようやく実際のデバイスができた
  • ARKit自体はWWDC2017で誕生
  • ios11以上だが、A9以上のデバイスが入っているのが対象になる

WWDC18 AR Overview

  • ARKitのアップデートがあった
  • World Maps
  • Environment Texturing
    • 周囲の環境によってレンダリングしてリアルなレンダリングをする
  • Image Tracking
  • Object Detection
    • 3D空間上のオブジェクトを検出する
  • FaceTracking Enahancements
    • 顔認識+視線までトラッキングできるようになった

World Maps

  • 保存と外部からのロードができるようになった
  • 空間上に任意のオブジェクトをおいて中断して、再開するときにまた同じようなオブジェクトを置かれた状態でできたりする
  • Sharing Wrold Maps
    • AさんがもっているiPhone上の仮想空間の情報をBさんにシェアできて、同じ仮想現実上の情報を共有することができる
  • getCurrentWorldMapを使ってmap情報を取得して送ったりできる
  • Map情報を取得するときはARWorldTrackingConfiguration().initialWorldMapにARWorldMapをいれてあげて、セッションを表示してあげると表示できる

Environment Texturing

Image Tracking

  • 固定してある必要はなくて、動的に動かせるし、複数の画像も自動的にトラッキングしてくれる
  • 画像のトラッキングを専門に行うARImageTrackingConfigurationというのが追加された
  • しかしARImageTrackingConfigurationと比べて、ARWorldTrackingConfigurationのほうがパフォーマンス高い
  • 画像が範囲内にいたり、workd trackingが行われる環境下でしか使うことができない
  • ARImageTrackingConfigurationはたくさんのイメージを同時にトラッキングできる
  • 鮮明であったり、いいコントラスト、境界がはっきりしているのがトラッキングしやすい
    • この判断はXcodeが警告をだしてくれたりする

Object Detection

  • ARWorldTrackingConfigurationに新しく追加されていて、ARReferenceObjectをあたえてrunさせる
  • 3Dのassetを使わずにスキャンを行って、ARReferenceObjectに連携してくれるものもある

Face Tracking Enhancement

  • 視線や舌を出す行動といった情報が検知できるようになった
  • blendShapesにtongueOutというパラメータが追加された
  • ARFaceAnchorというのも追加された
    • leftEyTransform(左目座標変換)、rightEyeTransform(右目座標変換)
  • webからUSDZで配布もされている

SwiftShot

  • ARKit2を使って構築されたゲーム
    • 開発期間は2ヶ月ほど。
  • World空間を共有することで対戦ができる
  • なにもないテーブルなどでもゲームができる

Q&A

  • 技術的観点で気になった点はあるか
    • スムーズにお互いのセッションが確立されている
    • 反映もすぐ反映される
    • シームレスに空間が共有されているのはすごい
    • 今後ARゲームで使われると思うが、それ以外にも用途があると思う
    • 不具合らしいのは見当たらなかった
    • ゲーム自体が楽しかった
  • 今後OpenGLが非推奨になるのをみた。OpenGLの見通しみたいな意見はあるか?
    • OpenGLはAppleは廃止する気でいると思う
    • ARKitのいいところは、描画システムとは独立して動いている
    • すばやく使うと思えばSceneKit使えるし、カスタマイズしたければMetal使ったりなどできる

macOS Sneak Peek

  • iphoneはUIKit、macはAppKitとして作っている
  • AppKitはとても古い
  • macOSのほうがたくさんのバージョンがあり、機能もある
  • UITableView != NSTableView
  • UIKitとAppKitは完全に違う
  • 完全に違うのでiosからmacOSの開発はかなり時間かかる
  • macの開発は完全に別のアプリとして考えないといけない
    • modelのロジックは使えるが、UIは別世界
  • Daring fireballというイベントで、AppleがmacOSとiOSを同一化する計画をはなしてた
    • talk show liveで公式の名前はMarzipanじゃなくてSneek Peekという名前になった
  • 過去にはAppkitでiosと同じような挙動をするAPIを作る目論見は色んな人がやっていた
  • Appleも同じAPIにするのか?という質問に対してAppleは公式にしませんと発表
    • しかし、今後、macOS appはAppKitとUIKitも同時に使えるようにする
    • macOSの新しいアプリはiOSのアプリをそのまま移動した
    • 仕組みとしてはUIKitHostApp.xpcという別プロセスが動いて、UIKitを動かしている
    • →macOS MojavelでiOSが動かせる!
  • すべてのクラスがUIKitも対応している
    • popupもiosのように表示される
    • scrollviewはマウスになったりするといったところも自動的にmac対応される
    • iOSからアプリを出してそのままmacで実行できるようになる
  • AppKitではなく、UIKit
    • 別のプロセスでUIKitを実行して結果がAppKitに通知されているよう
    • まるでios simulator
    • 来年からサードパーティもだせるようになりそう
  • 試しにやってみたいなら、biscuitehh/MarzipanPlatter とかあるが、手順が大変

Q&A

  • timが作っているアプリ(iComics)はmacで使えるようになるか?
    • ユーザからの要望があったので今回のこれを使えば非常に簡単に出せそう

WWDC18 ML Overview

  • 機械学習のセッションだけでも9つもあった
  • アプリに組み込むのが現実的になってきた

Core ML2

  • 推論フェーズ
  • core MLは学習済みのモデルをアプリに組み込める
  • **.mlmodelというファイルフォーマットを使う
  • 一般的な機械学習で使ったものも使える
  • Core MLの問題としてモデルサイズがある
    • 数十~数百MBになってしまうのでサーバサイドで処理しようとなることが多い
    • Core MLがもってないコンポーネントを持ち込めない
  • CoreML2は問題解決にフォーカスしているように見える
  • 重みの量子化(weights quantization)、batch prediction、カスタマイズ性の向上

重みの量子化

  • 各ノードの間に重みを学習の過程に応じ値を調整する
  • 重みの数がとても大きくなるのでモデルのサイズも大きくなる
  • その対策として量子化を行った
    • 十分な量で表現していたのを小さく表現する
  • 32bitのデータを3bitで表現したりする。
  • 線形でmappingする他にも、Lookup Tableを用意してmappingもできる
  • 量子化をするとある程度精度は下がるのでサイズとの調整が必要
  • サンプル例では6.7Mから857Kになって、かつ結果はかわらなかった
  • 学習済みのモデルを使える
    • 何ビットで表現するか、どういうモデルでマッピングするかを指定する
  • 量子化のマッピングについて、線形以外にもkmeans、custom_lookup_tableなどいろいろ使えそう

batch prediction

  • 例えば100枚の画像に対して推論を行いたい場合、100枚全てにpredictionを呼ぶ必要があったが、batch predictionsを用いることで、GPUとCPUで混合することがあるが、GPUをハイパフォーマンスにたもったま処理ができる

customizable

  • サポートされていない形式の推論モデルをもちこめなかったが、カスタム定義をもちこめるようになった
  • CoreML2でカスタムLayerであると伝えて処理できるようになった

Create ML

  • macOS用の学習フェーズ
  • 複雑なニューラルネットワークを作る必要はない
  • create MLUIをつかうとプレイグラウンドを用いてドラッグアンドドロップでできる

転移学習

  • ある領域で学習した内容を別の領域で学習する
  • appleで定義したニューラルネットワークを使って個別の問題を学習している
  • 少ないデータでの学習が可能。学習にかかる時間が短くできる
  • create MLの場合はもとにする学習データがOS上に存在していて、それにもとづいてトレーニングして表現するためモデルが非常に小さくなる
    • しかしドキュメントには記述はみつからない…
  • 学習は1行でできる
  • Augmentationは画像を回転させたりしてデータの総量を上げるために使う

Turi Create

  • CoreMLのモデルを生成するパッケージ
  • しらなくても機械学習のモデルを作れる
  • create MLと同じで学習は1行でできる
  • 入力画像に対して、Styleに応じた画像を生成してくれるStyle Transferが可能に
  • 推薦に関して、タスクはサポートされていたが、MLModelの生成が可能に
  • Create MLはswift versionのTuri Createなんじゃないかという意見もあります

What’s new in Xcode 10.

General

  • UIのobjectを置く場所が変わった。
    • 右上らへんに引っ越しました。
    • Cmd+Shif+Lで表示
    • spotlightのようなビュー
    • optionおしながらやれば表示したままできる
  • ctrl+0でスキーマ選択できるようになる
  • ctrl + shift + 0を押すとシミュレータの切り替えができる

Source Editing

  • Source Kitの安定性が向上してEditorのクラッシュが減るらしい
  • Source code change barというのができて、gitのコミット状態がわかるようになった
    • 行数のところ並ぶ形で出るように。
  • 複数行を同時に編集できるようになった
  • code folding
    • 複数行コメントを縮められる
    • Preferences TextEditing…
  • callers option
    • cmd + クリックでオプション追加

Source Control

  • コンフリクト解消しやすくなった
  • rebaseオプションが追加された
  • ssh keyのuploadもできるようになった
  • bitbcuket, gitlabにも対応した

Debugging

  • device symbolのDLが早くなった
  • メモリデバッギングも進化した

Testing

  • ランダムな順番でのテスト実行
  • 複数のシミュレータをつかって並列実行できるようになった

Build System

  • swift 4.2
  • -Osizeも30%小さくなった

Asset Catalog

  • Darkモードが追加されたことで、画像まわりにもモードが追加された

etc

  • Darkモードの追加で今後、大幅にUIColorなどを書き換えないといけなくなって、Color Asset Catalogで複数のUIColorを書き換えられるようになるのではないかと。そうしたらiosもdark mode対応みたいな形になるのかもしれない

@mogmetの所感)

ARKitの進化にとても興味が惹かれました。
Swift Shotみたいな形のゲームを作れたらとても楽しめそうですね!

イベント後の写真もあげてくださりありがとうございました・・・!

mogmet

View Comments