2024年9月の1ヶ月間エキサイト株式会社が開催した「Booost!!! Excite Internship 2024」で経験したこと、感じたことをこの記事を通して紹介したいと思います。
自己紹介
私は商学部に在籍している大学3年生です。大学内の授業ではプログラミングやコンピューターサイエンスの科目がほぼ無いと言って過言ではありません。そのため、私は「Recursion」という学習サービスを利用し、ソフトウェア開発やコンピューターサイエンスを学んできました。個人での開発物として、複数のバックエンド及びフロントエンドプロジェクトがあります。扱ってきた言語、技術は習熟度の差はありますが、JavaScript、TypeScript、PHP、Go、Python、Reactなどです。卒業後はエンジニアとして働くことを目指しています。
インターンシップについて
参加部署
ブロードバンド事業への参加となりました。ここは「BBエキサイト」「エキサイトモバイル」などを展開している事業部です。
業務内容
「メール本文テスト機能」の実装を担当しました。この機能は開発者向けとなっておりユーザーは使用できないものとなっております。機能面としましては、セレクトタブから確認したいメールのタイトルを選択し、その後対応したメール本文が画面上に表示されます。また「メール送信機能」も実装されており、任意のメールアドレス先まで送信することができます。
使用技術について
今回の実装では、PHPのフレームワークであるLaravelでバックエンド部分を構築し、フロントエンド部分をVue.jsで実装しました。私はPHP及びJavaScriptでの開発経験はありますが、フレームワークを使用しての開発は今回が初めてとなります。
なぜこの機能が必要か?
私がインターンシップ参加前から事業部内で
「メールテスト機能があればいいよね」
との意見があり、今回私が担当することとなりました。
この機能の利用目的として
- 定期的に複数パターンのメール文を確認する必要がありましたが、この機能を実装することで工数を削減できる
- メールの文言調整の際に、実際に送られる最終的なメール本文を確認できる
- プロデューサーの方も確認したい場合がある
があげられます。
開発の流れ
Controller.php、Index.vue、メールテンプレートに対応するconfigファイルを新たに作成しました。そして下記の順序で開発を進めました。
- 既存のメールテンプレートごとに、メール本文で使用する変数の設定値をconfigファイルにまとめる
- configファイルからメールテンプレートの設定の一覧を取得
- 画面にプルダウンで一覧を表示
- プルダウンで特定のメールテンプレートが選択されたら、APIでconfigファイルから変数値を取得してbodyに埋め込んだ文字列をtextareaなどに表示
- 「送信」ボタンで実際にメールを送信する
開発を通して気づいたこと、身についたこと
- 開発に取り掛かる前に、開発の全体像を把握しなければならないと感じました。今回はすでに存在しているプロジェクトに途中から参加した形となっているため、これまでどのようなコードの書き方をしているか、ファイル構成はどのようになっているかを確認しつつ作業を進めました。加えて今回はメンターの方が主導で要件書を作成したのですが、今後は自分で作成できるようにしなければならないと感じました。
- ファイル名、フォルダ名、関数名、変数名などは他の人から見たときでも、ここで何をしているのかを理解しやすいように宣言する必要があると感じました。
- 開発に行き詰まった時は、デバックを利用し、今どのような値を受け取っているか、型の種類は何か等を意識しつつ開発を進めました。
- これまで個人開発がメインで自分が書いたコードをレビューしていただく機会がありませんでした。レビューを通して、自分が書いたコード内で必要ではない箇所や変更した方が良い箇所を指摘していただきました。繰り返しになりますがチームで開発を行う際は自分のコードが見られていると意識することが必要であると感じました。
まとめ
1ヶ月という短い期間でしたが、実際にエンジニアとして働くことがどのようなものかを経験することができました。また、今回は全日程リモートでの参加となりましたがメンターの方にサポートしていただき開発に取り組むことができました。加えて、今回の開発とは直接関係ない部分であっても、エンジニアとして必要な考えや意識しておいた方がいいことを随時教えていただき、とても有意義な期間でした。
最後に
メンターさんや人事の方にサポートしていただきながら、素晴らしいインターンシップ期間を過ごすことができました。1ヶ月間至らないところが多々ある中で、さまざまな経験をさせていただきありがとうございます。