EmotionTechテックブログ

株式会社エモーションテックのProduct Teamのメンバーが、日々の取り組みや技術的なことを発信していくブログです。

パソコン初心者がエンジニアインターンしてみた

はじめに

こんにちは。開発チームでインターンをしている沼澤と申します。 本記事では、学部1年の2月下旬から行ってきたエモーションテックでの約9ヶ月間のインターン経験をもとに、今までの振り返りや、今後の展望について書きました。

この記事はエモーションテック Advent Calendar 2023 の1日目の記事です。

インターンに申し込むまで

まず大学の受験期に遡ります。大学進学が迫り将来のことを真剣に考え始め、色々と調べていました。そして調べるうちに、パソコンも持っていない中ソフトウェアエンジニアとして活躍したいぞという気持ちが高まり、そのためにはどうやら情報工学を学ぶと良いということなので、情報工学科に進める大学を受験し、進学しました。

進学先が決まってからついに手に入れたパソコンで、早速プログラミングをしようと思いましたが、タイピングをはじめ、パソコンの扱いに慣れておらず、それに慣れるところから始めました。当時はCtrl+z(⌘+z)のショートカットの便利さに感動していたことを覚えています。

そうしてパソコンの操作に慣れたころにプログラミングの学習を独学で行い始めましたが、いろいろな障壁がありました。まずは環境構築で、パスを通すという作業が分からなすぎてつまずきました。また、フォルダやファイルなどのPC用語の意味が分からず、教材等を理解できずにつまずきました。そういうつまずきを続けながら、情報工学科進学に必要なGPA稼ぎにも精を出していると、いつの間にか西暦が変わっていました。それに気づいた瞬間に大学卒業が視野に入り、このままだとやばいかもなと焦りました。

当時はフロントエンド(React)からAPIを使用する、ということが限界で、作るアプリはほぼ写経という状況でした。そうして、このまま独学を続けていると時間がいくらあっても足りないぞと思い、思い切ってインターンに申し込むという決断をしました。そこからインターン先を探して、何社か面接をしてもらいました。そんなこんなでエモーションテックに所属させてもらうことになりました。

どんな感じでやってきたか

インターン開始当初はソフトウェア開発についてほぼ何も知らない状況でしたが、早速事前に用意していただいていた機能追加タスクに取り組み始めました。研修期間のようなものがないことは先代のインターン生の記事を読んで知っていたので驚きませんでしたが、作業するリポジトリのファイルの量にビビりました。 今まで他人のコードを読むという経験がなく、何層にも分けられたディレクトリや、20を超えるようなファイルが入ったディレクトリを見て、「ああなるほど、これが本物のコードか」と少し感動はしましたが、これを読み解くのかと思うと当時の自分にはかなりハードルが高く感じたのを覚えています。

これは無策で取り組むと膨大な時間がかかると思ったので、まずはそのプロダクトの概要と、そのリポジトリディレクトリ構成を整理するところから始めました。この際には豊富に残された社内ドキュメントのおかげでそれなりにスムーズに学習できました。

そんなこんなでChatGPTの力も借りつつ、そのタスクを終えることができ、いろいろなことを学べました。学んだ内容については後述します。そのタスクを終えた後は、バグ修正、リファクタリングGitHub Actions周りの作業を行ってきました。現在はCI/CD、インフラ領域に関心があり、そういうタスクをいただいて実施しています。

インターンを通して学べたこと(開発周り)

インターンを通して、ソフトウェア開発で必要な知識を包括的に学べました。学んだ事でパッと思いつくのは以下のようなものです。

  • Git, GitHubの詳細な使い方
  • Dockerの使い方
  • ソフトウェア設計の概要
  • チーム間での情報共有方法
  • テストの存在意義や書き方
  • レビューしやすいPRの作り方
  • 保守性の重要性
  • ドキュメントの必要性
  • クラウドサービスの概要
  • データベース設計の基本
  • SQLの基本
  • デバッグ方法
  • GitHub Actions, CI/CD
  • TypeScript, Rust, NestJS, Actix Web など

この中では保守性の重要性について理解できたのが一番大きな学びだったと感じています。インターンを始める前は保守性の重要性について何も知りませんでしたが、タスクを通して実際のソフトウェア開発では保守性をどう高く保つかということが、とても大きな関心事なのだろうと感じました。ソフトウェア設計、テスト、ドキュメント、技術選定、変数名などは保守性に大きく影響し、保守性が高いことで開発体験が高まり、生産性が上がるという現象を理解できたのは、今後学習する上で大きなことだったと感じます。

最初のタスクを行った際は、自分がコードを変更して良いのだろうかと思いましたが、ひとまず既存のテストが通るように実装すれば良い安心感がありましたし、コードだけでなくドキュメントを読むことでスムーズに作業を行えたのは、そういう保守性を意識した開発体制による恩恵を受けていたのだなと感じます。

エモーションテックのインターンで嬉しいところ

エモーションテックでインターンをしていて、いつも感じる嬉しいポイントとして活動のしやすさがあります。

エモーションテックではフルフレックス制度、リモートワーク制度を採用していて、インターン生は8:00 ~ 22:00の間であればいつ働いてもよく、途中で外出や休憩を取ることができます。この制度とリモートワークが可能なおかげでとても活動がしやすいです。 さらに、私の大学生活について理解を示していただいており、課題が終わってない時などは休みをもらったり、急に予定が空いたときに活動するといったことを気軽にやらせてもらっています。

また、毎週水曜日は開発チームでランチに行く習慣があり、色々な美味しい食事を経験できて満足しています。以前は昼食には某牛丼チェーン店の一番安いメニューしか食べてませんでした。今もめちゃくちゃ食べますが。

そういうわけで、労働環境に不満なくやらせていただいています。

成長の実感

インターンや日々の生活の中で継続的にソフトウェア開発の学習を行っていき、さまざまな経験や知識を蓄えることができました。それが実を結び、最近では技術に関する情報にあたった際に、その内容を咀嚼できることが多くなったことを実感しています。去年読んだ本や記事を読み直した際に、当時は理解できなかった内容が今では容易に理解できたり、まだ手を出せないと思っていた書籍を読んで内容が分かるということが増えました。そういう経験は非常に感動的で、ようやく始まったか、という感覚になります。

今後の展望

最近は、世の中にある技術が生まれた背景を理解していることが、その技術の概要を掴みやすくしたり、上手く使うことに役立つようだということを実感しているので、情報工学について幅広く学ぶことを意識しています。 それによって得た知識をもとにアウトプット、またはさらなるインプットにつなげて、常に成長を実感できるように活動し、個人の活動やインターンで躍動できること期待しています。あとは英語の学習にも精を出したいと思います。

おわりに

この9ヶ月間は、人生の中でかなり密度が高く多くの学びがあった期間だったと感じています。エンジニアインターンをしたいと思いつつ、何かしらの理由で尻込みしている方は、思い切っていろいろな会社の面接を受けてみてはいかがでしょうか。何かしらの学びがあると思います。