どうもこんにちは
to-hutohuです
私達Simplicityは6/9~11に行われたHackU東京工業大学に参加してきました。
その参加記録を書きたいと思います。
ダラダラ書くので長くなると思いますが、お付き合いいただけると嬉しいです。
アイデアソン
6/9からYahoo!本社で行われた開発に先立って、5/24のtraP集会でアイデアソンを行っていました。
そこでSimplicityで今回のハッカソンで作るものの案を考えました。
作るものを考えるときに意識したのは、名前でインパクトを与えられるものということです。
それまでのハッカソンで先輩方の技術力の高さにとても驚いていたので、技術に凝っていいものを作るのは難しいだろうと思い、良い意味で言えばハッカソンのテーマにキチンと沿ったもの、あけすけに言ってしまえば名前オチになるようなものを作ろうと内心思っていました。
というわけでハッカソンのテーマはチームだったのですが。
なかなかいい案でませんでした
最早チームにこじつけて複数人で遊ぶゲームとか野球とかサッカーとかのチームスポーツにしようかという意見もありましたが結構粘って考えましたね。
そこで出てきたのが「はいチーム!!」という名前です。
そうです!今回のネタは何を作ろうかより先に名前が決まりました!!!
語感だけです!語感が良かったからこれを作ったんです!!
はいチームという名前が決まってから何を作るか考えました。
ハイチーズから来た名前なのですから写真を撮るものにしようということに。そしてチームというテーマなのでチーム分けをしてくれるものにしようという感じでアイデアを逆走していく感じでした。
プラットフォームはカメラを手軽に使えそうだし、標準で顔認識とかあるし簡単に顔の切り出しとか出来るんじゃね?って安易な考え方からAndroidアプリで開発することになりました。
開発一日目
そして、各自がちょろちょろ開発の仕方を調べたり試してみたりして迎えた開発一日目。
私が知っていたのは、Google開発者サービスの中にあるFaceAPIってのをちょちょーいって使えば簡単にできるぜーって書いてあったことくらいです。
一年生はTOEFLがあったので5時頃からの参戦でした。
さらに他のチームのメンバーの突然の失踪があり、2人のメンバーの合流もあり、6人での開発となりました。これでメンバーが増えたのはとても力強かったです。
最初の方は比較的順調に進捗していました。
新規メンバーの開発環境を整えたり、Gitと格闘したりしながら、アクティビティの設定と仕事の振り分けを決め作業を進めていきました。
メンバー6人中4人がAndroidアプリ制作初体験だったのでみんなの検索力が試される状況でしたね。
問題はいよいよFaceAPIを使おうという状況になったところです。
問題1:FaceAPIのインポートでエラーが出る
FaceAPI関連のライブラリは
import com.google.android.gms.vision.Frame;
import com.google.android.gms.vision.face.Face;
import com.google.android.gms.vision.face.FaceDetector;
とすることでインポートできるはずだったのですが、このコードを書いてもAndroid Studioがエラーを示し続けていました。
解決方法はgradle.buildに
dependencies {
compile 'com.google.android.gms:play-services:9.0.0'
}
これを追加することでした。(dependencies{}がすでにある場合はこの行を追加するだけでいいみたいです)
9.0.0のところはその時点での最新バージョンにするようにしてください。
二日目
二日目、私は✝絶起✝しました。
起きてスマホ見たら集合の十分前とかいう衝撃は今でも忘れられません。
人生初の絶起がここで起きるとは夢にも思いませんでした。
急いでミッドタウンへ行き実装を続けました。
二日目にも謎のバグが発生します。
Google開発者サービスのFaceAPIでは顔検出を端末内で行い、そのためにネイティブライブラリを使用します。
リファレンスによればそのネイティブライブラリはアプリのインストール時に自動でダウンロードされることになっているのですが、なんどやっても、ネイティブライブラリがダウンロードされているかを取得するメソッド、isOperational()がfalseを返してきて(ダウンロードされていればtrueが帰ってくる)進捗が産めないという状況になりました。
これについては、具体的な解決法がわからないまま勝手に解決してしまいました。
こういう解決の仕方は次につながらないから嫌ですよね。実際、私の端末以外の端末では最後まで動きませんでしたし。
その問題が解決してからは、比較的スムーズに進捗し、その日の終了時間までには一応使えるものになりました。
ロスタイム
家に帰ってからも進捗を続けました。
家での進捗で結構面白い機能を追加できたと思います。
家での進捗
- アプリの操作画面に背景がついた
- チーム分けをやり直すごとにランダムに別れるようになった
- 音声認識機能(謎の集中力で15分で実装)
- 共有機能の追加
- 顔をタップすると拡大表示できる
発表当日
とにかく緊張しました。
そしてアプリが重かったです。
原因としては操作画面で背景に使った画像の解像度が大きかったことと、Androidが読み込む写真をすべてメモリに展開してくれちゃうことです。
ちなみにこれのせいで、ある程度より高解像度の写真を使うと100%強制終了することになっています。
発表もスライドの方はどうにかなったのですが、実演の方は重すぎて時間が足りませんでした。
結果
最優秀賞をいただくことができました!
http://hacku.yahoo.co.jp/titech2016/
見事フリ素化したというわけです。
以下はチームメンバーの感想です
感想
リーダー・プログラミング とーふとふ
まさか最優秀賞をいただけるとは思ってなかったのでとてもびっくりしています。
前回のハッカソンで苦しんだGitも今回は事故を起こすこともなく進めていくことができたので、成長を感じられました。
今回得た知見としては「調べるときは英語でやったほうがいい、そんでリファレンスを読むのが一番手っ取り早い」です。
英語をすらすら読めるようになりてぇ…
プログラミング Double_oxygeN
主にリザルト画面の処理・レイアウトを担当しました。
Androidアプリ開発の方法は未だに解っていません(笑)。
メンバの皆様にはGitの操作や発表含めほとんどを頼り切ってしまい,手間を掛けてしまったと感じます。
この場を借りて感謝申し上げます。
プログラミング,デザイン いつみ
確認画面の処理と背景とロゴのデザインを担当したいつみです。
僕は元々別の3人グループのメンバーでした。しかし、ハッカソン前日の夜に †諸事情† がありチームが2人になったため急遽当日にとーふとふ氏に頼んで編入させてもらいました。圧倒的感謝…!
さてチームに入れてもらったからにはバリバリ働こうと思ったのですが、Androidアプリは未経験ということもあり苦戦。気合いである程度の進捗を生み出しました。
2日目の昼過ぎにはプログラムの根幹が大体完成していたため、僕はロゴや背景等を作りました。イラレが欲しかった デザイン的にはみんなでわいわいする感じの明るい、それでいてきつすぎない色使いがいいかな、と思いつつ作りました。
受け入れてくれたメンバー、丁寧に教えて下さったチューターさんにはとても感謝しています。
結構な時間リファレンスとにらめっこしていたので微妙に英語の読解力が上がった気がします(気のせい)。
プログラミング CulMen
FaceAPI解析(できてない)と画面遷移・エラー回避・デバッグ等を主に行いました。
1日目は既存のFaceAPIを用いたソースの解析を行おうとしたものの殆ど進まず前述の通りとーふとふ氏に丸投げという状態に…申し訳ない。
エラーに関しても原因(特定条件で取得値がNullになる)まで追及したものの手がつかず、結局動作毎にActivityを破棄して変数をまっさらに初期化するという荒業に…先に繋がらないですね。
今回の最優秀賞という結果もひとえにチームの皆様のお陰であります。ありがとうございました。
プログラミング satoriku
設定画面の作成を担当しました。初歩的なミスが多かったりバグで全く進捗が無かったり、メンバーには結構迷惑をかけてしまいました...
前半はバグ、後半はレイアウトと戦っていましが最終的になんとか設定画面は完成し、それなりに満足のいく見た目にも出来たかなと思います。
レイアウトに強くなりたいですね。チームの皆様、ありがとうございました。
デザイン ますぐれ
死ぬほどつらかったです(何もできなくて)。実際八割くらい死んでました。基本的に素材作ったりしていましたが、ほとんど貢献できず申し訳ないばかりです。
今回は上のいつみくんと一緒に急遽混ぜてもらったのですが、自分の一番の功績は彼を合流させたことです。これは間違いありません! 彼らのようにとは言わないですが、もう少し地力を上げてプログラムを殴れるようになりたいなというのが今の目標です。†16のガチプロ†の実力を知ることができ、結果的にはいい経験になりました!(あとプログラム力が形になったら穴が埋められる程度にデザインの勉強をしておきたいと思った)
その後
副賞として継続開発費50002円(素数ではない)を頂いたので、今もアプリを継続して開発しています。
今のところ、顔検出を端末内ではなくネット上で行えるようマイクロソフトのAPIを使うように書き換えたところです。
夏休みまでにはリリースできるようにしたいなと思っています。