はじめに
2024年9月から1ヶ月間、エキサイト株式会社のSaaS事業部で就業型インターンシップ「Booost!!」に参加させていただきました。インターンを通して経験したことや学んだことを紹介します。
自己紹介
理学系の大学院の修士1年で、電離圏についての研究を行っています。大学3年生のときにプログラミングに出会い、ソフトウェア開発に興味を持ちました。現在はフロントエンドの開発を主に行っています。Firebaseが好きでよく使っています。今回のインターンシップではチーム開発とエンジニアの働き方を実際に体験したいと思い、参加させていただきました。
インターンに参加するまでの技術スタック(2024/09現在)
私のこれまでの開発経験をまとめたいと思います。
Python: 2年
TypeScript: 半年
- Reactを用いたフロントエンド開発を行ってきました
業務内容
SaaS事業FanGrowthの開発に携わりました。 FanGrowthでは、以前までフロントエンドをVue.jsを用いて作られていましたが、現在Reactの移行を進めています。
今回のインターンではReactへの移行業務をさせていただきました。 具体的な開発内容としては、共通コンポーネントの作成、API連携、画面作成等の機能を実装しました。
働き方について
全てフルリモートで業務を行いました。
以下のスケジュールで稼働しました
- 10:00 ~ 13:30: 開発
- 13:30 ~ 14:30: 休憩
- 14:30 ~ 18:30: 開発
(日によっては、ミーティングや面談等もありました)
開発では、JIRAを用いてタスクごとにチケットが発行されており、割り当てられたチケットの開発を行いました。 チケット発行→開発→レビューというフローを繰り返して行いました。 ミーティングでは、エンジニア内の進捗報告会の参加や、事業全体に関わる話し合いにも参加させていただきました。
人事、メンター、上長の方々と面談をさせていただくこともありました。
インターンを通して学んだこと
技術について
これまで個人開発をメインに行ってきたため、他の開発者が書いたコードに触れる機会が少なかったですが、インターンを通して実務のコードに触れる経験をすることが出来ました。他人の書いたコードを理解して新しい機能を実装することが想像以上に難しかったです。
また、機能を実装する際、UIについてもデザイナーの方が作成したデザインを基に実装する必要がありました。個人開発では、どうやってお洒落なUIを作るかという意識でコーディングをしていましたが、実務では「デザイン通りに実装する」ことが求められました。CSSの細部まで理解していなかったため、デザイン通りに実装することは想像以上に大変でした。
開発のルールに柔軟に対応することも難しかったです。
例)開発のルール
特に、印象的だったのが共通コンポーネントの粒度とCSSの2点です。
1点目の共通コンポーネントについてですが、これまで個人開発でボタンやフォームなどを共通化する程度で、基本的にその場でUIを記述していました。しかし、FanGrowthではボタンやフォームはもちろん、Flex
やCard
, Grid
といったレイアウト要素までコンポーネント化されており、とても新鮮に感じました。
2点目のCSSに関しては、main.css
に色などのスタイルを定義して、そこからインポートしてスタイルを適応していました。個人開発では、その場でスタイルを記述していたため、ページごとのデザインの統一感が課題になっていました。しかし、この方法を取り入れることで、統一感のあるUIを実現できることを学びました。
また、触れたことのない技術(Storybook, Radix, SWR等)が多くあり、それぞれキャッチアップする必要がありました。個人開発では技術ブログや生成AIに頼りがちでしたが、インターンでは公式ドキュメントから情報を得るように心がけ、新しい技術のキャッチアップを行いました。特に、Storybookは実際に画面に描画させる必要がなく、Storybookのサイト上に描画をしてくれるので、共通コンポーネントを作成する際には非常に便利なライブラリだと感じました。個人開発でも是非導入してみたいです。
働き方について
業務ではエンジニア社員の方々と近い内容で日々業務を行いました。 Tandemというチャットツールが導入されており、リモートでもコミュニケーションを常にとれる環境がありました。 リモートではありましたが、チーム全体で作業している雰囲気を味わうことが出来ました。
セルフマネジメント力
業務を通して印象に残ったのは、タスク管理能力が想像以上に求められる点です。開発タスクに加え、ミーティングや面談、コードレビューなど、多岐にわたるタスクがあります。リモートワークという特性上、これらのタスクを自分で管理し、適切に優先順位をつける必要がありました。
また、開発中に分からない点に数時間費やしてしまうことが何度かありましたが、質問することで即座に解決するケースもありました。自分1人で解決できるかどうか判断するためにも、常に理解度を意識することが重要だと感じました。理解度に応じて取るべき行動(公式ドキュメントを読む、ソースコードを読む、質問する等)を適切に選択することが大切です。 質問をする際には、課題と解決したい点を言語化して、質問させていただく方の時間を無駄にしないように心がけました。
インターンシップを通してタスク管理能力と質問力はエンジニアとして重要な要素であると実感し、今後も意識していきたいと思いました。
最後に
メンター、同じチーム、人事の方々に支えられながら1ヶ月間を過ごすことが出来ました。 社員のみなさんが優しく接してくださり、最後まで楽しく業務を行えました。 技術的な質問があった際に、相談できる環境があり心強かったです。 インターンを通して学んだことを今後のキャリアに活かしていきたいと思います。 本当にありがとうございました!