【週5出社】 Dive Into MIXI インターン参加レポート
はじめに
こんにちは、ながなが(@naga_oishi)です。
2024年8月1日から9月30日までの2ヶ月間、株式会社MIXIのインターンシップ「DIVE Into MIXI」に参加しました。
私は家族アルバム「みてね」の「デジタルアルバム機能を開発する」DADチームで、モバイルアプリ(Android・iOS)エンジニアとして貴重な経験をさせていただきました!
なぜ「みてね」だったのか
Mission, Vision, Valueへの共感
私が「みてね」を選んだ理由は、そのMission, Vision, Value(MVV)に深く共感したからです。
みてねのMVV
- 世界中の家族のこころのインフラをつくる
- 「世界一愛されるサービス」と「圧倒的収益」を達成
- Think Family, Go Beyond, Be Agile, One Team
これらの理念は、「人に喜びを与えるものづくりをしたい」「より多くの人に届けたい」という私自身の価値観に非常に近いものでした。
モバイルエンジニアとしてのキャリア志向
加えて、iOSとAndroid両方の開発に携わりたいと考えており、それらを叶えられる環境であったことや、MIXIが大規模プロダクトの開発を行なっていることも大きな魅力でした。
インターン参加までの道のり
インターン参加にはいくつかの選考がありますが、私はサポーターズさんの逆求人イベントきっかけで参加させていただきました。
面談の流れは以下の流れだったと記憶しています。
- 人事面談→受け入れ部署面接→参加決定
参加期間は最低1ヶ月からですが、私は2ヶ月間、週5日で勤務させていただきました。
インターン期間の様子
MIXIのオフィスは渋谷スクランブルスクエアにあります。私は徒歩15分のマンスリーマンションを提供していただき、台風が東京に直撃した1日を除いて毎日出社していました。
渋谷の街並みを感じながら生活する2ヶ月はとても新鮮で、「あれ、昨日通れた道がなくなってる…」「新しい建造物ができてる…」と毎日刺激をもらっていました。
明治通りと渋谷スクランブルスクエア(中央の大きな建物)
オフィス環境
執務エリアは全席昇降デスク&アーロンチェアで、とてもに快適に就業させていただきました。
モニターやキーボードといった周辺機器の貸し出しも充実しており、私は25インチのモニターとMagic Trackpad2をお借りしました。
この環境からは、MIXIの社員を大切にする姿勢を強く感じました。
余談ですが、あまりにも快適すぎて、自宅に戻ってからの生産性が爆下がりしてしまったので、自宅にも昇降デスクを導入して「おうちMIXIオフィス」を作り上げる計画を実行中です。昇降デスク最高!
自宅の作業環境。アーロンチェアが揃えばほぼMIXIオフィス
MIXIのオフィス環境を語る上で外せないのが、社員向けの食堂です。
めちゃくちゃヘルシーで美味しいのですが、1gで1円という大変良心的な価格設定が特徴です。ついつい食べ過ぎてしまい、890円(=890g)も食べてしまうことがありました。
ちなみに私の中のNo.1メニューは白身魚系全般です。ぜひ機会があれば食べてみてください!
社食のご飯とオフィスからの風景
インターンでの目標
今回のインターンでは、以下の目標を掲げてインターンに臨みました。
- ユーザーがもっと使いたくなるような機能の追加・改善
- みてねのユーザー中心の文化やものづくりへの理解
- 大規模プロダクト開発の経験
また、せっかくインターンするのだから、MIXIを知って、MIXIのエンジニアの働き方を知りたい、働く解像度を上げたい!という思いもありました。
実装タスク
大きく分けて4つのタスクを任せていただきました。iOS/Android両対応のタスクが2つ、Androidのタスクが2つです。
ざっくりではありますが、紹介させていただきます。
[Android] ボタンのマージン縮小
みてねには「みてねプレミアム」という、サブスクリプションが存在します。
その登録ボタンが、デザインシステムから外れているという課題がありました。
当時、私はAndroid Viewに触れたことがなく、その習熟も兼ねて取り組ませていただきました。
解決手法としては、高さの制約の値を変更するというアプローチとなりました。
みてねにはデザインシステムがあります。そのため、このボタンもデザインシステムに準じたサイズに変更しましたが、デザイナーさんより「文字が小さく見える」というご指摘をいただきました。
その対応として、異なる制約値を指定したスクリーンショットを並べ、プロダクトマネージャーさんとデザイナーさん確認を取るなど、職種を超えた連携が多いタスクとなりました。
このタスクを通じて、みてねの一貫した操作性や使いやすさは、このような細やかなこだわりから生まれているのだと実感しました。
また、違和感を忌憚なく言える環境や、1インターン生がスムーズに職種を超えた連携が取れる雰囲気に、安心感を覚えたことを記憶しています。
[Android]新規機能「1秒動画編集」の一覧・確認ページで公開範囲を表示
みてねのプレミアムProプランには「1秒動画編集」という機能があります。
1秒動画とは、子供の写っている動画を1秒ずつ繋ぎ合わせた動画のことで、短い時間で子供の成長がぎゅっと詰まった動画を感じることができます。インターン期間中に1秒動画の編集機能を実装しており、一部機能の実装に携わらせていただきました。
この時に抱えていた課題としては、1秒動画のメディアを変更したいユーザーが変更前後に素材の公開範囲を確認できないというものでした。
解決策としては、素材の公開範囲をテキストで表示するアプローチで実施しました。
この機能は既に一部の画面に搭載されていたため、実装済みのメソッドをユースケースとして分離し、他の画面に実装することで対応しました。さらに、本タスクではユニットテストの実装にも挑戦しました。
初めてのユニットテストの実装ということもあり、他の実装を参考にしながら実装を行いました。テストケース自体は網羅できていたものの、エラーの投げ方に関してはみてね内で慣例が存在したため、その点はレビューで指摘されましたが、そこそこの速度感で実装を行うことができました。
[iOS/Android] デバッグ用機能:動画の解像度を表示する
iOS, Android両プラットフォームのQA用デバッグ機能の実装も実施しました。
QA担当者が再生されている動画の解像度を確認できないという課題に対して、操作パネルに解像度を表示する実装を行いました。
これまで私はメディア再生・表示系の開発をしたことがなく、初めての挑戦となりました。当然ではありますが、OS間で使用している再生用ライブラリが異なるため、ライブラリのキャッチアップを含め挑戦させていただきました。
さらに、こちらで初めて触れたのが「FeatureToggle」です。
FeatureToggleとは、運用を行いながら新規機能を実装するTipsの一つで、開発者向けビルドのメニューからFeatureToggleのオン・オフを切り替えることで、機能の有無を制御できるものです。
今回実装する機能は、QA向け機能のため、FeatureToggleで表示を切り替えれる形で実装しました。
この実装を通じて知りたかったことは、「OSによる実装差分」でした。
結果としては、比較的両OSの設計は近く、比較的同じ手順で実装できました。
ライブラリを使った実装差異としては、iOSは再生中のMediaItemを監視する(KVO)が必要であるのに対し、Androidは再生中のMediaItemの情報が変わった時に通知してくれるリスナーメソッドがあるため、解像度取得の点においてはAndroidの実装の方が簡単に感じました。
加えて、実装難易度に大きく影響したのがドキュメントの充実度で、圧倒的にAndroid用ライブラリの方が充実していました…がんばれApple…!!
実装終了後にQAの方に確認を依頼したところ、
「iPhone SE1で1080pの動画が再生されていないと表示される」
との不具合報告をいただきました。これはシュミレータと使用していた検証機では発見できなかった問題だったため、非常に肝を冷やしました。
サイズと世代の異なる4台のデバイスをお借りして検証した結果、ストリーミング動画の最大解像度が端末の解像度に依存していることが分かりました。
(実装不備じゃなくて良かった〜…と安堵した記憶があります。)
具体例を挙げるならば「1080p以下の解像度のデバイスでは、1080pの動画をストリーミングしてくれない」ということです。
この実装を通じて、QAの方の業務効率化に寄与しつつ、自身の知見を増やせたと実感しています。
[iOS/Android] みたよ履歴のリファクタリング
みてねには、どの家族がアルバムを見たか一目でわかる「みたよ履歴」という機能があります。
こちらは新規の実装ではなく、リファクタリングです。
Android側は、部分的に改修は入っていたものの、Activity & Recycler Viewと最新の実装とは言えない状態でした。
そのため、今回は開発者体験の向上のために、ViewModel & Composeへのリプレイスを実施しました。メソッド同士の結合を減らし、再レンダリングを抑える実装を行うことでパフォーマンスを改善し、開発体験とユーザーの操作体験の向上に寄与できたと感じています。
加えて、ComposeはRecycler Viewとライフサイクルが異なるため、単純にリプレイスしただけでは、従来と異なる挙動となってしまいました。そのため、リプレイスを行った上で操作の違和感を減らす調整を実施しました。
しかし、これが想像以上に時間を要してしまい、後のタスク実装に大きな影響を与えました。
iOS側は、Objective-CとInterface Builderで実装されていたところを、SwiftとコードベースのUIKitへのリプレイスを実施しました。同時に、デザインシステムで不足しているコンポーネントを追加実装するなど、Android以上にチャレンジングな実装が多かったものの、社員さんの助けを借りながらなんとかインターン期間中に実装を終えることができました。
これらの実装では、技術的負債を返済することで開発者体験を向上し、ユーザー価値を高めるための土台作りができたと感じています。
アジャイル・スクラム
インターン期間中に、認定資格を持つスクラムマスターが実施するスクラム研修に参加させていただきました。この研修では、アジャイルの意味やスクラムをより効果的に活用する方法といった全体像を掴むところから、実際の開発への落とし込み方まで、アジャイル・スクラム開発の概念から実際の行動方法まで学ばせていただきました。
このアジャイル・スクラム研修は、インターン期間中に受けた最大の衝撃のひとつといっても過言ではなく、アジャイル・スクラム開発への関心が高まりました。
私生活でも、「せっかくスクラム開発を学んだのだから…」と、大学課外活動の開発にスクラム開発の導入を試みました。しかし、思うようにスクラム開発が浸透せず、みてねのエンジニアチームにスクラムを導入したKAKKAさん(@KAKKA_Blog)に1on1面談を依頼し、「スクラム開発を導入して、浸透させるにはどうしたらいいでしょうか…!」と相談させていただくこともありました。
おかげさまで、現在も順調?にスプリントを回し続けることができています。
2024/12時点で13スプリントを回しています。相変わらずベロシティは安定しません。
アジャイル・スクラムを実践する場として、いくつかの機能のリファインメントにも携わらせていただき、みてね流のものづくりと、実務でのスクラム開発を学ばせていただきました。
実プロダクトのスクラム開発を通じて、MVP(価値を届けられる最小単位)を作ってフィードバックを得ることや、ユーザーに届けたいものと受け入れ条件(そのタスクが完了している条件)を明確に示す重要性を肌で感じることができました。
ほかにもリファインメント・プランニング・レトロスペクティブに参加したり、インセプションデッキを考えたり、スプリントレビューでチーム内外の方々に実装した機能をレビューしていただいたりと、スクラム開発のいろはを学ばせていただきました。
みてねのエンジニアリング組織や、アジャイル・スクラム開発を知りたい方向け
交流・働き方
インターン当初から、みてね事業部の方々と幅広く交流させていただくことができました。
チームでWelcomeランチや懇親会を企画していただいたり、さらにはFounderの笠原さんとランチさせていただくなど、プロダクト開発全般に興味のある私にとっては夢のような機会を多くいただきました。
また、「誰か1on1しませんか!」とSlackで声をかけたところ、合計12名の社員さんと1on1させていただくことができました。自分より多くの経験を持つ社員さんとの1on1を通じて、自分の知らない物事に対する興味と、自分が持っていない視点を知るきっかけをいただきました。
さらには、固定席を取って週5日出社することで、ランチやオフィス内の移動で他事業部の社員さんやインターン生と交流することができました。
その中で大きな機会となったのが「お昼くらいにオフィスでコーヒーをハンドドリップする」ことです。
私はコーヒーが大好きで、日頃からコーヒーのハンドドリップやブレンドの開発を楽しんでいます。
スペシャリティコーヒーのカンファレンス「SCAJ 2024」にも一般参加しました。
趣味のコーヒーを通じたコミュニケーションで、エンジニアに限らず、マーケや企画の方々などより多くの社員さんと交流することができました。
また、みてねのSREチームに焙煎が趣味の社員さんがいらっしゃり、大いに盛り上がったところ、アーカイブされていた「hobby-coffee」チャンネルが復活し、1ヶ月で約180件のメッセージが飛び交う盛り上がりを見せました。
SREチームの社員さんがコーヒー豆を焙煎 🫘
↓
私がハンドドリップ ☕️
↓
社員さんに飲んでもらう
サイクルが生まれ、「心もつながる」場と機会をつくるきっかけ作りができたと感じています。めちゃくちゃ楽しかったです…!!
SREチームの社員さんが焙煎したコーヒー豆をハンドドリップする様子。インターン期間中にドリッパーを2つ買いました。
そのほか、社内の若手懇親会にお誘いいただいたり、自分がごはん会を設定することで、他事業部の話や、キャリアについてお話を聞くことができました。
カンファレンス「DroidKaigi」「iOSDC」にも参加しており、他事業部のつよつよエンジニアの方にランチのお誘いをすることもありました。快諾してくださった社員の皆様、ありがとうございました!
そのほかの思い出
また、社員さんから教えていただいた美味しいクラフトビアバーにインターン生で突撃して「こんな美味しいビール初めて飲んだ…」と感動する体験もしました。おすすめです…!!
振り返りと自己評価
自己評価としては「自分ができる価値提供と貢献は精一杯できた」と感じています。
達成度を絵文字で定性評価してみると、こんな感じです。
みてねでの目標・経験したいこと
🤔 ユーザーがもっと使いたくなるような機能の追加・改善
👍 みてねならではの、ユーザー中心の文化やものづくりへの理解
👍 大規模プロダクト開発の経験
👍 MIXIを知って、MIXIのエンジニアの働き方を知って、はたらく解像度を上げること
自己評価
まずは1人の人間として、人と人を繋いだり、コミュニケーションのきっかけを提供することはできたのかな…?と思っています。
エンジニアとしても、ユーザー価値の向上に貢献する議論に参加したり、開発体験を向上させる取り組みに参加する中で、自分なりの貢献はできたのではないかと感じています。
インターン生としては、「タスクをこなすこと」と「交流」のバランスを自分なりに取ることができていたと感じており、どちらかに大きく偏ることなく、最高のインターン期間を過ごすことができました。
働き方としては、前半は「がっつり働くイメージ」を意識して、後半は「実際に長期的に働くイメージ」を意識を持って就業しました。結果としては、労働時間にほぼ差がなく、どちらかと言えば後半の方が頑張った実感があります。(単純に意識の問題のような…)就業時間は、8時間 x 5日 x 4週
で月160時間ほどでした。
みてねに対しての印象
みてねで働かせていただいだ2ヶ月間の中で感じたことは、
「良いプロダクトを作るために、最高の技術を惜しげなく使う組織」
であることです。これはプロダクトで採用している技術やコードだけでなく、議論やドキュメントからも強く感じました。
また、チームメンバー全員がMVVを共有して、ユーザーの価値に真剣に向き合う姿は、自分の理想とするチームの形にとても近いと感じました。
これらを通じて、よりユーザーに価値を届ける、そのために技術を使いたいと思うようになりました。
また、運用を見据えた設計や技術の選定が行われているため、運用視点を持った開発を望むエンジニアにとっては最高の環境だと思います。
その反面、リリースされて間もない技術の導入や、運用の見通しが難しい技術の導入については、あまり実施されていない印象でした。そのため、最新の技術的刺激が欲しい人にとっては少し物足りないかもしれません。
みてねの技術スタック
まとめ
MIXIでの2ヶ月間は「最高の環境と技術で価値を届ける」経験そのものでした。特に、運用を見据えたプロダクト設計や、チーム全員がMVVを共有しながら働く姿は、エンジニアとしてのキャリア目標の解像度を高めるきっかけとなりました。この経験を胸に、社会に価値を届けられるエンジニアとして成長していきたいと思います。
最後に、この素晴らしい経験を支えてくださったMIXIの皆様、インターン生、そして関わってくださった全ての方々に感謝申し上げます。本当にありがとうございました!
そして、2026年4月からも、どうぞよろしくお願いいたします!
さいごに: MIXIのインターンに参加を検討している/インターン中のみなさまへ
インターンでは、タスクをこなすだけにフォーカスせず、その場にいる社員さんや他のインターン生との交流を大切にしてみてください!技術的な成長やプロダクト開発の経験だけでなく、そこで出会う人々との会話やつながりが、きっとあなたにとって大きな学びや刺激になるはずです…!
ランチやカジュアル雑談、Slackでの呼びかけなど、さまざまな形で交流のチャンスがあるかと思います。その中で得られる視点やアイデアは、書籍や講義では学べない、生きた知識と経験です。私自身、その経験を通じて新しい視座を得ることができました。
「学び」は技術だけにとどまりません。
ぜひ、素晴らしい環境を最大限活用し、たくさんの方々と関わり、楽しい時間を過ごしてください…!
みなさまのインターンが、実りあるものになることを心から願っています!!
Discussion