はじめに
こんにちは、エキサイト株式会社でインターンをさせていただいている山内です。 今回は約2か月間、就業型インターンで何をさせてもらい、何を学んだかについてご紹介します。
自己紹介
趣味は麻雀や野球などで、家に雀卓があったりします。 あと、HipHopが好きだったりもします。
技術的なことでは、個人開発やハッカソンの経験がある程度で、実務経験などは全くありませんでした。
やったこと
では、本題です。 今回のインターンでは、メディア事業部でレシピメディアである「E・レシピ」のAPIの、PHPからJavaのSpring Bootへのリビルドをさせていただきました。
Javaはこれまで触ったことはありませんでしたが、はじめにペアプロのような形で基礎的なことや開発指針について教わることができ、スムーズに開発に参加させてもらえたと思います。
学んだこと
今回、このインターンで学んだことはとてもたくさんありました。 その中でも、「良いコードを書く」ということと、「アーキテクチャ」についてお話しします。
良いコードを書く
まず、「良いコードを書く」ということについてです。 私は今回のインターンで学ぶまでは、良いコードを書くと言っても具体的に何をすればいいのかわかっていませんでした。
そんな中、インターン中ではメンターの方に限らず、たくさんのエンジニアの方がお話してくれたり、コードレビューをしてくれたりしました。 そうしていくうちに、どういうことを考えてコードを書いているのか、何に気を付ければいいのかということが少しずつわかってきました。
アーキテクチャ
次に「アーキテクチャ」についてです。 業務レベルでサービスを運用していくにはアーキテクチャがどれだけ大切か、逆に、アーキテクチャを考えなければどうしんどくなるのか、ということについてとても勉強になりました。 例えば、きちんとアーキテクチャを考えることで、機能の新規追加や修正をする際に、他の場所への影響を最小限で抑えられるということなどです。
実例
良いコードを書くということや、アーキテクチャについて勉強になったと思う一例である、ファン登録機能に関するプルリクでの議論についてご紹介します。
まず前提として、E・レシピにはユーザが料理家をファン登録する機能があり、1ユーザーが登録できるファンの数には上限があります。 そのため、実現したい機能の流れは以下のようになります。
- ファン登録をする際に既にファン登録している数が上限数かどうかを判定
- 上限数以下
- ファン登録
- 上限数
- エラーを返す
- 上限数以下
ここで、「ファン登録上限数を超えているかの判定をどこでするのか」ということについて議論がありました。 私ははじめ、この判定をユースケースで行っていました。 しかし、本当にユースケースに書くのが適切なのか、モデルなどで書くほうがいいのではないか、などの意見交換がありました。
話し合っていく中で、アーキテクチャのレイヤーごとの役割分担の考え方や、「良いコードを書く」というところでも話した、何を考え、何に気を付けるのか、ということに対してとても理解が深まりました。
最終的には「ファンの上限」という仕様はサービス共通のため、サービス層に書くということになりました。 このやりとりの中で、結果というよりもその過程の「考えて話し合う」というところがとても勉強になり、考えてコードを書くことの重要性を感じました。
まとめ
今回のインターンでは業務レベルでの開発を経験させていただき、たくさんのことを学ぶことができました。 しかし、考え方を理解しても実際にそれをコードに落とし込むことは難しく、まだまだ実践できていない部分が多いと感じました。 今回学んだことがゴールではなく、きちんと使えるようになるためにこれからも意識していきたいと思っています。
最後に
メンターの方々をはじめ、エンジニア、人事の方々のおかげで楽しく、たくさんのことを学べるインターンになりました。
ありがとうございました!