こんにちは。エンジニアインターンの押見です。
この度、私は1ヶ月間のアウモ株式会社でのインターンを卒業いたします。インターンまで繋いでいただいた人事や現場で教育していただいた開発の皆様など、関係者の皆様のおかげで沢山のことを学ぶことができたことに感謝してもしきれません。
本当にありがとうございました。
このテックブログの記事にて、インターンの活動内容や学んだことなどを1人の学生インターンとして発信させていただきます。
目次
はじめに
自己紹介
長野県の信州大学工学部を卒業して、奈良県の奈良先端科学技術大学院大学という大学院に在籍しています。
VR・AR系の研究室の修士1年として、研究活動をしています。
アウモに参加した経緯
きっかけは、面談イベントにてグリーのエンジニアの方とお話しさせていただいたことでした。
私の卒業研究や現在の研究の内容を鑑みて、その面談ではゲーム等のグラフィックエンジニアの方向でグリーに参加して欲しいと言っていただきました。
その面談の時点で私はサーバーサイドエンジニアを志望していました。そのことを伝えると、ゲームのサーバーサイドでもグリーグループ企業の事業でもインターンの可能性があるから、以降の面談で調整しましょうと言っていただけました。
私の志望内容やインターンの時期などからメディア系の事業を運営しているグループ企業のアウモでのインターンを提案していただきました。
インターンでの経験
タスク
インターンでは、メンターの村田さんと相談してタスクを決定していました。
アサインされるタスクは、基本的にaumoのまとめ記事への機能追加で、開発チームとビジネスチームのミーティングによって要件や優先度が決定されます。
技術領域
アサインされるタスクの技術領域はRuby on Railsのサーバーサイドからフロントエンドまで幅広く、実際にアサインされた「CMS(記事編集ページ)に入力項目を追加する」というタスクであれば、
- 記事を管理するDBのテーブルに、新しいカラムを追加
- コントローラーに追加した項目のデータの内容を追記
- バリデーション・API呼び出し用のJSを追記
- 編集ページを表示するSlimに入力フォームを追記
という内容を、メンターの村田さんや根來さんにサポートいただきながら実装していました。
今までフロントエンドにはあまり触れてこなかったので、コードの呼び出し順序を把握する中でも知らない技術、知らない標準gemに出会いました。コードリーディングの速度も、特にフロントについては格段に上がりました。
コーディング技術
タスクの実装が完了すると、メンターのコードレビューが入ります。
このインターンの中では、さまざまな技術に触れることによる学びが大きかったものの、このコードレビューによって得られる知識はプログラマーとしての基礎力の成長に繋がるものでした。
学んだことの例としては、DRY原則に則ったコーディングがあります。
実際のタスクでは、例えば、まとめ記事にバナー広告(純広告)を配置する機能を追加する際、記事内に複数広告を配置する場合はそれぞれの広告の表示内容に違いがあっても表示の機構自体はほとんど変わりません。
受け取った仕様には、「記事内に内容の異なる広告を複数配置できるようにする. 」とあり、私がPRに出した時点では、view内に似た内容の記述が複数存在する状態でした。
これに対して、コードレビューにて「(略)Helperでデータ結合のモジュールとしてまとめた方がDryできれい(略)」と指摘があり、DRYとは?と戸惑ってしまいましたが、お薦めされた書籍(達人プログラマー)を読み、DRY原則や結合度について理解することができました。実は私はその概念を聞いたことはあったのですが、実際に現場で、コードがDRYにリファクタリングされる様子を見たのは初めてで、その時になってやっと思い出したのでした。
この例のように、実際に知識として知っていることと、コーディングで意識できるようになることの間にはとても大きなギャップがあります。コードレビューはその間を埋めるとても強力な機会でした。
おわりに
1ヶ月のインターンでは、コードリーディングやシステムの把握にかける時間の割合がどうしても高くなってしまいます。
その中で、メンターやチームメンバーの方々が質問しやすい雰囲気作りをしてくださったことにとても感謝しています。
今まで触れてこなかった技術領域に触れるとともに、基礎的な技術力の成長ができたことがとてもうれしいです。
1ヶ月の短い間でしたが、本当にお世話になりました。ありがとうございました。