WWDC15 参加レポート Day2 ラボに行ってみた編
大島 雅人
こんにちは、大島です。
6/8から1週間WWDC15に参加してきました。今回はラボに行ってみた編としてセッションだけではなくラボの様子も含めて、引き続き2日目の様子をレポートしていきたいと思います。
前回までの記事はこちら。
セッション
1日目はKeynoteなどメインルームでのみ行われていましたが、2日目からは複数のルームに分かれてセッションが行われます。これらセッションの内容については、例年1日目が終わった後一斉に発表されます。また、各セッションルームはサンフランシスコにちなんだ地名になっており、
メイン | Presidio |
---|---|
サブセッション | Mission |
Nob Hill | |
Pacific Heights |
となっています。
セッションは9時から開始なので、その少し前に会場に入ったのですが、Presidio前には想像以上の長蛇の列が……( ゚Д゚)。セッションルームに入れる頃には終わってしまうんじゃないかというぐらいの列でした。。
失敗したなーと思いつつ、諦めて今日はどのセッションを見ようか考えながら1階に朝食のパンをもらいに行きました。
すると、なんと、1階でサテライト会場のような感じでPresidioで行なわれているセッションが中継されていました!中継されているディスプレイは100インチ近くもある巨大なモノで、最前列並みの近さで見ることが出来、さらに同時に英語字幕も表示されます。ソファーで足を伸ばしながらパンを食べたりコーヒー飲んだり・・わざわざ現地に来たのにセッション会場で見ずにサテライト会場で見てるというのもどうなのかと思いますが、個人的には最高の環境でした笑。
モスコーニセンター内のCompany Store
2日目になると、モスコーニセンターの2階にApple本社のCompany Storeが出店されます。ここではWWDC15オリジナルのTシャツやキャップ、Appleロゴ入りTシャツなどが販売されます。最終日になると売り切れ多数だったので、欲しい場合は早めにチェックしに行った方がよさそうです。
ラボ
WWDC期間中はラボといって、様々な分野のAppleのエンジニアに直接コードを見てもらったり、新しいフレームワークの使い方を気軽に尋ねることができます。現地にいるメリットはセッションではなくラボに行けることだというアドバイスももらったので勇気を出して行ってみました。
まずは、Swift Labで簡単な質問をしに行ってみました。
Swift Lab
質問内容自体はほとんど参考になるようなものではありませんが、こんなことでも質問を聞いてもらえるという気づきになれれば幸いです。私は口頭の英語で説明できる気がしなかったので、playgroundにコードとコメントを書いてそれを読んで質問をしました。
質問1. Swiftでクラスを作るときはNSObjectを継承するべきか?
/*
Which one should I use a root class or a subclass of NSObject?
*/
// 1. root class
class Dog {
}
// 2. Subclass of NSObject
class Cat: NSObject {
}
回答として、
状況によるけど、Objective-Cから使う予定がなければNSObjectは継承しなくてもOK
という風に聞き取れました。あっさりした答えだなと思いましたが、実際はもっと細かく教えてくれていて私が聞き取れなかっただけかもしれません。
質問2. init内でメソッドを使いたい場合どうするか?
class Cat {
let name: String
init() {
// I can't use private function before property initialization
// name = generateName() -> Error
name = Cat.generateName()
}
private static func generateName() -> String {
let str = "masato"
return str
}
}
init
内で初期化処理をメソッドに切り出したいときに何かスマートな方法はないかということを質問してみました。結局、
static
にしてクラスメソッドにするしかない
ということになりました。また、質問したエンジニアが、「ボクはあんまりSwiftに詳しくないので……」と言いつつも、他のエンジニアに聞きに言ってくれたりととても親身になってくれました。
Cocoa Touch Lab
弊社でRMPZoomTransitionAnimatorというiOSのカスタムアニメーション遷移のライブラリを出しているのですが、UINavigationController
のエッジスワイプでカスタムアニメーションしながら戻るというトランジションが実装できていません。エッジスワイプでトランジションを開始したあとキャンセルするときの処理をどう実装すれば分からなかったのでそこを聞いてみました。
今回は質問する英語を用意せずにコードだけでラボに突っ込みました。シミュレータで動作しているところを見せればきっと分かってもらえるだろうと思っていましたが、全く伝わりませんでした。「分からない部分はどこですか?」と質問され、I... cancel transition, but dissapear...みたいなどうしようもない英語でしか説明しかできずに2人の間に沈黙が流れました。。
それでもAppleのエンジニアの方はあきらめずにコード上にブレイクポイントをつけたり、ブレイクポイントでログを出したり丁寧にデバッグしてくれて、最終的には実装のヒントをもらうことができました。ただ、向こうは親身になって英語で説明してくれるのですが、こちらはどうしても聞き取れず申し訳ない気持ちでいっぱいでした。
昼飯
「もう会場が用意する食事はイヤだ」ということで、外に食べに行きました。WWDC 2015 Attendee ListのSlack上でオススメされていたSuper Duper Burgersという有名なハンバーガーチェーン店です。肉もジューシーでおいしかったです。
User Interface Design Lab
Appleのデザイナーが直接アプリのUIをレビューしてくれる人気ラボです。なんと、開場の2時間ぐらい前から並ばないと整理券がもらえません。また、WWDC期間中に1度しか受けられません。今回は弊社の料理サプリについてレビューをしてもらいました。
質問1: 複数のジャンルを表示するアプリについて
料理サプリでは、様々なジャンルのレシピをスクロールできるタブ形式で表示しています。このUIはAndroidでは標準で用意されていますがiOS標準のSDKとしては用意されていません。用意されていないということは、AppleはこのUIを推薦していないという意図があるのかと考え、質問してみました。
回答としては、推薦していないということではないということでした。ただし、料理サプリの場合はタブを切り替える際に上のタブと下の画面が離れて動いているので、標準のカメラアプリのようにコンテンツ部分とコントローラー部分が同時に動いた方がいいというフィードバックをいただきました。
質問2: ドロワーについて
ドロワーのようなメニューUIも標準のSDKでは用意されていません。このようなUIも避けるべきなのかを訊いてみました。
これも使うことは悪いことではないと言っていました。ただし、
blur
で後ろを透かして今いる状態が一時的な状態であることをユーザーに知らせるようにすると良い
というフィードバックをいただきました。すぐに戻れるということが分かるように、iOSのステータスバーから出てくる通知画面も参考にしてくださいと言ってました。
質問3: スワイプして別タブに移動するというアクションについて
スワイプで別ジャンルのタブに移動するUIというのはなかなかユーザーに気づいてもらえないため、どのように解決すればよいか、そもそもそういうアクションは入れるべきではないのかを聞いてみました。
これもやってはいけないという訳ではないとのことでした。ユーザーに気づいてもらえるようにするには、例えば、最初の表示時にちょっとずらした状態からスタートし、アニメーションしてカチッとはまるようにタブを表示するのはどうかとアドバイスをもらいました。さらに、毎回このアニメーションを入れる必要はなく、ユーザーは何回かそれを見れば学習すると思いますとも言っていました。
あるいは弊社の英単語サプリで採用しているような、表示部分はカード型のコンテンツにし左右のコンテンツが少し見える状態にして表示しておきます。そして、まさにiPhoneのホーム画面のようにPageControlも置くことでユーザーは自然とスワイプできることに気づくことができると思うと言っていました。
全体的なコメント
最後にアプリ全体に対してフィードバックを頂きました。アプリ内の各種ボタンのアイコンはとてもきれいで素晴らしいと評価していただきました。料理サプリでは気に入ったレシピをクリップできる機能があり、そのアイコンは文房具のクリップになっているのですが、クリップはメールの添付ファイルのような感じがしてメニューの意味とアイコンが合ってないのではないか?というフィードバックもいただきました。外国の方ならではのフィードバックだなと参考になりました。
まとめ
この日はセッションは1Fのサテライト会場で見つつ、合間にラボに行ってみました。Appleのエンジニアは本当に親身になって聞いてくれるので英語ができない方でも文面やコードなどを用意していけばコミュニケーションがとれると思います。それでもやはり英語はできるようになりたい・・という気持ちにさせられる経験でした。