LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog

Blog


WWDC17 参加レポート

はじめに

こんにちは。LINEのiOS開発者のLee TaejeongとHur Hyukです。LINEでは、開発者がカンファレンスなどに参加して技術的な刺激が受けられるよう、参加チケット代、渡航費、ホテル代など諸費用を会社側よりサポートしてもらうことができます。今回の記事では、今年6月5日から同9日にかけ米サンノゼコンベンションセンターにて開かれたカンファレンス「WWDC17」の参加レポートをお届けします。WWDCは、カリフォルニア州で毎年6月に開催されるApple社主催の開発者向けイベントです。カンファレンスでは、ティム・クックCEOのKeynoteスピーチを皮切りに、Apple社の新しいソフトウェアと技術をいち早く経験できる100以上のセッションと、200以上の「ラボ(Labs)」が5日間にわたって繰り広げられます。昨年まではサンフランシスコで開かれていたWWDCですが、今年は15年ぶりにシリコンバレーの中心部でApple Infinite Loop、Apple Parkが所在するクパチーノ市のお隣の町、サンノゼ市で開催されました。今年の参加者規模は計75カ国から集まった5,300人。イノベーションの象徴ことApple社からお披露目されたワクワクする発表内容の数々をお伝えしていきます。

WWDC17

Keynoteスピーチ

「Good morning!」

ティム・クックCEOの挨拶とともに幕開けとなったKeynoteスピーチでは、tvOSを筆頭にwatchOS、macOS、iOSに追加された様々な新機能について紹介されました。

今年のWWDCにおける最大のテーマは、AR(augmented reality、拡張現実)とML(machine learning、機械学習)。ARKitを利用して、iOS端末での拡張現実がより手軽に実現できるようになりました。また、新フレームワークの「Core ML」は、ML機能を提供してよりスマートなアプリの制作をサポートします。何となく敷居が高そうなARやMLですが、これらのフレームワークを利用すると簡単に実装できるということです。それをいかにしてLINEにつなげていくか、想像するだけでワクワクする時間でした。

新しいmacOSの名前はHigh Sierraです。macOS High Sierraは、APFS(Apple File System)を採用したことで新しいレベルのセキュリティと反応の速さを備えたアーキテクチャーを実現しています。さらに、4K動画の人気がますます高まっている中、macOS High SierraもHEVC(High Efficiency Video Coding)を採用して動画の圧縮効率が従来より最大40%向上しています。お陰でより短時間で写真や動画が送れるようになりました。なお、GPUの利用効率の大幅な向上を実現する「Metal 2」についても発表されました。

iOS 11は、iPadのためのOSといっても過言でないほどiPad向けの機能で盛りだくさんです。macOSユーザならすでにお馴染みの「Dock」やアプリ間の情報共有をより容易にする「Drag and Drop」機能を追加したことでマルチタスク機能が一層充実し、iPadの大画面をさらに有効活用できるようになりました。手書き入力認識やドキュメントスキャンなど、「Apple Pencil」用の機能も強化されました。他にも、ロック画面、コントロールセンター、App Storeのデザイン変更、ライブフォト編集、Siriのアップグレード、個人間送金ができる「Apple Pay」などの機能が追加されています。

今年のKeynoteスピーチでは、新しいハードウェアのラインナップも紹介されました。その中で特に目立ったのが、12月発売予定の家庭用スピーカー「HomePod」です。オーディオ機能において、他の人工知能スピーカーと違ってサウンドバランスが最適化されているということです。他にも、iMac Pro、10.5インチモデルが追加されたiPad Pro、AR&VR(virtual reality、仮想現実)コンテンツの開発・テストをサポートする「External Graphics Development Kit」の紹介もありました。

Platforms State of the Union

WWDCにおいて人々の注目度が断然高いのはKeynoteスピーチ。一方で、開発者の関心が最も高いのは二つ目の全体セッションである「Platforms State of the Union」といえます。その年のWWDCで紹介されるあらゆる内容が網羅されていて、Keynoteで触れていない内容について紹介されました。続く各セッションの内容が予めつかめる重要なセッションです。

今年のテーマは「Technology and Refinements」。その文面から、これまで生み出してきた技術の改善に重きが置かれていることが伺えます。今回は、iOS、macOS、watchOS、tvOSの順で様々な機能が紹介され、ソフトウェア開発者からの注目を集めました。

64-bits Requirement

2014年10月、Apple社はiOS App Storeから32ビットアプリへの非対応を公表しましたが、これからはmacOS App Storeにおいても32ビットアプリはサポートされなくなります。2018年1月の新規登録アプリから適用し、同年6月にはアップデートされるアプリを含めすべてのアプリに適用されます。High Sierraは、32ビットアプリに対応する最後のmacOSになるわけです。

Swift Playgrounds 1.5, 2

プログラミング学習アプリに対する要求から生まれた「Swift Playgrounds」に関するセッションです。バージョン1.5では、同アプリを利用してドローンなど様々なデバイスの制御が可能になった上、いくつかの機能改善が行われました。Swift 4の登場とともにさらに多くの部分が変更されたバージョン2も今年秋のリリースを予定しています。

Xcode 9

新しくなったソースエディタとともにさらにパワーアップ、スピードアップしたXcodeの新しいバージョンについて紹介されました。しばらくの間ちゃんと動いているのか疑わしかったリファクタリング機能も、新しく完全復活しています。そしてSwift 2.3が一緒に公開された昨年のSwift 3公開時と同様に、Swift 4もSwift 3.2と同時公開され、二本柱戦略で展開されます。ストリング処理が高速化され、絵文字に端を発するストリングサイズの問題が片付いた上、Codableという新しいシリアライズ機能も追加されています。

LINEのようにObjective-CとSwiftとが混用されていてコード量の膨大な巨大プロジェクトの場合は、ビルド時間も大きな問題ですが、その時間を40%短縮したそうです。Indexerについても、インデックスに要する時間を35倍縮めているので時間の無駄を大幅に減らせそうです。ビルドシステムは完全に作り直されていて、実行スピードが速くなったとのことでした。そして、GitHubとの連携という予想外の発表もありました。LINEでもGitHubを使用していますので、早速連携してみて気になるところについてはラボに問い合わせました。さらに、View Debugger、Sanitizerなどのデバッグ分析も改善されました。CI(continuous integration、継続的インテグレーション)のためのXcodeサーバーは、いまやXcodeに統合されています。シミュレータも改善されていますが、複数のシミュレータを実行できる上、サイズ調整も簡単にできるようになりました。

最後を飾ったのは「ワイヤレス開発」です。ケーブルなしでデバイスで実行できるようになったということですが、机周りのゴチャゴチャしたケーブル類ともおさらばですね。今年のWWDCで一番気合を入れていたアップデートのようです。

Drag and Drop

iOS 11への「Drag and Drop」追加で、ユーザに新しいUXを提供できるようになりました。GestureRecognizerが登場したときもそうでしたが、これは一見簡単そうに見えて実は複雑な機能です。それを簡潔なAPIできれいにまとめているという印象を受けました。iPhoneアプリ内でも動くため、LINEでも様々なところに活用できそうです。関連した別のセッションにも参加したのですが、期待を感じる一方で、Apple社から宿題を出された気持ちでした。

UI Refinements

UI分野では、large title display navigation barとdynamic typesについて発表されました。多様化した画面サイズに対応するための取り組みのようです。LINEとしては旧バージョンiOSへのフォローもあるため、デザイナーと膝を突き合わせて対応策を工夫することになりそうです。

Files App

iPad専用と思っていた「Files」アプリ。iOS向けにリリースされた「Files」をLINEと連携すれば、アプリ上でMicrosoft OfficeやPDFなどのドキュメントファイルを簡単に閲覧でき、便利なユーザエクスペリエンスの提供につながりそうです。

What's New iOS 11

一枚の画像にまとめられたiOSの今回の新機能。その数はかつてほどではないにしても、機能自体はより強力なものになっています。

iMessage

私はLINE messageの開発担当として、iMessageについては常に関心を持っています。今回は送金機能が追加されていますが、その機能はLINEでも十分参考にできると思いました。

SiriKit

WWDC16以降、LINEもSiriKitを適用しました。今回のアップデートで、Siriはユーザの関心事や意図をより正確に認識することができるようになりました。LINEとしてもこれまでよりさらに多くの情報が参考にできそうです。

Camera App

これからは、カメラアプリを使ってQRコードを直接読み取り、Universal Linksを利用してアプリを開くことができます。LINEではQRコードを使った友だち追加とUniversal Linksの両方に対応していますので、それらの機能が正しく動作するかどうかを確認するだけでいいと思います。

HEVC, HEIF

H.265と呼ばれるHEVC(High Efficiency Video Coding)のサポートを本格開始します。ImageIO、Core Image、AVFoundation、PhotoKitにおいても、古くなったJPEGの代わりにHEVCを利用したHEIF(High Efficiency Image File Format)をサポートします。LINEでも画像と動画はたくさん使われていますので、導入を検討する必要はありそうです。

Depth API

iPhone 7 Plusで提供される撮影モードであるポートレートモードの被写体深度(Depth)エフェクトがAPIで公開されました。開発者たちはAVCapture、AVDepthData、ImageIO、Core Imageからアクセスすることができ、HEIF形式で保存して後で編集できるようになっています。カスタムフィルターの適用例も紹介されましたが、是非使ってみたくなる、想像力を刺激する機能でした。

Vision Framework

機械学習フレームワークであるCoreMLをベースにしたVisionフレームワーク機能が紹介されました。Face and Landmark Detection、Rectangle Detection、Text Detection、Barcode Detection、Object Trackingなど様々な機能を提供します。

CoreML - Metal for Machine Learning

アクセラレーション・フレームワークとMPS(Metal Performance Shaders)をベースにしていて、VisionとNLP(natural language processing、自然言語処理)でも使われるCoreMLについて紹介されました。CPUとGPUを適宜組み合わせて使うとスピードが向上します。外部のオープンソース機械学習フレームワークにも対応しているなど、さらに利用しやすくなりました。

Metal 2

GPUアクセラレーション・ライブラリである「Metal」がバージョン2にアップグレードされました。Apple APIでもMetalを利用してGPUを使っているらしく、GPU駆動レンダリング方式でオーバーヘッドを抑えることでパフォーマンスを上げているそうです。また、iOSとmacOSのAPIフォーマットを統一するなど、不揃いな部分もだいぶ改善されていました。

VR

このようにパワフルになったMetal 2を利用したVR開発が強調されました。Stream VRをはじめ、Unrealエンジン、Unityエンジンをサポートします。特に、外部GPUにも対応します。なお、開発者向けのeGPU Developer Kitも販売するそうです。Apple社の製品は発売初期の価格が一番魅力的ですね。一セット買っておきたいです。

ARKit

Metal 2を利用したもう一つのユースケースとして、ARKitが紹介されました。対応端末には制限がありますが、「visual-inertial odometry(視覚慣性オドメトリ)」や「scene understanding(シーン理解)」といった便利な機能がサポートされます。これらを活用してどのようなユーザエクスペリエンスが提供できるだろうかと、自分の中で模索の時間が続きました。

何でも聞ける「ラボ」

セッションで発表を聞いていると、いろいろな疑問がわいてきます。普段開発中に解決できなかった不明点もたくさんあります。そんなとき頼りになるのが、「ラボ」です。会場の一角に設けられているこのラボは、Apple社のエンジニアと直接会って質問できるスペースです。私たちもWWDCに参加する前、普段気になっていたことを整理してラボを訪ねました。そこで質問した内容をいくつかご紹介します。

  • 新しいXcode 9とGitHubが連携されましたが、SSHアドレス使用時にカスタムポートが使えない問題がありました。幸い、XcodeラボでGitHub関連セッションの発表を行ったエンジニアに会うことができ、直接聞いてみました。Apple社ではすでにこの問題に気付いていて、今後アップデートによって改善する予定だそうです。
  • iOS 9.3.2以降において、LINEユーザから「勝手にログアウトされる」という不具合報告が寄せられています。その原因を追跡した結果、アプリ起動後にUser DefaultsというiOSのストレージから間欠的にデータが読み込めなくなっている状態であることが分かりました。 WWDC17のCocoaラボにその理由と解決策を聞いてみたところ、バグであり、iOS 11にて修正が完了しているという回答が得られました。
  • また、UIApplicationDelegate.application(_:didFailToRegisterForRemoteNotificationsWithError:)というAPIがありますが、Apple社のエンジニアに呼び出しのタイミングについて聞いたところ、「APIの内容は分かっているが、実際呼び出されるのを見たことは一度もない」という話でした。
  • 今回iTunes Connectに新しく導入される「Phased Release」について知りたくて関連ラボを訪れました。すでに多くの人が同じテーマで質問するため集まっていて、自然にグループディスカッションのようなものになりました。そこで出た主な質問は、Phased Releaseの比率をより細かく調整できるのか、そして特定ユーザ層をターゲットにしてPhased Releaseを実施できるのか、という内容でした。残念ながら今のところいずれも対応していないとのことですが、似たような意見が多かったので今後の改善に反映するという回答がありました。

「ラボ」というスペースは、Apple社のエンジニアと技術について踏み込んだ話のできるいい機会を与えてくれました。すぐに解決しにくい難題についてはApple社のバグ報告フォームで問題を登録して伝えることができ、追加してほしい機能についてはエンジニアに直接提案したりもしました。ラボはテーマによって時間が決められており、長時間待たされる場合もあるので、興味のあるテーマについては事前にスケジュールをチェックして訪問することをお勧めします。

WWDC参加ガイド

千里の道もWWDCアプリから

WWDCのチケットに当たったら真っ先にやるべきは、App Storeから WWDCアプリをダウンロードすることです。WWDCアプリからセッションスケジュールやマップ、各種お知らせ・イベント情報を確認することができ、セッション終了後には動画で再視聴することもできます。Keynote以外のセッションについては、Keynote終了までほとんど公開されません。そこで、スケジュールが発表される前に今年はどんなセッションが用意されているかを予想してみるのも楽しみでした。

WWDCが初めての方へ~チェックイン

WWDCは月曜日に始まりますが、チェックインは前日の日曜日午前9時からできます。月曜日のチェックイン時間は午前7時からです。もし、Keynoteを前方の座席で聞くために早朝から待機予定の方は、前日に予めチェックインしておくことをお忘れなく!

チェックインの際にはApple社スタッフの熱い歓迎を受け、カンファレンス期間中に持参する参加パスと年齢確認用のブレースレットをもらいました。今回は、開催年度が大書きであしらわれていたこれまでのジャケットとは違い、リーバイスのかっこいいデニムジャケットや国を表すピンバッジ、ランダムのピンバッジ6種がグッズとして配られました。また、カンファレンス期間中にあちこちで様々なピンバッジを配る抜き打ちイベントが行われ、そのバッジを集めるのもなかなか楽しい経験でした。

早起きは良席確保の徳?~Keynote開始まで

Keynoteを前の席で聞こうと朝4時にホテルを出たにも関わらず、会場前はすでに開発者の長蛇の列ができていました。簡単な持ち物検査を受けた後、スタッフの歓声と拍手に包まれながらようやく会場入り。そして入場とともに、一気に席取り合戦が始まります。そこであまり迷っていると席を全部取られてしまうので、空いている席を見つけたら速やかに着席することをおすすめします。

ちょっと一息はいかが?~休憩スペースと「ザ・カンパニーストア」

長く続くセッションで身も心もヘトヘト。そのときは、会場のあちこちにある休憩スペースでリフレッシュすることができます。今年はサンノゼコンベンションセンター全館貸切で行われただけに、休憩スペースもとても広々としていました。ふかふかのソファとベータ版を高速にインストールできるハブテーブルも十分に配置されていて、いつでも気軽に利用することができました。また、おやつタイムにはコーヒーやお菓子、果物などが用意され、小腹がすいたときのお助け役となりました。

休憩スペースの一角には「ザ・カンパニーストア(Apple本社内のApple Store)」も出店していて、同社ロゴ入りのTシャツ、ジャケット、ボールペンなどのグッズを買うことができました。

おわりに

世界各国から集まった5,000人以上の開発者がApple社のエコシステムの中で開発のことだけに集中できた、まるで夢のような一週間でした。参加者全員で技術について熱くディスカッションし、真剣に研究している姿は、大きな刺激となりました。次回カンファレンスではまたどのような新技術が披露されるのか、今から期待が高まります。LINEでも、たくさんの開発者が同カンファレンスのセッション内容とサンプルコードを参考にして様々なアレンジをしています。近いうちにユーザの皆様をあっと驚かせるような斬新で素敵な新機能をご提供できるように努めてまいります!

出典・レファレンス