engineer is my vocation

22卒のAndroidエンジニア

サイバーエージェントのインターン「AbemaTV Hack-ネイティブアプリ編」に参加しました!

 


f:id:keita_developer:20190822095201p:plain


3/16 ~ 3/17 の2日間、サイバーエージェントの短期インターン「AbemaTV Hack-ネイティブアプリ編」に参加しました。

インターンについての概要はこちら

目次

  • 応募のきっかけ
  • 採用までの流れ
  • お題
  • 作業
  • 完成品
  • 発表
  • 終結
  • 懇親会
  • 感想

応募のきっかけ

春休みの後半に何も予定がなく、ただダラダラ過ごすのももったいない気がするなぁ、と考えていた頃に Twitter 上でこのインターンの募集を見かけ、自分のエンジニアとしてのスキルアップに繋がるかもしれないと考え、応募を決めました。ネイティブアプリ部門としての募集だったことや、交通費や宿泊場所の手配も可能で地方に住んでいても参加しやすい、といったことも応募の後押しになったと思います。

採用までの流れ

1: Web上でのエントリーシート提出 今までの制作物についての事についてはもちろんのこと、ブログやSNSでの技術的発信の有無等についても記入しました。

2: オンライン面接 特に印象的だったのがこの面接の部分で、なんと面接の最中にインターンへの採用を決めていただきました。採用の方曰く「うちの会社はスピーディーな採用活動を重視している」とのことで、心配症な自分にとってはとてもありがたかったです。

お題

f:id:keita_developer:20190822101646p:plain

f:id:keita_developer:20190822101650p:plain

今回与えられたお題は、上の画像にも書いてあるように、既存の動画再生アプリへの機能追加を行い、様々な評価観点からその出来映えを競うというものでした。

作業

作業を始めるに当たってまず自分が考えたことは、こだわる箇所の取捨選択です。このインターンは二日という短期間での開発だったので、あれもこれもこだわっていては中途半端な結果に終わってしまうのは目に見えていました。そこで、自分は評価ポイントの中の「UIの作りこみ」という部分にスポットを当てて開発を進めていこうと決めました。UI にこだわった理由は、普段の個人開発でもユーザーからのレビューで触れられることが多く、頻繁にいじっている部分であり、そして、せっかく良いアイデアを思いついても、それとユーザーとを繋ぐ接点でストレスを感じさせていては台無しになってしまうと思ったからです。

そして、作業時間はメンターさんからの親身なサポート(参加者 8 人に対してメンターの方が 5 人もいました!手厚い!)を受けることが出来たり、同年代のエンジニア志望の学生の人たちともコミュニケーションをとることが出来たり(自分の知識の浅い部分もわかり、良い刺激になった)、お菓子や弁当、ドリンク等の差し入れを頂いたりと、至れり尽くせりな環境で作業を進めることができ、おかげさまで両日共に集中力を切らすことなく開発に取り組めました。

上述の恵まれた環境の甲斐あって、無事時間内に想定していた機能の実装を間に合わせることができました。

完成品

f:id:keita_developer:20190822100046p:plain

ざっくりとした機能説明 ↓

  • 右下のボタンで投げ銭アイテムリストの開閉
  • アイテムの選択後、確認ダイアログの表示
  • 投げ銭へのコメントの添付
  • 投げ銭ログの閲覧
  • まず、必要要件外の機能でオリジナリティを出すために、「コメントつき投げ銭」というものを実装しました。AbemaTV にもともとコメント機能があり、それの延長線上として実現できるのではないか、と思ったのが実装に至った経緯です。結果としてこのアイデアは他の参加者と被ることもなく、うまく個性を表現することができたので良かったです。
  • そして、最もこだわった部分である「UIの作り込み」についてですが、長くなるので一つずつ箇条書きで紹介していこうと思います。
  • ボタンの背景色を統一して、コンテンツ層とメニュー層の違いがはっきりわかるようにした。
  • ボタンの背景を透過させる、任意でメニューを非表示にできるようにする等して、メインの要素である動画視聴の妨げにならないようにした。
  • アイテム選択から投げ銭完了までの一連の操作の中で、一つのアイテム(アイコン)が、シームレスにアニメーションするようにした。
  • チャンネル変更時も、メニューの開閉状態を維持するようにした。
  • アニメーション再生中に他の操作が干渉しないようにした。(連打対策)
  • 投げ銭確認ダイアログの表示中にアイテムを切り替えることができるようにした。(選び間違えた時にダイアログを消すことなく選び直せる)

しかし、上述のように UI の細かい部分にもこだわった結果、ソースコードリファクタリング等に割ける時間が少なくなってしまい、中身のソースコードが少し煩雑なまま終わってしまったことが、個人的に悔しいところです。(せっかくの機会だったのでアーキテクチャを採用したかった…。)

発表

開発作業が終わった後は、一人3分の持ち時間が与えられ、それぞれが自身の作ったアプリに関するプレゼンを行いました。

f:id:keita_developer:20190822095742j:plain

発表の様子

そしてやってきた自分の発表の番、こだわった UI の部分について、動画を交えて余すことなく伝えようと意気込んでいたのですが、動画の再生位置を間違えたり、伝えたいことをうまく言語化することができなかったりで、もたもたしているうちに全てを出し切ることなく発表時間が終わってしまいました。しかし、その後のおさわり会(各々のアプリを実際に使ってみる)のタイミングで補足の説明ができる機会もあり、その時に説明が不足していた箇所についてフォローすることができたので良かったです。また、この時に他のインターン生の人たちの作品についても知ることができ、自分が思いつかなかったアイデアをたくさん吸収することが出来ました。

終結

そして最後の結果発表では、なんと最優秀賞を頂くことができました!!

f:id:keita_developer:20190822100633p:plain
景品のぬいぐるみ

メンターさん曰く「シームレスなアニメーションが良かった」「UIデザインがキレイ」とのことで、自分がこだわった部分を発表やおさわり会を通じて審査員の方々にしっかりと伝えることができたということが分かり、とても嬉しかったです。

懇親会

インターンの終了後は社員の人たちや他のインターン生の人たちとで、近くのお店で懇親会が行われました。こういう場で、実際の現場で働く人たちの話が聞ける(働いてみて実際どうだったか、職場ではどんなことが流行っているか、学生時代にどんなことをしていたのか、等)というのもインターンの大きなメリットだと感じました。後、料理がすごくおいしかったです(小並感)。また、お酒は自分が未成年なので飲むことが出来ず、おいしそうに飲む周りの人たちが少し羨ましかったです。

感想

二日間の作業で一番自分がこだわった部分であるUIの部分を評価していただき、そして最優秀賞を獲得することも出来たので本当に嬉しかったです。ただ、その一方でソースコードを書き進めていく中での技術に関する知識(アーキテクチャ、Rx等)で他の参加者に比べ遅れをとっていると実感する場面もあり、自身の勉強不足を痛感しました。しかし、その不足している部分を早いうちから知ることができた、というのもインターンに参加してよかったと思える理由の一つであり、ネイティブアプリエンジニアとして今後も精進して行きたいと思います。

最後に、何から何までサポートしていただいたサイバーエージェントの皆さん、そして一緒に開発を行ってきたインターン生の皆さん、二日間本当にありがとうございました!!