▶️

DMMTVでiOSインターンに参加してきた話

2024/10/04に公開1

DMM.comさんでインターンに行ってきました!

みなさんこんにちは、ちゃんくろです。今回はDMM.comさんのDMMTVを開発するプレミアムプロダクト開発部で就業インターンに参加してきたのでこれについて色々振り返りをしようと思います。

参加してきた感想

めちゃくちゃ良かったです。(マジでシンプル)
XにもPOSTしたのですが、良かったと思うところを以下に箇条書きで記載します。

  • コードのレベルが高い
    • 読みやすい
    • しっかり難しい
  • 社員さんがとても優しい
  • インターン生でも裁量が意外と大きい
  • MTGの頻度が多いのでリモートでもしっかりと進捗確認しあえる
  • リモートが意外と快適

この中で少しつまんで書いていこうと思います。

コードのレベルが高い

これに関しては言わずもがなな感じがします。これまで大規模なプロダクトに接する機会がなかったため大量のコードを管理する上でのアーキテクチャ(個人開発やハッカソンレベルのアーキテクチャではなく)には興味があったのですが、今回それを目の当たりにして結構衝撃を受けました。
動画を扱うプロダクトというのもあってなのかState管理だったり、幅広いVersionをSwiftUIで対応しているということから普段使わないコードを書いたりと自分がこれまで開発してきたコードとは根本的に違う。(何かと言われるとほとんど全部、共通点は同じiOSアプリという括りだけだろ,,,って感じです。)
ただ、コードのレベルが高いというのは2つの項目でレベルが高いと感じました。
まず一つ目は読みやすさに関してのレベル
そして二つ目は幅広い知識量が求められるという点でのレベル
VIPERではあるものの、純粋なVIPERではなく開発チームが開発しやすいようなローカルルールがあるヨネ、みたいな話をみなさん聞かれると思いますがそんな感じです。
責務が少し被っている部分でどこに何を書くのかを考える際にMTGを組んでいただいたのは非常に貴重な機会だったなと今でも思います。
また、使用技術に関しても そもそもこんな実装があるんだ,,, の連続でした。知識量自体も非常に求められる中で質問に対して丁寧に回答してくださったメンターさんは神でした。

社員さんがとても優しい

これはもう、優しいんです。すごく
どんなエピソードが?みたいなところでいくと、全てです。
好きな人のどこが好きなの?みたいな質問が来た時に、全部です。ってなるような感覚で大丈夫です。
エンジニアの社員さんだけではなく、たまたまなのかもしれませんがインターンを通して関わりを持たせていただいた方はおそらく

struct everyone: AtDMM {
    yasashisa: Bool = true
}

です。

インターン生でも裁量が意外と大きい

これは自分でも結構びっくりしたことではあるのですが、初めに自分の目標を決める際にいくつか選択するのですがその中の一つに簡単にいうとコンポーネントのUI修正みたいな項目がありました。
実際にプロダクトを見ながらコンポーネントのUI修正に取り組もうとすると結構複雑になっていました。

上記のようになっているのかと思っていたら
UIComponentでDIが行われていたり、同じ描画処理で同じUIなのに少し引数が違っていたり、別々にVCに記載されていたりと共通化できていない部分もありました。
これだけ大きなプロダクトなので未改修の部分があって当たり前ではあります(コードのレベルが低いなぁ、みたいな悪口を言っているわけでは断じてありません。最高裁判所に誓えます)
ただ、だからこそプロダクトをグロースしていく中で使用しているコンポーネントやその引数、VCの責務などを考えたアーキテクチャにリアーキするべきだと思いました。
上記の内容をインターン進捗報告MTGでぼそっと言ったところ 「いいね」 の一言と共に僕の担当できる箇所が一つ増えたのです。
実際に声を上げると任せてもらえる環境というのはとても作ることが難しく、その文化を当たり前にすることはさらに難しいと思います。それを実際に団体運営やハッカソン運営で理解している(つもりになっている)からこそ、素晴らしい環境だと感じました。これは僕がぜひ次のインターンにDMM.comを推す理由の一つです。

リモートが意外と快適

次は働き方についてです。
DMMは基本的にエンジニアはみなさんリモートなのかなと思いました。オフィスでもエンジニアの島では空席の方が多く元々出社したい勢の僕からしたら少し元は不満に思うこともありました。
ですが、いざ出社、リモート両方を週5で体験すると考えも変わりました。
まず、出社のいい点は集中できること。根本的に100%を意識せずに発揮できるような感覚です。その分通勤がしんどかったりします。品川の駅が水没したニュースがあった日に僕は出勤していたのですが、あの日はリモートの良さを痛感した日でした。降り頻る雨で傘をコンビニで買うも、全く意味をなさずにタクシーで帰宅。これは大変だと思いました。

では逆にリモートでは?
こちらは家にいるということで集中が途切れたり、うちのくーちゃん(猫)が甘えてきたりと、デフォルトで自分の限界値×0.8されているような感覚です。ですがその分、定例MTGのありがたみが実感できました。進捗の共有や質問の対応、他部署との連携などに関してはおそらくリモートの方がいいと思います。

そのため僕の中で出した結論としてはハイブリッドが正義!
なのですがDMMは基本ハイブリッドらしく、エンジニアが働きやすい環境なのだなぁと実感しました。

まとめ

実際にこれまで実務の歴だけでいうと1年半ほどあるのですが、その中でもトップクラスに充実した1ヶ月を送れたと思います。
就業型ということもあり、実際の社員さんと同じようにDMMTVの開発における一人のエンジニアとして扱っていただける機会は非常に貴重なものでした。
不束者ではありましたが自分のできることは最大限やったと思っています。
ただ、やはり改善点は見えてくるもので自分にとって足りない部分に関しては修正していこうと思います。

これを見ている27卒以降の方へ

個人開発と実際にインターンで触れる大規模なプロダクトのコードでは得るものは結構違うと思います。、
使用する技術スタックに関しては興味のある部分について学べばいい話ではあるのですが、ここでいう得られるものとは UIHostingControllerの使い方、とかではなく

  • 他人にとって読みやすいコードとは?
  • 本当に綺麗なアーキテクチャではなく、本当に使いやすいアーキテクチャとは?
  • コメントアウトを書く頻度はどれくらいがいいの?
  • チーム開発をする上で何に気を配ればいいの?

という、本当に実務につながる知見のことです。
こればかりはどうしても得る機会が少なく貴重でいてかつ、規模が小さいプロダクトだと得られないものです。(学生しかエンジニアがいないベンチャー、とかだと本当に苦労すると思います。)
そのためにも正しい情報を得て、正しい努力
(HTMLだけを1年間勉強しました!ではなく必要なものを必要なだけキャッチアップする方が大切)
をすることは何よりも大切だと改めて感じました。
そしてもし来年強いエンジニアにとしてサマーインターンを選ぶ立場になった際にはぜひDMMのインターンに参加してみてください。(もちろん自分にとって納得できる選択をすればいいとは思います!)

Discussion