📱

合同会社DMM.com インターン 参加記録

2023/08/16に公開

目的

7/24 ~ 7/28 に合同会社 DMM.com(以下 DMM とする)が提供されているインターンシップの Android コースに参加したので、後で見直せるようにこの記事を書いております。

流れ

DMM 説明会

初日には DMM の事業や働き方などについての説明をまず受けました。
英会話やゲーム、電子書籍など様々な分野で取り組まれているという企業としての目線、またリモートワーク制度や企業内キャリヤの育成制度の充実などの従業員としての目線で紹介してくださいました。
DMM では倫理的な範囲であればどのよう事業に取り組んでも良く、そしてその内の成功したものを積極的に会社として押すというスタンスを取っておられるそうなのですが、そのことが非常に印象に残りました。

交流

インターンシップの期間中、何度か他のインターン生と交流する機会があり、興味のある分野やこのインターンシップに対する抱負などを話し合いました。テーマが Android 開発ということもあり、ほとんどの方はすでに何かしらの方法で Android 開発に関わっていました。自分はこのインターンシップに参加した理由の一つに Flutter を使って Android 開発をすでにしていたためもっと技術を伸ばしたいということが挙げられるのですが、同様に Flutter を使われている方、React Native で開発をされている方、Kotlin と Swift を使われている方など幅広くアプリ開発に携わっている方がいらっしゃいました。
また、講師の方や今年 DMM に入社されたエンジニアともお話ができ、非常に刺激的な時間となりました。

講義

Android 開発の基本ということで Kotlin を使ったアプリの実装方法、そして Android の UI のアーキテクチャなどについて学習しました。

講義の流れとしては、まず環境構築について丁寧に教えてくださいました。Android Studio を導入して、実際に Empty Activity を立てて、試しに空の Activity のアプリを実行しました。それに加えて、アプリのデータ保存用に Docker のセットアップなども行いました。

次に UI アーキテクチャに関することを、実際のアプリ開発を交えながら教えてくださいました。
以下学んだことを箇条書きにしたものです。

  • アーキテクチャは大まかに UI層、Domain層、データ層に分かれる
  • UI 層は大まかにウィジェット表示と、ユーザの操作などのロジックに分かれている
  • Domain 層ではデータ層の操作に使う処理が収められている
  • データ層ではバックエンドからデータを取得する処理が収められている
  • Android 開発ではネイティブでウィジェットを記述する方法と Jetpack Compose を使う二つの方法がある
  • Jetpack Compose を使う際にはウィジェットは @Composable で定義される

最終的なゴールは SNS アプリを作成することだったのですが、私たちには Domain 層とデータ層がかなり実装させられたものを与えられ、あとは UI の実装がメインとなるような状態で講義を元に実装しました。

演習

講義の後は各人が、自由に講義で扱った SNS アプリの拡張を自由に実装しました。
例えば自分がやったことの中には

  • スプラッシュ画面 & アプリのアイコン
  • 投稿一覧画面の詳細表示
  • 新規登録
  • プロフィールページ
  • 設定

などがあります。短い時間内での実装でしたのでできることは限られていたので、事後学習として今後も取り組んでいきたいと思います。他にも UI の面では、設定画面をドロワーで表記したり、機能面ではフォロワーの実装をされた方もいらっしゃいました。

ライブコーディング

ある画面を参考にしながら、DMM のエンジニアの方が解説しながら、デモのアプリ画面を実装するという企画もありました。私たちが講義や演習で学んだことを元に丁寧に解説しながら実装していました。最後にはそのソースコードも頂いて、今後の事後学習に大きく役立たせてくださいました。

まとめ

非常に有意義な5日間となりました。ところどころ調査しても分からないことやエラーなどで詰まった箇所もありました。それでも、そのような際に講師の方々にお尋ねすると親身になって話を聞いてくださり、適切なアドバイスや解決法を教えてくれたので、失敗をあまり恐れずに実装することができ、短い時間の中でも多くのことを学習することができました。

他にも DMM では短期インターンシップとして Android だけでなく Go やデータサイエンスのコース、そして短期だけでなく長期インターンシップなども用意しており、フロントエンドまたはバックエンドの自分の得意とする分野の経験をすることができるため、エンジニア系のインターンシップを受けたいと思われている方には是非とも DMM のインターンシップを受けることをお勧めいたします。

改めてこの場で、インターンシップの機会を頂けたことを DMM の方々に深くお礼申し上げます。

Discussion