Hack Uでヤフー賞獲ったどー

投稿日:2019/09/04

はじめに

どうもご無沙汰しております.
先月は1記事も出せませんで・・・w

さて本題ですが,この夏休みにヤフー株式会社が開催している「Hack U 2019 OSAKA」に,4人チーム「猫二郎」のメンバーとして参加しました!
ちなみに「猫二郎」は,猫と二郎系ラーメンから来てますねw

Hack Uとは,(ヤフー社員のサポートを得つつ)学生主体でチームを作って開発し,その技術力やアイデア力を競うハッカソンの1つですね.
今回のテーマは特に無かったですが,強いていうと「未来に向けて自分たちが作りたいもの」といったところでしょうか.

そして私達はiOSアプリ「HonARu」を開発・発表し,見事ヤフー賞に選ばれました!\(^o^)/
どんなアプリなのか,どのように取り組んだのか,記事にまとめてみようと思います.

log

【図1】ロゴ
クリックで拡大表示されます。

Coming soon...

【図2】使用様子(Coming soon...)
クリックで拡大表示されます。

map

【図3】システム構成
クリックで拡大表示されます。

iOSアプリ「HonARu」とは?

皆さんは,ズラッと本が並んだ本棚を目の前にして,欲しい本を探すことに大変さを感じたことはありませんか?

「HonARu」はこうした悩みを解決してくれるスマートフォンのARアプリです.
使い方は簡単,探したい本のタイトルまたはキーワードを入力し,カメラを本棚に向けるだけ!
アプリが本棚の背表紙から,キーワードに関連する本を見つけて教えます.

また,関連本のリストアップもしてくれ,Yahooショッピングページに飛べるようになっています!

【使用技術】
※図3参照
●フロントエンド
・Swift
●バックエンド
・Python3
    ・Flask
・Cloud Vision API
・Yahoo!ショッピング 商品検索API
・openBD 書誌情報・書影取得API
・Heroku

役割分担

企画はチームメンバー全員で行い,その後デザイン(2名),フロントエンド(1名),バックエンド(2名)で進めていました.
私は主にバックエンドを担当し,下記のことを行いました.
●Heroku立ち上げ・運用
●下記のPython実装
・REST APIサーバ
・画像の前処理
・Cloud Vision APIを用いた背表紙のテキスト検出
・上記の検出テキストからの抽出処理

ラストスパートは高速化

今回の開発の中で大変だったのは,発表日までの3日間連続で取り組んだ「高速化」にありました.
フロントエンドとバックエンドの接続ができた直後に動作テストを行った所,MAX50000ms,つまり50秒の遅延が発生してしまい,とてもスマホ画面に動画として映せる状況とは言えませんでした.(Vision APIもそこまで応答がめっちゃ速いわけでも無い感じだった)

そこでなんとか高速化をして発表当日で動くまともなアプリを見せられるように下記の様々な修正を入れました.
●サーバでフレーム付き画像を生成してフロントエンドに渡していたところを,フレーム座標のみをフロントエンドに渡してフロントエンドでフレーム描写を行う方針に変更.
→フレーム付き画像を渡す方がフレームの位置が確実だったけどやむなし.
●リクエスト間隔の拡大.
●関数の統合によるforの削減.
●処理切り上げの場合に以降の処理を行わず即座に応答するコードの実装.
●画像の解像度落とし,リサイズ.
●複数APIへのリクエストの非同期処理化.
●サーバを複数台にして複数同時のテキスト検出を並列的に行うように最終変更.

上記のことをして,(たぶん深夜のAPIへのリクエストが少なかった時間帯だったこともあるけど)最速900ms,平常で3000ms前後(発表日は2台運用だったので1500msかな?)にまで高速化することができ,どうにか発表当日で動く様子を見せることができるに至りました.

最後に

「HonARu」のコードはGithubで一部公開しています.
実運用への足がかりになれたら嬉しいです.
バックエンド:github.com/KagenoMoheji/HonARu_back

ヤフー賞に選ばれた理由であるヤフー技術の活用の評価に加え,テキスト検出に向けた前処理や高速化の評価もいただけて,最後にやりがいを感じることができました.
学生としての最後の夏ですが,こうしたハッカソンに参加して受賞でき,良い思い出になりました.

Thanks, Hack U and Team members!

タグ:

Comment

コメントはありません。
There's no comment.