はじめに
2014年2月25日(火) 、『 ヤフーvsクラスメソッド「iOS 炎の7番勝負」 』が開催されました。前半戦4戦を終えて2勝2敗の全くの互角。いよいよ決着が付く後半戦のレポートをお送りします。
第5回戦 テーマ:iBeacon
先攻: ヤフー 羽田さん
題名: iBeaconとJavaScript
今年の4月にヤフーへ入社が内定している羽田さん。現在はインターン生としてヤフーで開発を行っています。
ヤフー 羽田さん
iBeaconでできること
iPhone、Android、MacなどBluetoothが使えるものを発信、受信機にして近づいた、離れたといったことを検知できます。iBeaconを飛ばす時に識別子として使うUUIDが簡単に傍受できてしまうので、運用にはセキュリティを考慮する必要があります。
iBeaconでやってること
米MLBドジャースタジアムの飲食店に専用のアプリをもって入ると、ユーザに対してプッシュ通知を飛ばしてクーポンを配布するといったことが実際に行われています。
「お手軽! Start iBeacon!」と題して、iBeaconのはじめ方の紹介がありました。1つめがMacOSアプリケーションを作ること、Mavericksならできるそうです。2つめがBleacon(node.js)を使うことで簡単にMacを発信、受信機にできるとのことでした。ただ、羽田さんが実際にやってみたところ、発信の方は上手くいかなかったみたいですね。
PhoneGapでiBeaconを実現する方法にも触れていました。cordovaというプラグインを使えば簡単に実現できるという紹介でした。
iBeaconでできるようにしたこと
PhoneGapでiBeaconをやりたいということでプラグインを作成 。
【発表資料】iBeaconとJavaScript(ヤフー:羽田)
後攻: クラスメソッド 荒川さん
題名: 実践 iBeacon
荒川さんも羽田さんと同様に内定者。インターン生としてクラスメソッドで開発を行っています。荒川さんは iBeaconの運用に関してのお話でした。
クラスメソッド 荒川さん
まずは、簡単にiBeaconの概要説明。Beaconの検知エリア内に入った、もしくは出たという事を検知できるというお話。また、Beaconの検知エリア内にいる場合におおよその距離を知ることができるということでした。
iBeaconの機能について、iBeacon単体には決済やナビゲーションといった機能がついているわけではないので、必要ならばそれらは別で実装する必要があるとのこと。開発時に最低限必要な決めごとという話の中で、特にBeaconの設置場所、配置が運用するにあたって重要なポイントになると解説されました。利用シーンを想定することでどの程度の距離でイベントを起こすかわかり、Beaconが複数必要な場合の配置図などが想定できるとのことです(予算や取り付け工数の把握) 。
Beacon利用時の注意点として、検知が遅延する場合があるということと、建物の中でも電波が不安定になることがを挙げていました。Beaconの開発では実際に設置する場所で綿密な実地検証を行い、アプリケーションが正常に動作することをしっかり確認してください、と注意喚起し、他のアプリ開発にはない面白さがあると締めくくりました。
【発表資料】実践 iBeacon(クラスメソッド:荒川)
第5回戦 結果発表
得票数は次の通りとなりました。
チーム ヤフー クラスメソッド
登壇者 羽田 荒川
得票数 13023 16033
iBeaconをテーマに戦った5回戦はクラスメソッドの荒川さんに軍配が上がりました。発表後の質疑応答の際は多くの質問があがり、iBeaconに対する注目度の高さがうかがえました。
第6回戦 テーマ:失敗談・バッドノウハウ
先攻: ヤフー 塚越さん
題名: ソノアプリリジェクトサレルッテヨ
3回戦に登場した西さんと同じヤフオク!アプリの開発担当。同プロジェクトでスクラムマスターも兼任しておられます。
Reject(リジェクト)の理由を共有しませんか?という問いかけからスタートしました。
ヤフー 塚越さん
2013年のヤフーのリジェクト回数は123回。単純計算で3日に1回リジェクトされていることになります。できるだけリジェクトを回避したいということで、過去の事例から学習しようと考えるわけですが、リジェクトされたときにいろいろとやり取りをするResolution Centerに履歴は残らないので、ここから学習はできません。
ということで、ひとつの方法としてResolution Centerとのやり取りをした時点ですぐに保存するのがいいということ。ただ、保存したとしてもリジェクトの情報はあまり共有されていないというのが現状です。そのため、同じような内容で何度もリジェクトされることが起こってしまいます。
ここでいくつかの実際の事例の紹介がありました。今まで言われていなかった理由で突然リジェクトされたりするので、なんとかしようということで、つい先日ヤフーで開催された「Open Hack Day Japan 2」で塚越さんが作ったリジェクトの情報を共有するツールを紹介されました。形はどのようなものであれ、リジェクトの情報を蓄積して共有することで、リジェクトの回数を少なくしようというお話でした。
【発表資料】ソノアプリリジェクトサレルッテヨ(ヤフー:塚越)
後攻: クラスメソッド 安達さん
題名: ユニットテスト初学者がKiwi framework非同期テストで失敗した
クラスメソッド入社3ヵ月めの安達さん。iOS開発歴は2年ほどのことです。
クラスメソッド 安達さん
初学者から見たユニットテストの利点のお話からスタートしました。主な利点として次の3点が挙げられました。
ヘッダのコメント等では把握しきれない挙動も把握できる
画面表示をせず、ショートカットキーのみで挙動が期待する内容かチェックできる
副作用を含まないコードに貪欲になれる
それをふまえ、Kiwi frameworkの特徴の紹介がありました。テストメソッド名を逐一英語で考えなくてもいい、テストケースを対象ごと、文脈ごとに区切ることができるといった特徴があるようです。
ここからセッションの本題、サーバと切り離して非同期ユニットテストを実行するというお話です。ご自身の失敗例を提示し、それに対する解決法と注意点などの解説がありました。
【発表資料】ユニットテスト初学者が Kiwi framework 非同期テストで失敗した(クラスメソッド:安達)
第6回戦 結果発表
得票数は次の通りとなりました。
チーム ヤフー クラスメソッド
登壇者 塚越 安達
得票数 19267 15269
失敗談をテーマに戦った6回戦はヤフーの塚越さんに軍配が上がりました。塚越さんは2万票にせまる得票数で、この時点でのトップの数になりました。会場の方々のお悩みとリンクする部分が結構あったのではないでしょうか。そして、なんとこの時点での勝敗は3対3!勝敗の行方は最後の登壇者に託されることになりました。
第7回戦 テーマ:フリーテーマ
ヤフー、クラスメソッド両者同点で向かえた最終戦。勝利を手にするのはどちらのチームになるのか、会場のボルテージも最高潮です。
先攻: ヤフー 吉田さん
題名: Appleの先を行くポストタッチインターフェース
吉田さん自身が企画・開発を行った「怪人百面相」は世界39ヵ国でアプリランキング1位を獲得。このアプリは2013年にグッドデザイン賞を受賞しました。
ヤフー 吉田さん
なにやら面白い格好で登場した吉田さんですが、今回の発表を怪人百面相で変身しながらやろうとしていたが、プレゼンと変身の画面はどちらか一方しか表示できないということで、苦渋の選択でプレゼンをする、と話していました。
エンジニアであればいままでにないアプリを作りたいという願望はすくなからず持っていると思いますが、既存アプリの数は100万本以上と超過当競争であり、既存APIとそのまま使うアイディアはすでに他の誰かにほぼ実現されている状況です。
「Appleが未だ実現できていない機能を先に作れ。それが世界初のアプリを作る道」と力強く話されました。
iPhoneのフロントカメラは常に自然な体制で顔を捉えているのですが、顔の情報というのは活用しきれていないのではないか、Core Imageの顔検出は検出できる項目が少ない上に遅い、ということで、自身でつくられた顔検出アプリのデモです。
上を向いて音量アップ
口をあけて拡大表示
検出する項目のバリエーションも豊かで、目の動きもしっかり検知されていました。また、ジェスチャーに対するレスポンスが早く、ストレスなく顔検出できていました。
手を使わないでUIを操作する方法にいろいろな可能性があるというお話をされました。
最後に、吉田さんが独自開発した顔の特徴点をトラッキングするライブラリ「Face Tracking」の紹介をされました。
【発表資料】Appleの先を行くポストタッチインターフェース(ヤフー:吉田)
後攻: クラスメソッド 深澤さん
題名: iOSアプリ開発の先に何があるのか
プロジェクトリーダーとして受託案件に携わっています。安心リリースクラブという団体に所属しているという情報がありました。
クラスメソッド 深澤さん
はじめに「どうしてあなたは今iOSアプリを開発していますか?」「 今、iOSアプリ開発することに満足していますか?」と2つの質問を投げかけました。
なぜアプリ開発しているのか? というところを突き詰めていくと、最後にたどり着くのは「どれだけ満足できるか」というところではないか。自分はもちろんのこと、回りを巻き込むことで満足は大きくなっていくものである、と自身の経験から感じているということでした。また、遊びのなかで感じた一体感、キラキラ感、達成感を開発の中でも味わいたいと思うようになったそうです。
深澤さん自身現在の環境に空虚感はなく、メンバーにも恵まれ非常に楽しいということですが、満足はしておらず、それは、もっと先に進めると思っているからだそうです。そして、目指す場所にたどり着くためにやっていることを3つ紹介されました。
1つめは「関わる人たちが1つのチームになること」 。発注者と受注者で同じステージに立つことはなかなか難しいことですが、1つの解決方法として受注者側からも企画、提案をしていって一体感を高めるというお話。
2つめは「安心してリリースできること」 。不安をもってリリースしても満足は得られません。安心してリリースできるように、テストやGitの運用などを考えているというお話。
3つめは「思いっきり開発すること」 。まず遠慮しないで思いっきり開発することが一番重要なのではないかと話されました。
【発表資料】iOSアプリ開発の先に何があるのか(クラスメソッド:深澤)
第7回戦 結果発表
気になる最終戦の得票数は次の通りとなりました。
チーム ヤフー クラスメソッド
登壇者 吉田 深澤
得票数 30732 23088
フリーテーマで戦った最終戦は、驚きの3万票を獲得したヤフーの吉田さんに軍配が上がりました。クラスメソッドの深澤さんも2万票を超える得票数となり、非常にハイレベルな戦いでした。
総合結果発表
最終戦でヤフーが勝利したのでヤフーの総合優勝となりました。
第6戦まで両者一歩も引かず、最終決戦となるなんてドラマティックな展開を誰が予想したでしょうか。勝負には負けてしまったクラスメソッドですが、総合得票数を見てみるとわずかながらヤフーを上回っています。本当にいい勝負でした。
ヤフーのみなさまおめでとうございます。
おわりに
すべてのプログラムが終了し、懇親会が行われました。登壇者の方々も仕事を終えたと行った感じでほっとした表情でした。また、ヤフー、クラスメソッドの運営に携わったみなさま本当にお疲れさまでした。
ヤフーvsクラスメソッド「iOS 炎の7番勝負」は大成功のうちに幕を閉じました。
記念撮影
なお、今回のイベントに登壇したクラスメソッドの平井さん、諏訪さん、平屋さんも執筆に参加している『iOSアプリエンジニア養成読本』 が3月20日に発売されます。よろしければぜひ手にとってご覧になってみてください。
Software Design plus シリーズ
iOSアプリエンジニア養成読本[クリエイティブな開発のための技術力/デザイン力/マインドを養う!]
髙橋 俊光、諏訪 悠紀、湯村 翼、平屋 真吾、平井 祐樹
1,980円/B5判/144 ページ
3月20日発売予定