📘

「カナリー」インターン体験記〜チーム開発初心者からの成長〜

2024/05/23に公開

はじめに

はじめまして、株式会社カナリーで半年間、フロントエンジニアとしてインターンをしている雨宮光汰です。今回は、チーム開発がほぼ未経験だった自分がカナリーのインターンで行ったことや学んだことを書きたいと思います。カナリーに興味がある方、インターン先を探している方の参考になれば幸いです。
https://corp.canary-app.jp/about/about_canary.html
https://prtimes.jp/main/html/rd/p/000000018.000046040.html

自己紹介

私は早稲田大学教育学部(文系)の4年生です。大学では経済、経営学を専攻しており、プログラミングは独学で学習してきました。フロントエンドを中心に開発しており、プログラミング経験は 2024年5月現在で約1年半となります。

インターンを始めたきっかけ

React を活用したフロントエンド開発に携わることのできるインターンを探していた中で、カナリーのインターン募集を見つけました。カナリーは急成長中のベンチャー企業であり、優秀なエンジニアが多数在籍していることから、刺激的な環境で自らのスキルを伸ばすことができると考えました。
また、面接の際の雰囲気からも、質問しやすく働きやすい環境であると感じたことがカナリーを選んだ大きな理由です。実際にインターン参加後も、メンターの方々が丁寧に質問に答えてくださり、1on1 などを通じて私が仕事をしやすい環境を整えてくれたおかげで、すぐに新しい環境に馴染むことができました。

インターンで行ったこと

https://biz.canary-app.jp/cloud
インターン期間中は、不動産仲介会社向けの顧客管理システム「カナリークラウド」の開発に携わりました。フロントエンドエンジニアとして、主にTypeScript、Reactを使用し、UIの実装やAPIとの連携、エディター機能の移行などをしました。最新のフロントエンド技術に触れられたことは、大変貴重な経験となりました。さまざまなタスクに取り組む中で、特に印象に残った2つのタスクについて以下説明します。

1. バックエンド API との連携

新しくバックエンドで実装されたAPIの繋ぎこみとUIの実装をしました。バックエンドのAPIのロジックを理解した上で、フロントエンド側で必要となるロジックを検討し、APIとの連携をしました。この過程でTanStack Queryというライブラリをはじめて使用したため、学びながら開発を進めていく必要がありました。TanStack Queryをはじめて使用したことで、新しいライブラリの学習コストはかかりましたが、データ取得やキャッシュ管理などの機能を効率的に実装できたことは大きな収穫でした。

2. Lexicalへのエディター移行

もう1つのタスクでは、従来使用していたDraft.jsからLexicalへのエディターの移行をしました。移行の背景としては、従来使用していた Draft.jsのサポートが終了してしまい、今後のメンテナンスやセキュリティアップデートが期待できないことがあります。新しく導入したLexicalは最新のリッチテキストエディターであり、高度なカスタマイズが可能で、さまざまな要件に対応できる拡張性の高いエディターです。一方で、その複雑さゆえに学習コストも高く、公式ドキュメントの理解を深めながら移行作業を進める必要がありました。しかし、その過程で仮想 DOM によるレンダリングの仕組みやFluxアーキテクチャに基づくデータフローなど、Reactの中核概念の理解が一層深まりました。また、モダンなフレームワークが内包する高度な設計思想に触れることができ、フロントエンドエンジニアとしての視野を大きく広げる機会となりました。

楽しかったこと

インターン期間を通して、自分のできることが徐々に増えていったことが何よりも楽しかったです。最初はコードの量に圧倒され戸惑うことも多かったのですが、メンターの方々に簡単なUIの改修からアサインしていただき、徐々にプロダクトやコードの理解を深めることができました。その過程で新しいツールやライブラリにも次々と触れていき、勉強は大変でしたが、それ以上に充実した毎日を過ごせました。自分のスキルが着実に伸びていく実感を得られたことが、強い達成感とやりがいにつながりました。

難しかったこと

一方で、プロダクトレベルの品質を持ったコードを書くことは非常に難しいと感じました。必要な要件を満たし動作する機能を作ること自体は可能でしたが、実際にプロダクトとしてリリースできる水準のコードを書くには、さまざまな観点での配慮が求められるため、難しかったです。具体的には、異なるブラウザやデバイス環境での動作の違いへの対応、パフォーマンス面での工夫としてメモ化やキャッシュの活用など、考慮すべき点が多岐に渡ります。要件を満たすだけでは不十分で、本番環境で問題なく動作するための高い品質が求められることを実感しました。

PR では、Conversationが55とあまり見たことのない数字になるまで、みっちり指導してもらえました笑

インターンで学んだこと

技術的なスキルだけでなく、チーム開発におけるマインドセットの大切さを学ぶことができました。
プロジェクトにおける報連相の重要性がその1つです。開発の進捗に遅れが出そうになった際には、すぐにマネージャーやメンバーに状況を報告し、相談することが大切だと気づきました。一人で抱え込まず、早めにコミュニケーションを取ることで、適切な対応を協力して検討でき、スケジュールの大幅な変更を回避できます。
また、可読性の高いコードを書くことの重要性も学びました。自分だけでなく、チームの誰がコードを見ても理解しやすいように心がける必要があります。 レビュアーの理解を助けることで、レビュー工数を大幅に削減でき、全体の生産性向上にもつながります。

インターンをやりたい人へメッセージ

カナリーでは、上述のように質問しやすい風通しの良い雰囲気があり、メンバーの方々が丁寧にサポートしてくれます。技術的な質問に留まらず、進路相談なども気軽にできる環境でした。居心地の良さを感じながら、ストレスなくインターンに専念できましたので、チーム開発初心者の方でも安心して挑戦できると思います。成長したい学生の皆さんにはぜひおすすめしたい会社です。

終わりに

以上、私のカナリーでのインターン経験についてご紹介しました。最先端のフロントエンド技術に実践で触れられただけでなく、プロフェッショナルな環境でチーム開発の経験を積むことができ、大変充実した時間となりました。技術力だけでなく、チームの一員としてのマインドセットについても多くを学ぶことができました。コードの品質や可読性、進捗管理など、プロダクト開発の現場で求められるさまざまなスキルを身につけることができ、今後の自身の成長に大いに役立つ経験ができたと思っています!

Canary Tech Blog

Discussion