はじめに
大阪産業大学3年の関佑太です。
2023年12月18日~2024年3月31日の間N予備校のAndroidチームにインターンで参加していました。
私がこのインターンに参加した時のスキルレベルとしては次のような感じです。
- 個人開発でアプリを作ったことはある
- テストコードは簡単なものしか書けない
- アーキテクチャは最近意識し始めた
ドワンゴのインターンに参加するのに上記のスキルが必須かというと全くそのような事はなく、後述する開発サポートの時間で分からない事を現場のエンジニアに聞く事ができる時間があるので個人開発でアプリを作ったことがなかったり、テストコードを書いたことがなくても大丈夫だと思います。また、私は、インターンが始まった後にスキルレベルを聞かれましたが、その際に素直に言えば学習する時間を取ってくれると思います。
私は以下のインターンに応募して今回参加させていただく事になりました。
サポート体制
私の場合は毎日30分ほど開発サポートという時間があり、業務をしていく上で分からない事や迷っている部分を相談できる時間がありました。この時間では業務以外の質問をする事ができます。この時間を使って、業務に関係のない雑談や就職活動に関する相談もできました。メンター以外の人ともこの時間を使って話す事ができるので、色々な人と話す事ができて良かったです。もちろん開発サポート以外の時間でもSlackで質問をすることもできます。
業務環境
業務で使用するパソコンは自分でWindowsかMacを選ぶ事ができました。私はWindowsを選択しました。
業務で使用していたパソコンのスペックは最新の物ではないものの業務的には特に問題のない性能でした。
Androidアプリ開発の実機デバッグ用端末としてGoogle Pixel 8を支給していただきました。(最新のPixelを欲しくなった、、、)
N予備校のAndroidチームは自分を含めて6人で全員がリモートで働いていました。リモートワークの方が出社する時間がないので個人的には嬉しかったです。インターン生はかなり柔軟にシフトを決める事ができて、午前中の2時間だけ働くというような事もできました。
一日の流れ
時刻 | 内容 |
---|---|
10:00 | 出勤 |
12:30~13:00 | N予備校定例 |
13:00~14:00 | 昼休憩 |
15:00~15:30 | チーム日例 |
15:30~16:00 | 開発サポート |
18:00 | 退勤 |
日によって違いますが、ある1日のスケジュールはこんな感じでした。
出勤時間や退勤時間に関しては、自分の場合は週20時間以上という条件でインターン生が自由に決める事ができたので、例えばもう少し出勤して早めに退勤したりという事もできます。
次にN予備校定例ですが、これはN予備校に関わっているデザイナーやAndroidエンジニア、iOSエンジニア、Webエンジニア等が出席してN予備校全体での相談事などを話す時間です。
昼休憩に関しては、予定が入っていない時間であれば自分でいつ取るかを決める事ができます。
チーム日例では、チーム内で今どの作業をしているかなどの共有と相談事等がある場合はチーム内で相談したりします。
私のインターン先のチームでは、バックログで作業が「作業前、進行中、レビュー中、完了」のどの段階にあるかをバックログで管理していました。以下の画像だと、作業前のタスクと進行中のタスクは2つずつあります。そして、タスクの作業が進むと次の段階の場所に移すという風になっています。
例えば、未着手の作業に手を付けると一番左の作業前の場所から進行中の場所に移動させます。こうすることで、自分のタスク管理もできる上に他のチームメンバーが今何をしているかなどの情報を簡単に知ることができます。
最後に開発サポートでは、日替わりでチームメンバーと面談をして業務で分からない事や相談したい事を話す時間が設けられていました。業務以外の相談もできるので私は「なぜドワンゴに入社したのか」や「就職活動に関する質問」、「おすすめの技術書」などを聞いたりもしていました。
業務内容
私がインターン期間で行った業務は大体このような感じです。
- 軽微な修正作業(テキストの差し替え等)
- 古くなったコンポーネントの置き換え作業
- テストコードの作成
- 静的解析ツールの調査
この中から今回は、「古くなったコンポーネントの置き換え作業」と「静的解析ツールの調査」について軽く紹介します。
古くなったコンポーネントの置き換え作業
N予備校のAndroidアプリではJetpackComposeという物を使ってアプリを開発しているのですが、JetpackComposeのバージョンが上がり、テキストのincludeFontPaddingのデフォルト値が変わったことによってレイアウトが崩れるので、今まで応急的な対応していたものを恒久的な対応したものに置き換えるという作業を行いました。
以下の画像は変更前と変更後の比較をしたものになります。 よくみると左右で少しレイアウトがずれているのが分かると思います。これはAndroidのincludeFontPaddingという仕組みが関係しています。興味がある人は以下のリンクから調べてみてください。
左右を全く同じにする事もできるのですが、余白を指定する数字を細かく区切る必要があり、メンテナンス性的に良くないのでできるだけ近くするという程度に収めています。
変更前 | 変更後 |
---|---|
【苦労した点】
修正前と修正後の表示をできるだけ同じにする作業
【工夫した点】
1つのPullRequestで出してしまうとレビュワーの負担が大きくなるので数回に分けてPullRequestを出した事と、レビューしやすいように変更を加えた部分を確認できるスクリーンショットを全て添付しました。
静的解析ツールの調査
チーム内のバックログに静的解析ツールの調査のチケットがあったので、やりたいと伝えるとやらせていただく事ができました。
そもそも静的解析ツールとは何かと言うと、プログラムを実行する事なくプログラムを解析するツールの事です。静的解析ツールを利用する事によってプログラムの書き方がルールに則っているかやプログラムの複雑度等を調べる事ができます。
この静的解析ツールを導入することによって、既にあるコードの書き方の統一等の質の向上やチームメンバーの書くプログラムの質の向上を狙っているようでした。
私はこの調査タスクを通して個人開発だけだとあまり意識する事がなかったことを考える事ができました。例えば、使用するツールのライセンスや事例の数、コミット数等の指標を参考にしながらどのツールを提案するかを考えました。個人開発だとこの部分を意識する機会がほとんどなく、目的を達成できるかという事しか考えていなかったので今回いい経験をさせていただきました。
躓いた点と身についた点
- 見たことの無いアーキテクチャだったので理解に時間がかかった。(珍しいというわけではなく私の知識不足)
- 開発の際に特定の環境では動かないという事を知らなかった。
- 他職種の方との連携の大切さ
- テストコードを書く際の考え方(どこまで書くか)
- 技術に関する調査をする際の考え方
まとめ
私はこのインターンを通して大規模なアプリの開発での業務や開発する際にどういう事を話し合いながら進めるかなど個人開発では体験できない貴重な経験ができました。
就業型のインターンに参加する事によって自分がエンジニアとして働くイメージを鮮明に持つ事ができるので、エンジニアになりたいという方やエンジニアという仕事に興味があるという方は是非参加を検討してみてはいかがでしょうか?
また、プログラミング初心者の方も技術力が低いからという理由で諦めずに応募してみてはいかがでしょうか?
3か月間という短い間でしたが、たくさん学ぶ事がありました。
ありがとうございました。