はじめに
こんにちは!創価大学大学院理工学研究科 修士1年の長田翔太です。普段はAIの研究をしていたり、toBの企業で長期インターンシップに取り組んでいました!今回はCA Tech JOBとして、タップル内のKoigramチームでのインターンシップに1ヶ月間参加しました!この記事では、この1ヶ月間の私の取り組み、学びについてまとめさせていただきます!
Koigramとは
株式会社タップル「無料でも本気の恋はできる」をコンセプトに新しくリリースしたマッチングアプリです。特徴としては
- 心理学者監修の16タイプ恋愛診断
- LGBTQ+の方もご利用いただける設計
- 全機能無料で利用できる
があげられます!
このプロダクトは少数精鋭で開発・運用されていて、新機能リリースのスピード感などが特徴的でした。エンジニア目線としては、タップルの開発で培った豊富な技術とスタートアップ的なスピード感や試行錯誤の両方を楽しめる環境だったと感じています!
実際に取り組んだ業務の流れ
ここでは、今回のJobで私がどのような流れで業務を進めていったのかを、時系列で振り返ってみたいと思います!
【タスクへのオンボーディング】
今回、Koigramチームで私が任されたのは「メッセージ非表示機能」のサーバーサイド実装でした。
この機能は、多くのユーザーとやり取りをされている方が、メッセージを整理し、より快適に利用できるようにするためのものです。具体的には、「特定ユーザーとのメッセージルームを表示・非表示に切り替えるAPI」と「非表示にしたユーザーの一覧を取得するAPI」の開発を担当しました。
オンボーディングでは、プロダクトマネージャー、デザイナー、クライアントエンジニア、サーバーサイドエンジニアの全員で要件のすり合わせを行い、スムーズに開発を始められる体制が整っていたのが印象的でした。
【APIの設計】
Job以前からAPI設計の経験があったため、今回も特に詰まることなく叩き台となる設計を作ることができ、自分としては手応えを感じていました。 しかし、実際にレビューを受けてみると、先輩エンジニアの方々の視点の深さに驚かされました。
自分では「これがベストだろう!」と思って出した設計も、先輩方からのフィードバックを通して、「他にもこういう設計が考えられる」「このパターンだと将来的に拡張しやすい」など、様々な角度からのアプローチがあることに気づかされました。
自分一人の視点では見えていなかった課題や改善点を知ることができ、設計というものがいかに奥深く、そしてチームで磨いていくものなのかを実感した経験でした。
【実装】
実装に入ってからは、サーバーサイドをTypeScriptで開発するのが初めてだったため、最初は少し学習に時間がかかりました。
とはいえ、プロジェクト全体が整ったアーキテクチャで構成されていたおかげで、一度構造を理解してからはスムーズに開発を進めることができました。
特に、今回のサーバーサイドではレイヤードアーキテクチャが採用されており、各レイヤーの責務が明確に分かれていた点がとても分かりやすかったです。
自分が担当した「メッセージ」ドメインも、各レイヤーに沿って実装を進めることで、他の領域に影響を与えることなく機能を拡張でき、開発体験として非常に心地よいものでした。
【レビュー】
GitHub上でPull Requestを作成し、変更内容のレビューをしていただきました。
そこでまず驚いたのは、レビューのスピードの速さです。感覚としては、Pull Requestを作成した“その瞬間”にレビューが返ってきたように感じるほどでした。
後から知ったのですが、レビューしてくださったトレーナーさんは、レビューがボトルネックになって業務全体のスピードを落とさないよう、意識的に早く対応しているとのこと。
その姿勢から、チーム開発におけるレビューの重要性と、円滑な開発体験を支える“仕組みづくり”の大切さを学びました。
技術的な学び
普段はRDB(リレーショナルデータベース)を使って開発していたのですが、今回は初めてNoSQLでの実装を経験し、多くの学びがありました。
体感として、NoSQLは自由度が高く、後からどんどん要素を追加できるという点が非常に魅力的に感じられました。
一方で、自由であるがゆえに、データの整合性やエラーを防ぐための制御が必要で、そのトレードオフを強く実感しました。
今回の開発では、メッセージルームのコレクションに「表示・非表示」のフラグを持たせる実装を担当しました。
この際に重要だったのが、「インデックスの設定」です。インデックスとは、データベースから情報を効率よく検索するための“索引”のようなもので、これまではあまり意識せずに使っていたことに気づきました。
今回は、実際に explain コマンドを使ってインデックスの有効性を測定し、その効果を確認しました。
この経験を通じて、データベース設計の奥深さを改めて学ぶことができ、自分にとって大きな気づきとなりました。
エンジニアとしての学び
今回のインターンでは、技術力だけでなくエンジニアとしてのマインドセットを大きく鍛えられました。特に印象に残っているのは、実装方針を相談するときに 「自分なりの結論を持つこと」 の重要性を痛感した場面です。
あるとき、複数案を用意してトレーナーさんに提案したところ
「で、長田くんはどれが一番いいと思う?」
と尋ねられ、答えに詰まってしまいました。調査は十分にしたつもりでしたが、自分の意思を示すところまで踏み込めていなかったと気づきました。
この経験から学んだことは大きく3つあります。
- トレードオフを言語化する
どんな実装にもメリット・デメリットがあります。それを整理して伝えることで、チーム全員が同じ土俵で議論できます。 - 自分のベスト案を提示する
「どれがいいですか?」よりも「理由があって この案がベスト だと思いますが、どうでしょう?」と切り出すと、議論が格段に前に進みます。 - 結果を振り返る習慣を持つ
自分の選択だと腹をくくることで、リリース後の結果を主体的に振り返り、次の改善に活かせます。
以来、設計や実装のたびに「まず自分ならどうするか」を考え、根拠とともに提案するようにしました。その結果、意思決定のスピードが上がり、議論も深まりやすく なったと感じています。
この「自分で考え、決断し、責任を持って学ぶ姿勢」は、今後どの開発現場でも通用する武器になると確信しています。
まとめ
CA Tech JOB生としてタップルの Koigram チームに参加したこの1か月間は、プロダクト開発の最前線で多様な技術に触れながら、一つの機能をリリースするという貴重な経験を積むことができました。毎日温かく迎えていただき、ランチではキャリアの相談にも乗っていただくなど、技術だけでなく人としても大きく成長できたと実感しています。ここで得た学びと気づきを糧に、これからもエンジニアとして着実に成長し、より良いプロダクトづくりに貢献していきたいと思います。