はじめに
2024年10月1日から1か月間、「Booost!!! Excite Internship2024」に参加させていただきました、しみはるです。本記事ではインターンの内容や、学んだことを紹介させていただきます。
自己紹介
情報系専攻の修士1年で、大学院では主にpythonでの数理最適化・進化計算アルゴリズムの研究・開発を行っています。今年の4月からWEBエンジニアを目指して活動しています。
サッカー観戦や小説、ラーメンが好きです🍜(特に家系)。音楽はJUDY AND MARYが好きで、最近はサカナクションにハマっています。
インターンでやったこと
ウェビナーPDCAクラウド「FanGrowth」のフロントエンドの開発業務に携わりました。 以下は、インターン期間中に担当させていただいたタスクの一覧です
- RadixUIを使ったリッチなラジオボタンの作成
- マルチセレクトコンポーネントの機能追加
- 全選択/全解除機能
- レポート一覧機能の作成
- 一覧表示、削除、ファイルダウンロードのAPI繋ぎ込み
- 共催ページの作成
日が経つごとにだんだん大きなタスクを担当させていただけるようになって、1ヶ月の中でも成長を感じながらの充実したインターンになりました。
学んだこと
インターン期間で学んだことについて、「技術」と「業務」という2つに分けて紹介します。
技術面
今回のインターンで私が使用した技術は主に以下の通りです
- ツール系
- Git/GitHub
- Docker
- Storybook
- 言語・ライブラリ
- TypeScript
- React
- RadixUI (UIライブラリ)
- SWR (データ取得用hooksライブラリ)
- Jotai (状態管理ライブラリ)
- その他
- Jira (タスク管理)
- Figma(デザイン)
コンポーネント設計/カスタムフック
実際に1行1行コードを書く力も大事ですが、一方でコンポーネント設計やコードの可読性・保守性などの抽象的な概念を頭の片隅に置きながらコードを読むことの重要性を感じました。 例えば、Tableコンポーネントの各行の記述をメインコンポーネントから分離することで、ビューとロジックを分離しつつ、可読性を抑える工夫がされている部分がありました。このようなコードを見た時、抽象的な概念を知っていると、ポイントを絞ってコードを読むことができます。
自動フォーマットに伴うGitエラー
ローカルで大量のコンフリクトが発生して焦りました。私の担当プロダクトではGitHub Actionsによる自動フォーマットが用意されていて、1回目のpush後はリモートをgit pullしてフォーマットによる差分を取り込んでから作業する必要があったのですが、これをせずに最新のdevelopをローカルでマージして再pushをして、その結果GIt履歴がぐちゃぐちゃになってしまったのです。リアルタイムでは原因がはっきり分からず、後で調べ直すことでようやく理解できました。ただ、これがあったおかげで色々と調査し、結果的にGit/GitHubの理解が深まったのはよかったです。
大規模なコード
大規模なサービスに携わらせていただく初めての経験だったので、コードを読む力がかなり成長した実感があります。すでに開発が進んでいるプロダクトでは、共通コンポーネントやカスタムフックの仕様を読み解きながら実装を進める必要があります。
インターン途中からは「この処理が何故必要なのか」「このコンポーネントを分けているのは何故か」など、関数や変数の必要性を意識しながら読むようになっていき、自分の中でしっくりくるコードの読み方を見つけることができました。
業務面
技術だけでなく、業務面でも学びが多かったです。自分が実践したことと、業務の中で重要性を学んだことの2つを紹介します
コミュニケーション
インターン期間中に意識的に取り組んでいたのは、「情報の伝え方」の工夫です。私はフルリモート業務だったので、テキストでのコミュニケーションの機会が多く、なるべく1ラリーで完結するような情報の伝え方を心がけていました。例として、エラー発生時には以下の情報を箇条書きで伝えるようにしました。
- 発生した問題
- 解決するために試した/調べたこと
- 自分なりの仮説
- エラー再現の動画、画面のキャプチャ
丁寧に情報を伝えることは、受け取る側のことを考えてのものですが、伝え手側にも2つのメリットがあると思います。1つは、情報をまとめる過程で、自分の思考も整理されるということです。
2つ目は、「何を調べたか・自分なりの仮説」を伝えることで、「私がどこまで理解していて・どこから理解していないか」を相手に知らせることができます。相手の理解度がわかれば、それに合わせてアドバイスができるので、認識の違いによるコミュニケーションの手戻りを減らすことができると思っています。
仕事のペース作り
自分のペースを自分で作れることの重要性を感じました。最初の1週間ほどは、思うようにタスクが進まず、気持ち的にも焦りが少しあったのですが、1つタスクが終わると、そこから一気に開発が捗る感覚がありました。インターンでは、やりやすいタスクからアサインして頂いていたと思うのですが、実際の業務ではそうもいかないと思います。大きなタスク・難易度の高いタスクでも、自分でペースメイクしながら、平常心で開発できるやり方を見つけていきたいと思いました。
感想
今回のインターンを通して本当に多くのことを学ぶことができました。そして何より、エンジニアとしてタスクを進めていく達成感と、チームでものづくりをすることの充実感、楽しさを感じることができました。一方で、自分にまだまだ足りないところ、これから伸ばしていきたいスキルも見えてきました。
一番は、技術力をつけることです。エンジニアとしての幅を広げるためにも今後はバックエンドやDBを含めてフルスタックに技術を学ぼうと思います。
また、組織づくりについても興味出てきました。エキサイトで学んだ円滑なコミュニケーションやtimesやテックブログなどの情報発信の文化などを参考に、最近は大学の研究室の組織作りに取り組んでいます。
最後に
メンターの方、人事の方には、面接からインターンの最後まで、大変お世話になりました。本当にありがとうございました!また、期間中やビアバッシュなど社員の方とお話しさせていただく機会も多く、業務のことを含め様々な相談や質問にアドバイスを頂くことが出来ました。ありがとうございました!