初めまして!アカリクインターンのU田です。

今回、参加者が300人を超えたiOSエンジニアのイベント『ヤフー vs クラスメソッド iOS 炎の7番勝負」に参加してきました!


57a89e1a1fdd78cca4310ed8e142f51a

 










昨年、
iOS7が公開され、最近ではさまざまな企業様によって勉強会が開催されています。

 そんな中、登壇者14名、参加者300名と大規模な勉強会が225日開催されました!

本日はその概要と、当日の模様をお伝えしたいと思います!

 
 

イベント要点まとめ 

 

イベントの対象者はiOSアプリ開発に関わるエンジニア、デザイナー。
イベント告知は開催の約2週間前でしたが、イベント公開と同時に応募が殺到し、急遽枠を増設するほど開催前からエンジニアの間では話題になっていたイベントです!
しかも、通常のイベントとは違い一般参加費が1000円に対して、学生は当日学生証提示で参加費が無料となり、学生でも敷居が低くとても参加しやすいイベントとなっていました。

僕は
18:40頃会場についたのですが、もう既に会場の7割ぐらいは埋まっていました!笑すごい熱気!

イベントは、クラスメソッド社長の大橋さんの開会の言葉と乾杯の音頭によって開始。

イベントの形式としては、ひとつのお題に対してヤフー、クラスメソッドの社員さんが一人ずつ持ち時間
5分のLTをし、どちらがおもしろかったかといことで勝負するという形式でした。

そして、その勝負の決着をつける方法がこれ!


40

 






CED5E9E4-9172-4E15-AD1B-D4486D64028D

























登壇者が
LTしている最中、おもしろいと思ったら下にある「イイネボタン」を押すことで、イイネの押された数、秒間によって会場の左側にある登壇者のアイコンが映ったスクリーン上でイイネが弾け飛ぶというなんともユニークな方法です。
そして、そのイイネ数によって勝敗が決まるという形式でした!

とてもおもしろい方法だとおもったのですが、実際始まってみるとおもしろい話ほど聞き入ってしまって、イイネをほとんど押せないままタイムアップになることも。笑

イベントの会場はこのような感じです。
 

40D2D2C3-96B2-4424-93EB-6F2055B50902

 

 











ヤフー株式会社とクラスメソッド株式会社の合同イベントは今回が初回ということにも関わらず、質の高い
LTと参加者の熱気でとても内容の濃いイベントとなりました。


【第
1回戦】「スピード向上」

開発スピードを上げるためには、どのようにすればいいのか、という点についてヤフー株式会社の平松さんとクラスメソッド株式会社の平井さんにLTしていただきました。

以下、LTの要点です。

まずは今回のイベントの企画者でもある平松さん。


xcode index
の効率を10倍あげるにはblocks
の処理を早める必要。

おすすめするツール
code snippet
Dash(http://kapeli.com/dash)
Xcode Template

 

これでみなさん、毎回毎回ググったりしなくても平気ですね。あ、ヤフったりしなくても平気ですね。(会場爆笑)


対する、モテたいということで
iOSエンジニアになった平井さん。

Storyboard Identifierのコード補完が無くて毎回困っていた。
自分でXcodeプラグイン作ろう!


Xcode
のプラグインは誰でもその気になれば作れます。
便利なXcodeプラグインまとめ
(http://qiita.com/CarmineScarlet/items/59745e26584a00ddfba3)



始めから、クオリティーの高い
LTもあり、会場には笑いと感心の声が入り混じっていました。


【第
2回戦】「小ネタ集」

このテーマでは、開発時実際に使っている小ネタを、ヤフー株式会社の佐野さんとクラスメソッド株式会社の諏訪さんにLTしていただきました。

kuras
の開発者でもある佐野さん


UIview
を使いやすく!
予備知識
・プロパティはアクセサメソッドの略記法
・カテゴリで勝手にクラスを拡張できる
これらを使いこなせば、より直感的なコードを書けるようになる!


NSnull
を黙らせる
こちらは結構力技な感じがします。笑


どちらも
Git上にあるので要チェック!



iOSだけでなくAndroidの開発、企画、デザインも行っている諏訪さん。

Asset Catalogにまつわる今すぐ使えるTips集の紹介

Launch image
・起動画面に使う画像をAsset Catalogで指定する方法
Xcode5からLaunch Imageをつかって指定できる。
・この画像、ソースコードからは普通にはアクセスできない

Slicing image
・伸縮する画像に対して、画像の一部を固定サイズにしたまま伸縮させる機能
Xcode5からAsset Catalogで画像のスライス指定が可能に。

Non-Glossy Icon
iOS6までのアプリアイコンは非光沢アイコンにできる
Xcode4まで使えたicon already includes gloss effectsは効かなくなった
Asset Catalogではプロパティで変更する



【第
3回戦】「デザインパターン」

このテーマでは開発時のデザインパターンについて、ヤフー株式会社の西さんとクラスメソッド株式会社の掛川さんにLTしていただきました。

ヤフオクアプリの開発者の西さん。

Gang of FourSingletonを使いこなそう!
しかし、Singletonは使いやすいが、どんどんオブジェクト同士の依存性が上がり、単体でのテストができなくなる。

Singleton
パターンが悪いわけではなく、静的に呼び出していることが問題!
静的に呼び出している事のデメリット
・オブジェクトに依存関係が発生する。
・単体テストで前テスト状態を引き継いでしまう
・再利用、継承できない。

このデメリットを解消するために、
Typhoonを使うことで依存性を注入し、静的な呼び出しを解消する。



様々な受託開発に携わっている掛川さん
View Controllerから本来記述する必要のない処理を切り出す。

Fat
View Controllerの問題点
・責務が多すぎる
・大量のイベントハンドリング
・ロジックの再利用が難しい

情報の開示に関連しない機能を切り出そう!
・機能を画面に紐づくクラスで管理したくない
・同じ関心事に関する処理を一ヶ所にまとめたい

View Controllerはビュー階層に代わって中心的な調整役として機能しビューとコントローラーまたはデータオブジェクトの間のやり取りに対処する。
つまり、View Controllerは自身が参照するオブジェクトの間の仲介役の役割をはたし、そのオブジェクトは互いの存在に対して意識しない!
   

【第
4回戦】「デザイン」

このテーマでは、エンジニアがUIUXをどう考えるべきか。という点についてヤフー株式会社の佐藤さんとクラスメソッド株式会社の平屋さんにLTしていただきました。

まずは
Yahooショッピングやメッセンジャーの開発担当だった佐藤さん。

アプリエンジニアの役割
→アプリにはUIとロジックの境界線がないため、アプリエンジニアが細かい実装まで責任を持つ

1px
までこだわりをもとう
・「動けばいいじゃん」はダメ
・デザイナーの要求に細部まで応える

積極的に提案していこう
・アプリで何が出来るのかの意思疎通
・個人的な概念の押しつけはダメ

密なコミュニケーションが大事
・実装、確認、修正のサイクル(特にアニメーション)



そして社会人一年目の平屋さん。

プリのデザインは使用される状況を見越し、効率がいいものであるべき。

「効率の良いデザイン」とは?
・少ない操作で目的の画面にいける
・素早くタスクを完了できる
・視覚的にシンプルである 

「効率のよいデザイン」にするには?
・対象となる作業を絞り込み、特定の場面に焦点を当てる事で機能を絞り込む。




【小休憩】
ここまで、かかった時間は約45分。
ひとりひとりのLT時間が5分と短いため、とてもスムーズに回転がよく進みました。

唐揚げやサンドイッチが大量にあったのですが、イベント開始の時点ですべてなくなっていたので、スタッフの方がピザを追加で注文してくれていました!こちらも一瞬で消えていました。笑

 

S__33890369

 

 

























【第
5回戦】「iBeacon

このテーマでは、iOS7になって新しく搭載された機能、iBeaconついてヤフー株式会社の羽田さんとクラスメソッド株式会社の荒川さんにLTしていただきました

お二人は来年度入社の内定者ということで、現在まで学生でインターンとして働いていたという経歴をお持ちです。

先日大学の修士論文の発表をしてきたという羽田さん

iBeaconとは、iOS7から導入されたBluetoothを使った近距離通信システム。
セキュリティの問題が難しく、情報の悪用を阻止について検討が必要。

iBeacon
導入例
・ドジャーススタジアム内の飲食店の入店を検知しクーポン配布(http://japanese.engadget.com/2014/02/17/mlb-ibeacon-ios/)
・小売店におけるキャンペーンや施策をアポートするプラットフォーム SWIRL(https://www.swirl.com/)
Beaconの提供と開発支援 happubeacon (http://happybeacon.com/en)

端末は、
MaciPhoneだけあれば誰でも使える!
今後、様々なウェアラブルデバイスとの連携もできると可能性は無限に広がる!





こちらも学生の荒川さん


※内容が先攻の羽田さんと被っている部分は省略させていただきます。

iBeacon
の出来る事
Beaconの範囲内に入った/出た時なにかする
Beaconからの情報を毎秒検知してなにかする

iBeacon
の出来ない事
GPSのようにデバイスの位置情報を特定する
Beaconからの正確な距離を取得する
・情報を覗き見できないようにする

開発するにあたって、最低限必要な情報
UUID(企業区分)
major(施設区分)
minor(店舗区分)
Beaconの設置位置、配置

利用シーンによって設置数や配置場所が変化するため、綿密な実地検証が必要。



【第
6回戦】「失敗談/バッドノウハウ」

このテーマでは、今まで実際に経験した失敗についてヤフー株式会社の塚越さんとクラスメソッド株式会社の安達さんにLTしていただきました。

ヤフオクアプリ開発者の塚越さん

最近多いReject
・広告表示していないのに広告Libraryが入っている
・企業の名前がそのまま入っている
・キーワード、タイトルが被っている

突然の
Reject
に対処したい。
→最近のイベントでRejectを学習するアプリを作ってみた。

みなさんで
Reject
を蓄積し、共有していきましょう!



まだ入社して
3ヶ月という安達さん

Unit Testの利点
・ヘッダのコメント等では把握しきれない挙動も把握できる
・画面表示せず、⌘+Uのみで挙動を確認する事が出来る
・副作用を含まないコードに貪欲になれる

kiwi
の利点
・テストメソッド名を毎回英語で考えなくてもよい
・テストケースを対象ごと、文脈ごとに区切れる

サーバーと切り離して非同期ユニットテスト
→実行されない

kiwi
非同期ブロックパンドラテストの注意点、改善方法
・ブロック内で結果を取得、ブロックの後で確認
expectFutureValue shouldEventuallyを使う



【第
7回戦】「フリートーク」
最後は、フリーテーマでヤフー株式会社の吉田さんとクラスメソッド株式会社の深沢さんにLTしていただきました。

今回のイベントで一番盛り上がりを見せた吉田さん
エンジニアなら誰もが「今までないアプリを作りたい!」と思っているはず。
Appleが未だ実現できていない機能を先に作れ。

フロントカメラに映った、顔情報を認識し活用しよう。顔情報は
UIに活用できる!

Core Image
が認識出来ない事
・視線
・眉、鼻、輪郭の形、位置
・目、口の形
仕方ない、作るか

Face Tracking
・顔の特徴点をトラッキングするライブラリを独自開発
・スマホでリアルタイムで動作可能
・顔画像とデータから学習機能搭載

Face Tracking
を利用したアプリがこちら
→「怪人百面相」https://itunes.apple.com/jp/app/id597795292



吉田さんにに対抗するのは深沢さん


「どうしてあなたは今iOSアプリを開発していますか?」
「今、
iOS
アプリ開発することに満足していますか?」

満足するために不可欠な要素
・関わる人達が一つのチームになること
・安心してリリースできること
・思いっきり開発すること

「行こうぜ!
iOS
アプリ開発の向こうへ!」

最終結果はこのようになりました。
 

12

 











7
回戦が行われ、成績はヤフー株式会社が4勝、クラスメソッド株式会社が3勝でヤフー株式会社の勝利です。

合計で20万票以上はいって、総合得票数が500票とは。

最後に

今回のイベントでは、登壇者
14名と多くの実力のあるエンジニアのLTを聞いたが一人の持ち時間が5分であること、また一人一人の内容のクオリティーが高いという事で時間がすぎるのがとても早く思えました。

個人的には、ヤフー株式会社の羽田さんの
LTがとても印象的でした。

iBeaconの存在は知っていたのですが、実際どのようなツールであるのかは分からなかったので、学ばせていただきました。
今後、話題の
iBeaconがウェアラブルデバイスであるGoogle GlassRingsiWatchとの連携が出来ればより便利になっていきそうですね!


以上、
U田でした。