はじめに
2024年10月の1ヶ月間エキサイト株式会社が開催した「Booost!!! Excite Internship 2024」での経験や感想をお伝えします。
自己紹介
私はアメリカのオレゴン州立大学に在籍している大学4年生です。大学ではコンピュータサイエンスを専攻しています。 これまで大学の授業や個人プロジェクトを通じてソフトウェア開発を学んできましたが、今回は実際のサービスに関わる開発に携わることができました。
インターンについて
参加部署
私は「BBエキサイト」や「エキサイトモバイル」などのインターネット接続サービスを展開しているブロードバンド事業部に参加しました。
業務内容
BBエキサイトの光回線には、セットでお得になるオプションが多く、その中の一つがセキュリティ対策ソフト「esetファミリーセキュリティ」です。 私の業務は、主にこのサービスの解約を管理画面から行えるように解約ページを作成し、実際に解約処理を行うためのAPIを実装することでした。

使用技術
開発では、バックエンドにPHPのフレームワーク「Laravel」、フロントエンドには「Vue.js」を使用しました。
開発の流れ
開発は、まずフロントエンドの仮組みを作成し、その後APIを叩いて解約処理を実装しました。最後に、テストコードを書いて実装した処理が期待通りに動作するか確認しました。
学んだこと
開発の流れについて詳しくお伝えします。フロントエンドの仮組みが完成した後、実際のリクエストに基づいてAPIを叩き、レスポンスを整形して返す関数の実装に取り組みました。LaravelのMVCアーキテクチャにおいて、これらの処理はコントローラが担当します。
API呼び出しに必要なパラメータを確認した後、PostmanやLaravelのdd関数(Rubyのbinding.pryに相当)を使用して実際のレスポンスを確認しました。ここまでは正しい入力値に基づいてリクエストを投げて確認できましたが、実際の運用ではユーザーの入力値を必ず検証する必要があります。
入力値検証について
入力値の妥当性検証は、今回担当する「esetファミリーセキュリティ」の仕様に基づきます。 具体的には、解約処理をするにあたってユーザーの方には、「ユーザーID」と「退会日」入力していただきます。
この際に、仕様として、入会日以前の解約、先月よりも前の日付での解約、未来の日付での解約は設定できなくする必要があります。ユーザーIDにも正しい形式(16文字の英数字と数字)があるため、そちらも検証する必要があります。
今回、この検証処理を書いてみて、メンターの方から教えていただいたこと、調べていく過程で学んだことは以下のとおりです。
- 入力値検証はフロントエンドとバックエンドの両方で実装し、ユーザー側のエラーに対しては再操作を促し、サーバー側のエラーに対しては適切な例外処理を行う。
- フロントに送るエラーメッセージとは別に、開発者向けのログを残すと良い。
- コントローラ内の処理はリクエストを受け取りレスポンスを返すことに留め、入力値の検証は別のヘルパー関数に分けると良い。
LaravelはFormRequestやデフォルトでのミドルウェア処理など、入力値の検証やセキュリティに関する機能が豊富であることも実感しました。
ユニットテストについて
最後に、ユニットテストを書く機会がありました。PHPUnitとMockeryというツールを初めて使用しましたが、テストのしづらいコードがあることに気づき、そうしたコードの設計が良くないことを体感しました。また、これまで個人開発ではテストを書いてこなかったため、様々なテストコードを参考にすることで、テストコードの書き方を大まかにですが理解することができました。
最後に
1ヶ月という短い期間でしたが、多くのことを学び、貴重な経験をすることができました。メンターの方や人事の方々のサポートに心から感謝しています。至らない点も多々ありましたが、このような機会をいただき、本当にありがとうございました。