初めまして!クライアントエンジニアのいっちー(@ichi1101)です。
今年の4月からインターンとして入社し、iOSチームの一員としてMirrativの開発業務を行ってきました。
普通に学生エンジニアをしていた自分にとって、ミラティブでの開発は新鮮なことばかり。高水準なチーム開発に慣れていくのに苦労しましたが、学びも多くとても成長できたと実感しています。
本記事では、私が休学を決めてからインターン生活中の現在までのお話を紹介していきたいと思います。
目次
インターンに参加するまで
休学を決めた
当時、私は卒業研究を控えた函館の大学3年生でした。
私の大学で3年生は一番忙しい時期です。 就職活動の準備や夏のインターンに加えて、プロジェクト学習という通年の授業を履修しなければなりません。 プロジェクト学習ではリーダーをしていたので、様々なタイプの学生12人くらいを丁寧にまとめながら、技術的な面でもサポートをするという地獄の仕事をしていました。
プライベートでも特許庁のパテントコンテストに応募したり、機械学習開発のインターンを2回してみたりと色々詰め込んでいました。 好奇心旺盛で活動的なのが良くも悪くも自分の性質なんだと思います。
そんなこんなで自分の進路についてじっくり向き合う時間も取れないまま9月になり、研究室の仮配属の時期を迎えることになります。
進路も決めてないのに、研究とかやってられないなと思い休学を決めました。
覚悟が必要だった
研究室の仮配属を蹴って休学を決めたものの、来年の見通しは何一つ定まっていませんでした。
そもそも休学して長期インターンする人なんて周りに誰もいないですし、函館でエンジニアのインターンとか聞いたことないレベルなので、自分はこれから修羅の道をいくことになるんだなと感じていました。 この時点で私が予想していたインターン生活は、東京の知らない街の4畳半で寝泊まりしながら、公園で歯を磨いて出勤していく... というものでした。
また、コロナの影響でバイト先が潰れた人や内定が取り消されている人がいる状況で、インターンの募集があるのか?自分は受かるのか?という心配もありました。
ミラティブの存在を知った
そんな不安定な状況の中、ホロライブ沼にハマることで自分のメンタルを保っていました。猫又おかゆさん や さくらみこさん の動画を聴きながら1日中コード(Go言語)を書いていました。
ブラウザでYouTubeを解析して、ホロメン(ホロライブ所属タレントの総称)のライブ更新情報・コメントの全データを取得するためのクローリングロボットを作ったり、その他にも色々な手段でデータを集め、それらのデータを分析してホロメン同士の仲の良さを解析・動画にタグ付けして検索を容易にする・ライブの盛り上がっているポイントを探す・それらのバッチ処理化...などそういうプログラムをいっぱい書いてました。
自分はこの業界(Vtuber・ライブ配信)で生きていくんだなと、勝手にそう感じていたのを覚えています(やばい)。 そして、そのまま安直にVtuber・ライブ配信の会社に入ってインターンをしようと思い至り、いろいろ調べている中でミラティブを知りました。
偶然の力で面接にこぎつけた
ミラティブの存在を知ったものの、当時はミラティブのエンジニアインターンの募集はありませんでした。 しかし、ミラティブの企画インターンの募集があったので、他社のライブ配信アプリのエンジニアインターンと並行して受けていました。
結果的にはミラティブの企画インターンは書類で落ちてしまい、他社の方の選考は順調に進んでいるという状況になっていました。
もう一つくらい受けておこうかなと思って、インターン募集欄を眺めていたところ、偶然ミラティブのエンジニアインターンの募集が掲載されているのを見つけました。 しかも募集を掲載してから1日も経っていなかったので、一番乗りで面接受けるチャンスだと思い、強い気持ちで応募したのを覚えています。
応募書類には直近自分が頑張ったことをめちゃくちゃ書きました。気持ちで押し切ろうと決めてました。 特許庁に提出したQRコードカモフラージュアルゴリズム・そこそこ話題になった大学非公式ウェブサイト・Qiitaの記事・上述したホロライブ関係のリポジトリなどでアピールしました。
いきなりCTOと面接して入社
書類通過後、カジュアルに話したいと言われてCTOの横手さんとお話しすることになりました。
まともに面接を受けたことがなかったので、「カジュアル面談=30分くらい雑談して本面接の日程を決める」くらいの認識でいました。なので何も準備せずに当日を迎え、横手さんから開口一番に「1分くらいで自己紹介をしてください」と言われた時は「普通の面接じゃん!」と裏切られた気持ちになったことを覚えています。動揺して全然うまく答えられませんでした。
結局1時間くらい話した後、「最短でいつから働けますか」と聞かれて「今から働けますよ!」と答えてそのまま入社することになりました。
ミラティブのアプリはめっちゃ難しいから覚悟が必要なこと、私のメンターは自分(横手さん)より厳しい人だから頑張って的なことを淡々と言われたのが印象に残っています。
入社後から今まで
こんなにでかいコードは生まれて初めて見た
4月。函館にフルスペックのMacbook Proが届いて私のインターン生活が始まりました。
Macbook Proが届く前の私は、中古の画面が割れている型落ちiMacでiOSアプリ開発をしていました。ビルドはめちゃくちゃ時間かかるし、日本語入力すると確率で画面が固まるしで、愛想を尽かしてiOSアプリ開発を断念した過去があります。そんな自分がiOSエンジニアになるのは不思議な気分でした。
いざMirrativのコードを見ると、その大きさに驚きました。どこから何を見ていいのか検討もつきませんでした。画面割れ型落ちiMacでもいいからもっとiOSの勉強をしておくんだったと後悔しました。
初給料日までは白米を食べた
休学の条件として、自分の家賃と生活費は自分で払うことになっていました。
しかし、私はアルバイトもせずずっとコードを書いていたタチなので貯金も全然ありませんでした。 加えて、函館の冬の光熱費は高いので3ヶ月分くらい滞納している状態でした。 そんなこんなで全然お金がなくて、お給料がもらえる5月20日までは白米とお惣菜0.5つで生活していました。
この時点ではインターンの契約が1ヶ月更新だったので、契約更新できなかったら自分はどうなるんだろうとヒヤヒヤしてました。
不安もある一方で、友達と出かける時はご飯をご馳走になったりして感謝仕切れなかったです。この時期は短い人生の中でも大変さと感謝に溢れた時期だったなぁと思います!
わかりあう願いに溢れていた
入社した直後に全社の前で挨拶する機会があり、zoomのチャットで温かく迎え入れてもらえたのを覚えています。
毎週水曜日にはユーザーフィードバックがありユーザーさんの意見・気持ちに全社で耳を傾ける姿勢も温かいなと思いますし、月一のプレミアムエモいデーで雑談会やテーブルゲームをして社員と交流を深めたり、毎週金曜日のTGIFでの社員さんの「私の履歴書」の発表だったり、Uniposで日頃の感謝を伝えたりなど、ミラティブのミッションである「わかりあう願いをつなごう」が体現されていて素敵だなと感じました。
日々の業務ではGatherというオンラインオフィスを使ってました。ゲームの世界に入っている感覚でコミュニケーションが取れるのが良いです。 私はGatherの世界にハマってしまい、現在はミラティブのGather管理人の1人になっています。 一度、ミラティブのGatherサーバーがぶっ壊れたことがあって、その時は頑張って緊急対応をしたのを覚えています。 そんな時もみんなが笑っていて、楽しく働けるのがミラティブです。
CocoaPodsのソースコードを読むことになった
最初の大仕事として、SDWebImage5.x系
のアップデートをすることになりました。
ライブラリの更新作業ってそんな大掛かりになることはないんですが、ver4系からver5系にかけてかなり大きい仕様変更があったので大変でした。特に大変だったのはSDWebImageWebPCoder
とCarthage
の相性問題でした。そのためCocoaPods
で管理することにしたのですがビルドできず。CocoaPods
のコードを読み進めていきながら仕様や意味を把握し、既存のPodfileスクリプトを分解&整理することになりました。podのBuildTypeをdynamic frameworkからstatic frameworkやstatic libraryに変えていくというニッチな作業です。
CocoaPods
はRuby
で書かれているし、まさか業務で読むことになるとは思わず、慄いた記憶があります。
CocoaPodsのWiki www.rubydoc.info
広告SDKの改修で障害が発生した
初夏が過ぎる頃、コイン広告ボタン周りの挙動の修正とリファクタリングを行っていました。
当時の私にとって大きめの改修タスクだったので、リリースされるのをワクワクしながら待っていました。しかし、いざリリースされると障害発生。広告のローディング画面から抜けられない不具合が発生していました。明らかに私の修正起因の不具合ですし、流石にその時はやばいこと起きちゃったなー、終わったなーと思いました。
しかし原因を解析してみたところ、プロダクトの実装部分に問題はなく、SDK側の振る舞いに問題がありそうでした。 結局、修正部分はリバートし、後日、別の広告SDKに入れ替えました。
iOS15, Xcode13対応で苦しんだ
秋を迎える頃、iOS15・Xcode13がリリースされました。それからしばらくの間は、iOS15とXcode13起因の不具合に対応する日々が続きます。不具合の原因も様々で、ネットに記事も少なく、自分で原因を突き止めていく必要がありました。
中でも一番大変だったのが、UITableViewController
のセル生成時においてリサイクルキューからUITableViewCell
を取り出す順番の仕様変更が起因の不具合でした。ニッチすぎる挙動変更だし、大きいコードの中から原因箇所を特定するのに苦労しましたね。まだ原因特定や修正方針を決めることにも慣れていなかったので、余計に時間がかかってしまったと思います。
ここら辺の苦しみを2度と味合わないように、今は不具合修正は緊張感を持って工夫をしながら行うようにしました。
行動ログを毎日つけるようになった
度重なる不具合修正・期限がある施策開発など、かなり経験を積むことができました。めちゃくちゃ大きい配信視聴画面のコードも読む機会がありました。 自分の成長と向き合う姿勢もだいぶ身についてきたかなぁと感じております。
例えば、最近だと「次に何をするか」を書き出していく行動ログを付けています。タスクが完了したら、そのまま流れで次のタスクに進まずに、一度立ち止まって何をすべきか書き出してから行動するように決めています。行動ログをつけることで1日を戦略的に過ごすことができるし、退勤時間にはその日の行動を振り返ることもできて便利です。
8ヶ月間業務を続けて分かったのは、とにかく改善(成長)が必要ということです。改善をするためには意識が必要ですし、意識するには行動が必要だと思っています。戦略的な動きを身体で覚えるようになって、行動ログを付けない日が来るのが待ち遠しい!しばらくは無駄のないスピード開発が当たり前にできることを目指していきます。
対面で会えた
12月17日に開催された年に一度の「すごいプレミアムエモいデー」に参加してきました。宿泊費・交通費を全額出していただいて、函館から東京へ!お世話になったミラティブのメンバーに会うことができました。クライアントエンジニアで飲みに行ったり、同じ北海道出身のインターン仲間とミラティブメンバーで飲みに行けたりして、とても良い思い出になりました。
業務後に飲んでいたりすると、色んな方達から「10年後どうなりたいか」という質問をされたのが印象的でした。 普通に生きていると、ご飯を食べること・目の前の仕事を完璧にこなすことだけを意識してしまいがちですが、それだけでは10年後のビジョンは浮かんでこないなと気づきました。
10年越しのビジョンを作るには、自分という枠を外に広げていくことが大事なのかもしれません。 学生としての自分、エンジニアとしての自分、地方に住んでいる自分、ヲタクな自分、iOSチームにいる自分、ミラティブを作っている自分。 色々あると思うので、今後はそういうものに向き合っていきながら10年間を過ごしきってみたいと思います。
おわりに
以上が私の「休学を決めてからミラティブで1年間インターンするまで」でした。面白そうな部分をピックアップして書いたので、ここには書いていない色んなことが他にもあります。函館でのんびり暮らしながらミラティブの雰囲気・レベルの中で働けたのはすごく良かったです。
田舎に住んでいると、大学に通いながらエンジニアとして働く機会ってほとんどないですよね。しかし、今はリモートワークという形態で働けるところも若干増えてきています。強い気持ちが必要ですが、楽しいことも多いので興味があれば挑戦してみてください!
謝辞
私は休学をしてフルタイムで働いていたので、「今年1年の生活=ミラティブ」と言っても過言ではないくらい濃い時間を過ごすことができました。
真摯に私の成長と向き合ってくれた千吉良さんと、あたたかく迎え入れてくれたiOSチームのメンバー、ミラティブの皆さんに感謝です。
We are hiring!
ミラティブでは、強い気持ちと情熱がある若きエンジニアも募集しています!インターンや体験入社も募集しているのでぜひ遊びにきてください。
このブログを見て興味を持ちましたと言ってくれたら喜びます! 他に気になることや聞いてみたいことがあればコメントでお伝えください!
https://speakerdeck.com/hr_team/engineers-handbookspeakerdeck.com