始めに
初めまして,エキサイト株式会社による就業型インターンシップ「Booost!!! Excite Internship 2023」
に参加した金子と申します.本稿では,インターンを行う中で得た知識や経験,それから得た学びや抱いた感想をご紹介できればと思います.
自己紹介
現在大学院に通う博士課程2年の学生で,大学院では物理学を専攻しております.研究では物理シミュレーションを行っており,普段はC++,Pythonを用いてシミュレーションプログラム開発やデータの解析をしています.
1年ほど前からWebアプリ開発の世界に興味を持ち,PHPフレームワークの一つ,Laravelを使った開発を学びました.その後もハッカソンへの参加や地元のスタートアップでの長期のエンジニアインターンシップを経験する中で,ReactやVueといったフロントエンドライブラリ,フレームワークやDjango,Springbootといったフレームワークを用いた開発も経験してきました.
チーム開発や実務の開発経験を積む中で,BtoCのサービスも経験しエンジニアとしての働き方や業務内容の解像度を上げたいと思い,本インターンシップに応募した次第です.
業務内容
以下,私が10日間で経験した業務を紹介します.
サービスとその背景知識
具体的な業務内容を紹介する前に,担当することになったサービスや業務に関する背景知識を述べます.開発はアジャイル的に進められ,明確な仕様は開発と共に固めていきました(とはいえほとんどは仕様の確認に留まりましたが).仕様を固めるには内容に応じたドメイン知識が求められ,それは業務を進める中で学習していきました.
エキサイト電話占い
私が配属されたのは「Life&Wellness事業部」の「エキサイト電話占い」というサービスでした.エキサイト電話占いは,エキサイト株式会社が契約する所属占い師と占いを希望する利用者を繋ぎ,通話を介して占いを行えるようにするサービスです.
管理ツール
このサービスには,利用者や占い師が利用するページの他に,それらの情報を管理する管理ツールが用意されています.管理ツールを利用することで非エンジニア職や業務委託を行っている方々も,データベースを直接覗かずに必要な業務を行えます.管理ツールは業務を円滑に行う上で必要な機能と言えるでしょう.
販売促進機能
エキサイト電話占いは販売促進機能の追加を検討しています.販売促進機能はマーケティング戦略的に重要で,この機能によって新たな施策を打ち出しやすくなります.この機能は,マーケティングの事例から確実な効果が見込まれており,また,エキサイト電話占いの今後の成長を支え,現在抱える課題も解決することも期待されています.
エキサイト電話占いに販売促進機能を追加する開発と並行して,その管理ツールにも販売促進機能の管理機能を追加するための開発が行われていました.
私はその管理ツールに,ユーザーが保有する販売促進機能の概要や詳細を確認するための項目やページを追加する業務を担当しました.
実際にやったこと
管理ツールの開発
開発内容は,既存のAPIを利用して取得したデータを加工してページに表示するというものでした.APIの構造例は以下のようになります.
Api ├── Src │ └── Resource │ └── App │ └── Generation │ └── SellPromotion │ └── User │ ├── Promotion1.php │ └── Promotion2.php └── Tests └── Feature └── Generation └── SellPromotion └── User ├── Promotion1Test.php └── Promotion2Test.php
{api_domain}/Generation/SellPromotion/User/Promotion1
もしくは{api_domain}/Generation/SellPromotion/User/Promotion2
といったエンドポイントを適切なメソッド・パラメータで叩くことでデータベースからデータを取得できるようになっていました.
私が実装したのは,いわゆるMVC(Model, View, Controller)モデルのような形でAPIから取得したデータを適切に加工してページに表示するというものでした.私が修正もしくは新規作成を行ったのは以下のようなファイル群です.
Tool ├── App │ ├── Resource │ │ └── Generation │ │ └── SellPromotion │ │ └── User │ │ ├── Promotion1.php │ │ └── Promotion2.php │ └── View │ └── Pages │ └── User │ ├── Detail │ │ └── index.tpl │ └── Promotion │ ├── Promotion1 │ │ └── index.tpl │ └── Promotion2 │ └── index.tpl └── Controller └── User ├── Detail │ └── index.php └── Promotion ├── Promotion1 │ └── index.php └── Promotion2 └── index.php
MVCにそれぞれ,M=Resource, V=View, C=Controller以下のファイルが対応しています.これらを開発することによって利用者の詳細画面に対応する販促推進機能の要約情報を表示し,その画面から具体的な販促推進機能の情報を閲覧できるようにしました.
要件の確認
開発はアジャイル的に行われていて,私が担当したチケットが作成されて時点では明確に要件が固まっていませんでした.したがって,開発中はチームでコミュニケーションを取り,場合によっては仕様変更を行う必要があります.私が担当したチケットの一つもAPI側の仕様変更が必要であり,今回は社員の方にAPIの修正を行っていただきました.*1
インターン期間中に,単に質問するだけでなく仕様変更につながる問いかけをできたのは自信に繋がりました.
学んだこと
以上の業務を通して学んだことや考えたことを以下にまとめます.
老舗BtoCサービスとしての特徴
短期間のインターンでしたが,事業部の昼会(事業部全体のミーティング)に毎週出席させてもらいました.そこでは普段聞くことのないマーケティングの単語(ロイヤル,ライト,ARPPU等)を使って日毎の売上を分析し,事業戦略を話し合っていました.私が以前参加したことのあるBtoB向けのスタートアップのミーティングでは,大口顧客の維持を質的に議論したり,契約数や商談数を重視していたりしたので,事業領域やそのフェーズによる運営方針の違いを感じました.
また,エキサイト電話占いは16年以上続くサービスということもあって,参考にしたソースコードの中には10年前に作られたファイルもありました.そのため,コーディング規約が途中で変更されている様子も伺えました.といってもDockerを用いたコンテナ技術の導入やCI/CD,コードフォーマッタなど開発を支援する技術は積極的に取り入れていて,古い技術と新しい技術を融合させる取り組みが行われていました.これまでもフルリプレースや部分的なリプレースを繰り返してきたという話もあり,長期に続くプロダクトを継続的に成長させることの醍醐味を知れました.
トラブルシューティング
インターン期間中に,ローカルで開発中のサービスにログインできなくなるというトラブルが発生しました.自分なりにDockerコンテナを立ち上げ直したり,シークレットモードでキャッシュをリセットしてログインを試みるなど試してみましたが解決せず,メンターにヘルプを求めることになりました.
メンターの方によるトラブルシューティングで印象的だったのは,ソースコードを追って原因特定を行ったことです.私も普段の新しくページを開発している時は,デバッグの際にソースコードを丁寧に追うことはありました.しかし,正しく動いていたはずのページの中身の挙動を追うことはあまりしてきませんでした.如何なる時もソースコードを丁寧に追うことで問題の理解が深まるのだと思い,今後の開発で心がけたいと思いました.
最後に
本インターンシップ参加に当たって,個人的な事情を汲んで*2,人事部やLife&Wellness事業部の皆様には少しイレギュラーなスケジュールを組んでいただきました.周りのインターン生の働き方を見てもかなり柔軟かつ,配属も各インターン生の要望や相性が反映されていて,個々の学生が求める形でエキサイト株式会社,ひいてはWeb業界でエンジニアとして働くイメージを得られるインターンシップだと感じました.
社内のイベント「Beer Bash」にもご招待いただき,当日は本社オフィスでの業務も経験させていただきました.メンターのお二人には気軽に毎日のように質問させていただき,必要なドメイン知識を教えていただきました.入社後をイメージしながら業務を行えた気がします.また,CTOや事業部の上長,新卒採用の方との1on1をする機会も多く,ざっくばらんに考えを伝える文化を感じられました.自分の考えを話す中で,自分が目指すエンジニア像も見えてきました.
非常に充実した日々でした.短い期間でしたが,エキサイト株式会社の皆様ありがとうございました!