engineer is my vocation

22卒のAndroidエンジニア

ミクシィの春インターン「Dive into mixi GROUP 2020」に参加しました!

 

f:id:keita_developer:20200404211212j:plain

こんにちは、 @keita_developer です。

 

3/9~4/3までの約一ヶ月間、ミクシィの春インターン「Dive into mixi GROUP 2020」に、Androidエンジニアとして参加しました。

 

mixi-recruit.snar.jp

 

参加までの経緯

去年の夏休みのインターンで取り組んだ業務が新規アプリの開発だったということもあり、春休みは趣向を変えて運用中のアプリの改善(リファクタリング、バグ修正…)についての知見を得たい、と考えていました。そんな中ミクシィインターンの募集要項の中にそれにぴったりな仕事内容を見つけ、このインターンへの応募を決めました。

採用までの流れは面接(人事)→面接(エンジニア)→面接(受け入れチームのエンジニア)でした。面接の中では、例の如く自分が個人開発のアプリを運営していくにあたっての経験談や、技術的な苦労についてを中心に話が進んでいたような気がします。一つ自分を表すプロダクトがあると、自分が話しやすくなるのは当然のこと、面接官も質問しやすくなるので、(ホントか?)面接の流れが組み立てやすくなるのでは、と思いました。

ちなみに、この会社のインターンの存在を初めて知ったのは去年の夏で、その時は気づいて応募したのが締め切りギリギリだったため、「Androidエンジニアの枠が空いてる案件が残ってない」という悲しい結果に終わっていました。その反省を踏まえ、今回は募集ページが公開された当日にエントリーシートを提出しました。そのおかげか、春インターン一番乗りでの採用だったそうです。何事も早め早めの行動が大事ですね。

参加したチームについて

今回自分が携わることになったのは「minimo」というアプリです。このアプリの機能について簡単に説明すると、「サロンのスタッフを直接指名してサロンの予約ができる」という感じです。

ちなみに、これまで全く美容院という言葉に縁がなかったので、このインターンをきっかけにminimoの一ユーザとして人生で初めて美容院に行きました。QOLが上がった気がします。

play.google.com

取り組んだタスク

今回自分がメインで取り組んだタスクは「口コミ一覧画面のリニューアル」です。現在、minimoではいくつかの画面のUIデザインのリニューアルを行っており、その中の一つとして、口コミ画面のリニューアルを任されました。タスクを始めた当初は、既にリニューアル後の画面デザインも準備されており、すぐに終わらせることができそうだなと軽く考えていたのですが、そう簡単な話ではありませんでした。

f:id:keita_developer:20200407193831p:plain

 minimoというアプリは、美容師を探すユーザ側と掲載情報を載せる美容師側の機能が同居しており、一口に「口コミ一覧画面」と言っても、「誰が」「誰の」書いたレビューを見るのかによって大きく画面の仕様が異なっており、尚且つそれが一つのアクティビティに複数のフラグを渡すことで制御されていて、変更を加えづらい状況となっていました。ということで、メンターさんと相談し、アクティビティの分割作業も同時に行うこととなりました。 

f:id:keita_developer:20200406212835p:plain

f:id:keita_developer:20200406212838p:plain

 

アクティビティを分割したことによってソースコード内の条件分岐の量を減らせたので、どの画面でどの機能が実装されているかの見通しが良くなり、今後の仕様変更にも対応しやすい状態にすることができました。

しかし、ただ分割しているだけだと今度は共通部分の修正をする際に抜け漏れが発生しうる、というデメリットも見えてきました。ということで、一旦全てのアクティビティを分割してから(冗長に書いてから)、レイアウトの中の共通部分を一つのコンポーネントとして切り出し、その部品を必要としている複数のアクティビティから呼び出すようにしました。(下の画像のような感じで、一つのレイアウトファイルを条件によってデザインを出し分けるのではなく、レイアウトファイルを部品ごとに区切り、必要部分のみを呼び出している。)

f:id:keita_developer:20200407083321p:plain

 

上記のタスクが終わった後の空いた時間を使って、リファクタリング系のタスクに多く取り組みました。自分がAndroid開発を始める前から運用されているアプリだったので、Android開発の歴史を眺めているような気分でした。

f:id:keita_developer:20200407091554p:plain


最後に、実装した機能をリリースするにあたって、 QAチームの方にテストを行っていただきました。自分が実装した部分だけでも数百個ものチェック項目が存在し、世に出回っているアプリの品質を担保することがどれだけ大変かつ重要なことなのかが伝わってきました。実際、このテストのおかげで修正することができた不具合も数多く存在しており、QAチームの方にはとても感謝しています。「とりあえず動くと思うからリリースしようぜ」で、ストアのレビューがQAのような状態になってる自分の個人開発とは大違い。

リモートワーク

新型コロナウイルス(COVID-19)の影響を受け、インターン終盤はリモートワークでの勤務となりました。「滞在先のホテルでリモートワーク」という状況、今後の人生で二度と発生しなさそう。最後の成果発表もオンライン上に場を設けていただき、リアルタイムでチームメンバーの方達からリアクションをもらいながら発表するという、ある意味貴重な体験をさせていただきました。

 

待遇、職場環境など

つい最近新オフィスへの引っ越しが行われたということで、渋谷駅直結のオフィスでの勤務でした。

  • 社員食堂
  • 飲み物、スープ類の無料提供
  • 昇降機能付きの机
  • 作業用の半個室スペース
  • 隔週で利用可能なマッサージルーム

等々、充実した設備が整っており、快適に業務を進めることができました。あまりにも快適だったので、業務終了後も社内のフリースペースでしばらく個人開発をしてから帰る、みたいな生活をしていました。夏のインターンに落ちたのはこのオフィスで働くための伏線だったのかもしれない。

交通費、宿泊場所を会社から提供していただきました。インターンに参加している時はいつもこのような援助を受けていますが、これを当たり前のことに思わず、感謝の気持ちを忘れないようにしていきたいです。

上記のリモートワークに伴い、全社的に備品の購入援助が行われました。ありがたいことにインターン生も補助の対象に含まれていたため、作業時に必要な備品を購入させていただきました。ただ、リモートワークしていた期間がインターンのラスト一週間程度だったので「ほぼ持ち逃げなんじゃないのか…?」と少し罪悪感も感じています。

感想

色々とイレギュラーなこともありましたが、一ヶ月の間で与えられたタスクをきちんとやり遂げ、リリースまで持っていくことも出来たので良かったです。お世話になった皆さん、本当にありがとうございました!!

 社会情勢的に夏以降のエンジニアインターンが無事に開催されるかは今のところ未知数なので、早くいつも通りの日常に戻って欲しいなと思います…。