2023年3月、2週間の間、ウォンテッドリー株式会社でインターン生をしていました。
これはいわゆるインターン参加記というやつです。

(もうちょっとまともな写真撮らなかったの?)

なにをしていたのか

以下、ウォンテッドリー株式会社やそのサービスのことを単にWantedlyと書くことにします。

WantedlyではChapterとSquadという単位でチームが分割されており1、自分は今回Mobile ChapterにAndroidエンジニアとして加入しました。

WantedlyがAndroid向けに提供しているネイティブアプリにはWantedly Visit, Wantedly People, Wantedly Internが存在し、今回、自分はWantedly Visitの機能改修やレガシーコードの置き換えなどを担当しました。

さて、現在Wantedly Visit Androidでは各画面をJetpack Composeで記述された画面に置き換えることを進めています。 (詳しくはWantedlyでのCompose導入/Introducing Jetpack Compose at Wantedlyを見てほしいです。)
今回のインターンでは、Wantedly Visit Android内に存在するレガシー化した画面をKMM2+Compose化することを目標にコードを書きました。

もうちょっと詳しく

Wantedly VisitにおけるKotlin Multiplatformの導入と実装を読んでいただけると分かる通り、ViewとLogicが完全に分離されており(これはそもそもGitレポジトリから違います)、画面を置き換えるというタスクは2つのレポジトリのコードを適切に変更、追加するというタスクに分割されます。

レガシー化していた画面というのは、2023年を今として5年ほど前に書かれたコードで構成されており、ビジネスロジックやAPIとの通信部分もViewと同じModuleに入っている状態でした。(流石にModule内のpackageは別でしたが…)
まずはViewのStateなどを持つ部分を実装してしまわなければそもそもDI(でダミーデータを流し入れるなどのインチキ)すらできないため、最初はビジネスロジックをKMM側に移植することを目標にしました。
結局その部分、上に挙げた記事にあるReactorやUseCase、Repositoryを2日と半日程度で書き上げました。その後、実装したReactorが正常に動くことを確認し、Jetpack ComposeでのViewを1日と半日程度で書き上げ、画面の要件定義や少しの手戻りなども含めると大体5日程でレガシー化した画面を1つKMM + Composeに置き換えました。 (実は要件から外した部分もあって、その部分の実装はしていないので完全移植とは言い切れないのが残念ですが…)

そういえば、

2023年3月、2週間の間、ウォンテッドリー株式会社でインターン生をしていました。

とあるのにも関わらず5日しかコードを書いていないんじゃないか?と思われた方がいるかもしれませんが、残りの日は既存の小さなIssueを閉じる作業をしていて、2週間の中で9割くらいは何かしらコーディングにかかわる作業をしていました。

よかったこと

・プロダクションのコードをいじったこと

インターン生がこれを思いっきりできる会社というのは限られている印象です。よく目にするインターンというのは長くても一週間、短ければ1日2日で、その実態は会社説明会/オフィスツアーであったり、インターン用に用意されたタスクをどうにかするというものが多いです。もちろんそれが求められているのかもしれませんが、せっかくインターンに参加したのなら何かしら自分がそのプロジェクトに参加した爪痕を残したいものだと思います(少なくとも自分はそうでした)。
このインターンで特に良かったところは、実際にGithubレポジトリにあるIssueに対して(メンターの助けを借りながら)自分で解決すべきタスクを設定し、タスクの解決に向けてコードを書いて、Pull Requestを生やすという実際のソフトウェア開発のフローを実際のプロダクトで行えるところだと思います。

・自分では手の届かない技術に手を伸ばせる

すでにこの記事にも何度か登場していますが、Wantedly VisitのMobile AppではKMMを導入しています。
最近はKMMを自社アプリに導入した!という例をぽつぽつと見かけるようにはなりましたが、個人で開発を行う中でKMMなどに触れることになる人はほぼほぼいないような気がします。
このような自分一人で手を伸ばすのが厳しい技術にも挑戦できたというところが非常に良かったです。

自分はこれでもまだ学部1年で、ソフトウェア開発の経験やAndroid開発の経験も浅い中で、自分の知らない技術の集合としてのアプリのコードを読めたこと、書けたことは非常にいい経験になりました。

思ったこととか

今回のインターンで、同じChapterに所属するエンジニアの方や、(別のChapterでしたが)自分以外に参加していた他のインターン生と関わる中で、自分の技術的な立ち位置、弱み/強みを言語化できるようになりました。ここにあまり深いことを書くつもりはないですが、今後自分が目指したいレベルというものを見極める期間にできたと思っています。個人的に低い目標だとは思っていませんが、今後はその目標に向かってプログラムを書いていきたいです。

宣伝

現在Wantedlyでは2023年のサマーインターンの募集を開始しています。別に人事の人やメンターから宣伝を頼まれたわけではないですが、技術的な成長に興味がある人は一考の価値ありだと自信を持って言えます。