Appleのエンジニアに聞いた日頃の疑問とこれからの話 - オンライン開催のWWDC20まとめ

opg

こんにちは。ZOZOTOWN部の荒井です。

memoji-arai

先日WWDC20が開催され、今年も弊社iOSメンバーが参加してきました。Apple Siliconや各次世代OSなど面白い発表が目白押しでしたね。

カンファレンスの内容も非常に興味深いものでしたが、今年は諸般の事情を鑑みて、初のオンライン開催となったことも印象的でした。

本記事ではWWDC20オンライン開催にあたり、ZOZOTOWN iOS担当のメンバーがどう臨んだのか、参加して感じた現地開催との相違点をお伝えします。また、Developer Labsに参加し、Appleのエンジニアと日頃疑問に思ってる点について話をしてきました。可能な範囲で内容を公開しますので、是非最後までご覧ください。

WWDC?

WWDC(Worldwide Developer Conference)は、Appleが年に1度開催している開発者向けのカンファレンスです。ZOZOテクノロジーズでは海外カンファレンスへの参加が推奨・サポートされており、例年当選したメンバーが業務の一環として参加しています。現地の様子は昨年の参加レポートをご覧ください。

techblog.zozo.com

オンライン開催にどう臨んだか

初のオンライン開催ということで事前情報が少なく、働き方も非常に悩ましいものでした。ここでは開催期間中の働き方、Developer Labs参加への事前準備について紹介します。

開催期間中の働き方

ZOZOTOWNのiOSチームは話し合った結果、以下のような働き方にしました。

  • 現地時間に合わせた日本時間2:00 - 11:00での勤務
  • 6月27日(土)を出社とし、6月22日(月)を休みに振り替え
  • 各自自宅からの参加

Engineering Sessionsはいつでも視聴できることが想定されていましたが、Developer Labsへ参加することを中心に考えていたため、現地時間に合わせました。弊社はカンファレンスへの参加が推奨されており、フルフレックス制度といった働き方にも柔軟性があります。ただし深夜勤務は推奨されていないためWWDC期間中のみ例外的な対応をしました。なお、WWDC期間中の業務は事前に調整しています。オンライン開催に限らず、希望し当選したメンバーは業務として全員が参加予定でした。

Developer Labs参加への事前準備

Developer LabsはAppleのエンジニアやデザイナーに直接質問できる貴重な機会です。WWDCに参加する醍醐味でもあり、効率よく参加するために僕たちのチームでは事前準備を行っています。以下の内容をチーム全員で共有し管理しました。

  • 質問内容
  • 業務との関連性
  • ラボ名
  • 参加者
  • 英文
  • 結果

この管理は例年行っていることですが、オンライン開催にあたり「1-on-1」「録音禁止」「英語のみ」といった開示があったため、今年はその点を考慮した内容となっています。結果10程度のラボに参加でき、有益な情報収集ができました。「英語のみ」については通訳係として当選者以外のエンジニアも参加できたので、言語面での不安も軽減できました。

当日になって質問を考えると漏れが発生したり、間に合わず申請できないといったことがあるため、今後Developer Labsへ参加を予定している方は事前準備をおすすめします。

開催期間中の動き

効率的な情報共有をするため、ルールを2つだけチームで決めて動きました。

  • Slackの専用チャンネルにてテキストでの情報共有
  • 1日に1回通話での情報共有

基本的にコミュニケーションの場を整える目的で、日報のような目的ではありません。各々がEngineering Sessionsを観たり、Developer Labsへ参加したり、サンプルコードを書いたりと自由に行動していました。Engineering Sessionsは後日でも閲覧可能であると確認が取れたため、2日目以降はEngineering Sessionsの優先度を下げていたメンバーが多かったです。

現地開催との相違点

今回のオンライン開催は現地開催と比べてどうだったのでしょうか。参加メンバーが感じたことを環境、セッション、ラボの観点でオンライン開催のメリット・デメリットをお伝えします。

環境

はじめに、オンライン開催と現地開催でどのような環境面の差を感じたかを紹介します。

  • メリット

    • 現地よりもネットワーク環境が良く、βのダウンロードや検証がスムーズ
    • みんなオンライン参加なので、同じPDTでの活動がタイムラインに流れてきて、例年とにぎやかさが全然違う
  • デメリット

    • 深夜開催なので音声に配慮が必要
    • 現地で見る方がモチベーションアップに繋がる
    • 移動がなかったため、ラボでいきなり英語をしゃべる落差がある
    • 他社のエンジニアと情報交換が難しい
    • 物販がない

発表された技術の検証はオンライン開催の方がやりやすいという意見がありましたが、モチベーション面は現地開催の方があがるという意見が多かったです。

Engineering Sessions

次はEngineering Sessionsです。

  • メリット
    • いつでも閲覧可能なので、何回も巻き戻したり、技術について話しあったりしてセッションが身近に感じられた
    • 日本語・英語字幕に助けられた時もあった
  • デメリット
    • オンラインだとライブ感がなく、参加者が何に注目しているのか掴みにくい

当日に何回も巻き戻して確認できるのはオンラインならではのメリットです。ただし「拍手」などのリアクションがないため、盛り上がりポイントが分かりづらいという意見もありました。

Developer Labs

最後にDeveloper Labsについての相違点です。

  • メリット

    • 予約制なのでAppleエンジニアも回答準備をしており、参考サイトの共有などもあった
  • デメリット

    • ラボに入り浸れない
    • 混んでいるラボ、空いているラボが判断できず、予約状況も分からない
    • 予約制なので手を動かしてもう一度聞きたい時にいけない

オンラインではすべてのラボが予約制のため、ラボに対する自由度は少なくなりました。繰り返し行くということがしづらいため、限られた時間内で問題解決しなくてはいけないことがデメリットの意見として多かったです。

個人で作業する分にはオンラインの方が効率的な印象を受けました。ただ、やはり現地参加の方がモチベーションも上がりやすくエンジニアとのコミュニケーションも活発になるので、現地開催のメリットは大きそうですね。

Developer Labs

ここからはDeveloper Labsで聞いてきた内容の一部を各メンバーが紹介します。Developer Labsでは業務に直結することを優先的に質問していますが、エンジニアがそれぞれ疑問に思った業務外のことも時間の許す限り質問しています。内容はAppleとのNDAのため、可能な範囲での紹介となります。

UICollectionViewとUITableViewのこれから

tosh

こんにちは、ZOZOTOWN部の小松です。例年のWWDCはKeynoteしか見ていなかったのですが、今回はセッションやラボに参加し、初めてのWWDCの全参加となりました。

今回のセッションをみていく中で、とあることに気付きました。UICollectionViewに昨年同様新しい機能が追加されていて、その新機能追加により、UITableViewで実装していたレイアウトがUICollectionViewでも実装しやすくなるとのことです。

「そうすると、UITableViewとどのようにして使い分けの判断をするべきか?」その疑問をAppleのエンジニアにぶつけるべく、UIKit and Build for iPad labへ参加することに決めました。初めてのラボでしたが、Appleのエンジニアの方は大変優しく、質問に対してとても丁寧にお答えいただいたのが印象的です。

今回質問した内容は以下の3つです。

  • UICollectionViewとUITableViewのどちらを使用するべきなのか?
  • UITableViewはDeplicatedになるのか?
  • なぜ、既存でUITableViewがあるのに、UICollectionViewListを作ったのか?

結論として、もし既存のアプリとしてUITableViewを使用しているのであれば、そのままUITableViewを使用し続けることには問題ない。しかし、新しいアプリを作るのであれば、UICollectionViewListが推奨なようです。今後はおそらく、UICollectionViewには追加されるが、UITableViewには追加されないであろう機能が増えていくであると思われるそうです。UICollectionViewListを使用するメリットは、複雑なレイアウトを容易に組むことができるようになることだそうです。たとえば、App Storeのアプリを参考にみてもらうとわかりやすいとのことでした。

以上を踏まえると、現状UITableViewを使用し続けることに問題はないが、より簡単にそして最新の機能を使うためにも徐々にUICollectionViewへと移行していくのが良さそうです。ただ、UICollectionViewListはiOS 13以上対応なので、今すぐにとはいかないところが難しい点ですね。

Appleのエンジンニアにxcresulttoolの使い方を教えていただきました

rin

ZOZOTOWN部の林です。

Xcode11からxcresultファイルを解析できるxcresulttoolコマンドが推奨されています。

View and share test results

ZOZOTOWNアプリでも今後テストを充実していくために、xcresulttoolを利用することが避けられないでしょう。xcresulttoolをもっと理解するために、Testing and Continuous Integration lab(25分)に申請を出して当選しました。

事前にサンプルアプリのUIテストを用意して、達成したいことを申請時に伝えておりました。xcresultからUIテストで撮ったスクリーンショットを取り出して、指定したフォルダに保存することを目標としました。そして、ラボ当日にAppleのエンジニアの指示を聞きながら、用意したxcresultの解析を行いました。

xcresulttoolでxcresultファイルから変換されたjsonファイルの確認方法、xcresultのツリー階層など、xcresulttoolについてドキュメントに記載されていない内容もたくさん教えていただきました。

情報を聞くだけではなく、コマンドの操作も教えていただいたので、欲しかった結果を得られた瞬間、一緒に仕事ができた気分になりました。自分にとって貴重な経験でした。

SideBarはハンバーガーメニューと違うのか?

edm

ZOZOTOWN部のえんどうです。

iPadのナビゲーションにSideBarが推奨されるようになりましたね。

しかし、WWDC 2014の「Designing Intuitive User Experiences」のセッションでiOSにはハンバーガーメニュー(a.k.a SideBar)は推奨しないとありました。ではなぜ、2020年では推奨されるようになったのでしょうか? そもそも、「ハンバーガーメニューとAppleのいうSideBarは違うものなのか?」ということが気になりラボで質問をしてきました。

結論として、SideBarとハンバーガーメニューは違うものという回答でした。その違いは「常に表示されているか」です。

ハンバーガーメニューは非表示のところからユーザーがハンバーガーメニューを表示しなければなりません、SideBarは常に表示されています。そのため、ユーザーはいつでもどこにいるのか見失うことはありません。

ナビゲーションでは、「何が見つけられるか」「どこにいるか」「どこにいけるか」が大切だと教えてもらいました。この考えは画面遷移を考える上でとても重要なことなので意識して気をつけていきたいと思いました。

Interface Builder and Auto Layout lab

ring

ZOZOTOWN部の名取です。

ZOZOTOWNではInterface Builderを多くの画面で使用しているため、特定のStoryBoardを複数人で開発する際のtipsを教えてもらいました。

複数のViewControllerが配置されたStoryBoardにおいてはXcodeのEditor→Refactor To StoryBoardを選択することで特定のViewControllerのみを切り出したStoryBoardを作成できます。

この機能によりコンフリクトの発生を幾ばくか抑えることができるため複数人で開発する際は推奨とのことでした。

また近年SwiftUIが大きな盛り上がりを見せていますが、Interface Builderが将来的になくなることはなくそれぞれが違う技術として共存していくだろうという話もされていました。

NotarizationとWatch FaceとXcode 11.4の静的リンクについてラボで聞いてきました

ZOZOTOWN部自称macOS担当の@banjunです。今年は10年に1度のウニ(・∀・∀・)バーサルyearでしたね(注:PPC→Intel移行のときの流行語)。私はAquaSKKなどのOSSのmacOSアプリをメンテしていることもあり、Universal App Quick Start Programにも参加しています。

ラボでは「**アプリとCLIではNotarizationチェックの仕組みと検証方法が異なる**こと(= 具体例では[SwiftBeaker](https://github.com/banjun/SwiftBeaker)を検証する方法)」「Watch FaceでサポートされているLive Photosのfps上限や、**Watch Face Sharingのシリアライズフォーマット**が公開仕様か」「Xcode 11.4で導入されている**静的リンクのビルド前チェックとApple Siliconとの関連**や今後のライブラリーの管理はどう変わっていくのか」などを聞いてきました。いずれの知見も次の開発に活かせそうです。

まとめ

今回はWWDC20の参加レポートをお伝えしました。オンラインは初の試みでしたが、チームとしては参加して成功だと感じています。リアルタイムで情報をキャッチアップすると共に、すでにZOZOTOWNではiOS 14への調査・対応も進めています。来年は現地でWWDCが開催されると良いですね。

さいごに

ZOZOテクノロジーズでは、一緒にモダンなサービス作りをしてくれる方を募集しています。ご興味のある方は、以下のリンクからぜひご応募ください!

https://tech.zozo.com/recruit/tech.zozo.com

カテゴリー