見出し画像

【インターン体験記】エンジニアとしてはもちろん、社会人としても超成長できた話

はじめまして、2024年1月〜2024年3月の間、ミラティブの機能開発チームでバックエンドエンジニアとしてインターンをしていた、山﨑正大朗です。
この記事では、ミラティブでインターンして学んだこと、得たことを書きたいと思います。ミラティブに興味のある方や、インターン先を探している方の参考になれば幸いです。


自己紹介

同志社大学生命医科学部3年です。大学では4月から研究が始まります(泣)。普段はGo言語で書いていてOSSにPull Request出したり、ライブラリを書いたりハッカソンに出たりしています。
今までは様々な会社でインターンとして参加していたのですが、初めてWebの勉強をした頃から知っていたミラティブで働いてみたいなと思っていたので、今回ミラティブでインターンすることができて本当によかったです!

ミラティブでやったこと

ミラティブでは主に4つのタスクをやらせていただきました。最初の2つは入社してすぐのWelcome issue的な立ち位置のものです。

1.ログ保管料金軽減のためのWebhook API呼び出し時にdebugログを出さないようにする

これが最初のissueです。最初のissueだったためdebug logを削除するという比較的簡単な内容でした。debug logを削除するだけなのですぐ終わりましたが、実際にミラティブの開発体系やディレクトリ構造、デプロイ・リリースのやり方などミラティブでの一連の開発プロセスを学ぶのには十分でした。

2. ライブゲームのデバッグ用APIでユーザー作成するとcreated_atが0になる不具合の修正

Mirrativアプリにはライブゲーム(https://www.mirrativ.co.jp/product/game)というものが存在します。これは配信者の配信中のゲームに視聴者が介入できる次世代のゲーム体験です。

このタスクはWelcome issueに続いての2つめのタスクだったのですが、1つ目とは違いtestなども修正する必要があり、ガッツリ実装することができました。実際はユーザー作成時に使用するcreated_atの周辺の処理をちょっと変えるだけの修正だったのですが、それに関係して変更する部分も多くて面白かったです。

3.ライブゲームAPIのエラーを監視して、エラーの急増を検知

次に取り組んだタスクです。ライブゲームAPIにはエラー監視が十分に整っておらず、エラーの急増に気づきにくい状況でした。これに対応するためにエラー監視をライブゲームAPIにも対応させることとなり、エラー監視の方法は元々他のサーバーで使用されていた方法を使用することとなりました。

その方法はRedashを使用したものです。全体的な流れとしてはサーバーからエラーに関するlogをBigQueryに送信します。その後BigQueryのデータをRedashから読み取ってエラーログの急増を確認するとSlackに対してそれを通知します。

私はBigQueryにエラーログを送信する部分とRedashからBigQueryのログを読み取る部分を実装しました。初めてBigQueryを触ったのでキャッチアップに時間がかかりましたが、かなり勉強になりました。

このタスクでは途中で新しいタスクと出会うことになります。それは、このPR上でCIがflakyになってしまうという問題です。この問題はすぐにチームに共有し、特定のライブラリを削除することで解決できました。特定の問題を解決しようとすると、それがまた別の問題を引き起こすことはエンジニアリングにおいてよくある話です。

今回は問題を見つけてそれを報告して対策を考え、元の問題とは別に修正案を実装しました。この一連の流れは他の開発でも通じるところがあり大変勉強になりました。

4.合言葉登録APIの実装

Mirrativには「合言葉」という機能があり、そのAPI開発に携わりました。このタスクは僕がメンターに「API周りのタスクをやってみたい」と志願してアサインしていただいたタスクです。API実装は実装仕様を書くところから始まりました。API実装仕様を書くのは初めてだったのですが、メンターの助けもあり、リクエストやレスポンス、内部ロジックを実装を見通しながら書くことができました。

usecaseからcontrollerまでクリーンアーキテクチャを意識しながら、実装していくのは面白かったです。特にテストはかなり緻密に書く必要があり、テストカバレッジなどを気にしながら開発することができました。

ミラティブで学んだこと

ミラティブで学んだことはとても多くありました。エンジニアとしてはもちろんなのですが、社会人として最も成長できたインターンだったと思います。

1.技術力

ミラティブではとにかく技術的に成長できます。普通は社員でやるような重要度の高いタスクなども自ら志願すれば取り組むことができ、レビューも丁寧にしていただき自分の実装に足りていないところを再認識できました。

タスクの難しいところもメンターと相談しながらできるため、詰まらずにタスクに取り組むことができました。

2. エンジニアとしての周囲とのコミュニケーションのとりかた。

今回のインターンではとにかく「伝える」ということについて色々とご教示いただきました。まずは自分の状況を周りに伝えるということです。ミラティブにはSlack上で「times」という分報チャンネルを活用する文化があり、自分のtimesには自分の好きなことを書き込めます。

インターンを始めてしばらく経った頃にメンターの方に「もっとtimesに自分が何をやっているかを書き込むべき」だとご指摘いただき自分の状況を詳細にtimesに書き込むようにしました。

次に、周りにわかりやすい文章で伝えるということです。私の文章はまだまだ稚拙であり、ミラティブでは毎朝、自分のタスクの進捗を伝えるミーティングがあるのですが、そこで自分のタスクの進捗をどうやって分かりやすく伝えるのかであったり、他の社員の方に相談するときにどういった文面にすれば伝わりやすいのかなどを教えていただきました。

また、自分の考えを伝えるということも教えていただきました。ずっとご指摘を受けていたこととして、自分の意見をチームの改善のために発信するということができていませんでした。今でもまだまだ改善の余地があると感じますが、もっと物怖じせずにチームに発信できたらと思います。

ミラティブインターンの良さ

1. 圧倒的開発体験

ミラティブではとてもいい開発体験をさせていただきました。インターン生にもハイスペックなMacが支給されますし、デプロイ・リリースの方法はとても簡単で、すぐにキャッチアップできます。サーバーはGo言語を使ってClean Architectureで実装しておりモダンな技術スタックです。

また、各インターン生にはメンターがつきます。メンターによって多少の個人差はあるようですが、僕の場合は毎日1on1をおこない、その中で進捗を擦り合わせ、適切なアドバイスをいただくという形でサポートいただきました。

取り組むタスクも希望を伝えることで、実際にやりたいタスクにアサインいただけました。僕の場合はこれによりAPI開発周りのタスクに携わることができました。チームの状況なども影響すると思うので、必ず希望が通るとは言い切れませんが、個人のキャリアや意志に向き合ってくれる環境です。ミラティブではインターン生でも成長意欲さえあれば十分な開発体験を得ることができます。

2.エンジニア・社会人としての成長機会

ミラティブではインターン生も社員と同じように、チームの開発ミーティングに参加して進捗報告を行うこともあれば、全社ミーティングにも参加しミラティブの社風やCEOの赤川さんのミラティブの将来への考えなどを聞くことができます。

また、毎日のメンターとの1on1では今の自分に足りていないところや、チームのために改善していくべき点をご教示いただき改めて自らを見直すことができました。

とにかくミラティブでは対話をする機会をいただき、たくさんの方からフィードバックをもらい、さまざまな考えやものの見方を見聞きすることが多くあり、エンジニアとしてはもちろん社会人としても非常に成長できたように感じます。

特にメンターには色々と気を遣っていただき、僕がどうやったらもっと成長できるかなどを考えていただいたり、タスクの進捗なども気にかけていただきました。

最後に

以上がミラティブでの体験記になります。本当にいい経験をさせていただきました。メンターの白川さんをはじめ、お世話になった方々にお礼を申し上げます。

ミラティブでは現在インターンを募集してるので、気になった方はぜひ応募してみてください!



この記事が気に入ったらサポートをしてみませんか?