はじめに
こんにちは!ECCコンピュータ専門学校3年の矢野温人です。 この度、ディップ株式会社の「バイトル」リプレイスチームにて、2週間のインターンに参加しました。 担当した業務はフロントエンド開発で、企業別仕事一覧画面の新規開発に伴う検索仕様の調整やアクセス解析の計測設定、既存コンポーネントの修正などに携わりました。
インターンの目標
今回のインターンでは、与えられたタスクに対し、なぜ・どのようにして実装したかの明確な意図を持って取り組むという目標を定めました。 ただ指示通りに動作するコードを書くだけではなく、プロダクト全体の構造や背景にあるビジネス的な理由を理解し、技術的な根拠を持った実装ができるようになることを目的としています。まずは自分自身がなぜこの実装を選んだのかを周囲に明確に説明できる状態を作ることをゴールに据えてインターンに臨みました。
取り組んだこと
キャッチアップと設計思想の理解
開発にあたっては、まずローカルの環境構築を行うとともにディレクトリ構成やコードの命名規則を把握し、プロジェクト全体の設計思想への理解を深めました。社員の方からリプレイスの背景や長期的な保守性を見据えた視点を直接伺ったのですが、今までの開発では目の前の機能を実現するためにその場で使えそうな技術や設計を選ぶという対し、長期にわたって成長し続けるというプロダクト固有の特性から単に今動くだけでなく、10年先まで使っていける技術や設計にするという学生での開発ではあまり考えられていなかった実装感に出会えて、考えが深まりました。単に用意されたコードを読むだけでなく、なぜこの設計や命名になっているのかという背景にまで考える重要性を学ぶことができました。
旧バイトルとのギャップに苦戦した企業別仕事一覧画面の開発
挙動比較とWhyの紐解き
メインタスクである企業別仕事一覧画面の開発では、旧バイトルからのリプレイスという性質上、単にきれいなUIを作るだけではなく、旧バイトルが裏で抱えている複雑な検索ロジックやセッション状態、URLのパスパラメータの受け渡しを、あまり破綻させずにどう新環境へ移行するかという壁がありました。 ここで最も苦労し、同時に設計の甘さを思い知らされたのが、具体的な実装方針の検討です。最初は仕様書があるから大丈夫だろうと思い、新旧システムの構成差分を甘く見てコードを書き始めてしまいました。実際には旧バイトルには存在するコンポーネントやロジックが、新システムのコードベースには存在しない、あるいは全く別の共通コンポーネントに切り替わっているといった構造的なギャップが多々ありました。不足しているロジックを新環境でどう表現・移植すべきかの洗い出しが不十分だったため、実装の途中で旧仕様の振る舞いをどう再現すればいいかわからない・既存仕様と旧仕様が噛み合わないと手が止まり、完全にハマってしまいました。 この失敗を経て、仕様書を読むことと、コードレベルで新旧の構造差分とデータフローを完全に解き明かすことは全く別物なのだと痛感しました。 そこからはコードを書くのを一度止め、旧バイトルのソースコードを徹底的に追いかける時間にしました。単にコードを追うだけでなく、なぜここにこのUIやロジックが存在するのか・これがユーザーにどんなメリットをもたらしているのかというプロダクト上の意図まで分解して理解することに意識を向けました。
仕様書の言語化と設計・実装への落とし込み
実はこのWhyを自分の中でちゃんと理解できていなかったことは、バックエンド側に渡す仕様書の作成でも大きな障壁になりました。なぜこのAPIレスポンスが必要なのかという前提や目的を理解しきれていなかったため、最初は必要な仕様をうまく言語化できず、チーム間で認識を合わせるのにとても苦労しました。自分がWhyを理解していなければ、他職種に誤解なく伝えることも手戻りを防ぐこともできないんだと身にしみて感じた瞬間でした。 この苦い経験があったからこそ、新バイトルに足りない役割や差分を整理し直し、なぜそのデータが必要なのかを理解した上で、検索条件の保持ロジックやクエリの引き継ぎ処理を考えながら小さなサブタスクへと切り分けていきました。実装に入る前にHowやWhyの解像度をどこまで高く詰め切れるかが開発のスピードや品質を左右するんだと身をもって実感し、検証と軌道修正を繰り返しながら、最終的には納得のいく実装まで落とし込むことができました。
ドメイン理解を深めて取り組んだ仕様調整と計測基盤
単に指示されたUIを組むだけじゃなく、普段の個人開発ではなかなか触る機会がないSEO対策やアクセス解析の計測設定、さらにはプロダクトの仕様調整まで、幅広い領域にチャレンジしてみました。 特に頭を悩ませたのが、検索セッション分離タスクでナイトワーク機能を検索条件に残すかどうかを決めるときです。最初はどこか自分の主観や感覚だけで考えてしまっていて、大きいプロダクトだからこそ大事な数字をどう見るかという視点がすっぽり抜けてしまっていました。そのせいで判断の軸がブレてしまうこともあったのですが、メンターやPOの方と話したり、求人データの特性やユーザーの実際の動きといったドメインへの理解を深めていくことで、自分の思い込みではなくデータやユーザー体験をベースに考えてバランスを取る大事さに気づくことができました。 他にもリリース後に施策の効果をちゃんと測るための計測タグの埋め込みや、クローラーがページを正しく解釈できるようにするためのSEO観点での実装など、普段の開発では見落としがちなリリースした後の運用や事業への影響まで考え抜くすごく良い経験になりました。
気づき・学び
今回のインターンを通じて得た一番の学びは、コードを書く前の準備と、実装の背景にあるWhyを理解することの重要性です。 最初は仕様書があるから大丈夫と思い、新旧バイトルの差分やプロダクトの裏側にある意図を深く考えずに手を動かしてしまい、何度も手が止まって苦戦しました。しかし、一度立ち止まってコードの裏にある意図やユーザー体験、そして事業としての数字にまで向き合ったことで、開発のスピードも品質も劇的に変わることを身をもって実感しました。 また、個人開発では触れることのなかったSEO対策や計測設定、別の担当の方々との仕様調整を通して、フロントエンドという枠組みにとらわれずプロダクト全体を良くしていくエンジニアの立ち回りを体験できたのも大きな学びになりました。 単に技術が得意でコードが書けるエンジニアではなく、なぜこの実装が必要なのか・誰にどんな価値を届けるのかを深く理解し、検証を重ねながらチーム全体を前に進められるエンジニアになりたいという、今後の目指すべき姿がはっきりと見えた貴重な期間となりました。
おわりに
このインターンで2週間とは思えないほど大きな経験をさせていただきました! ただ答えを考えるのではなくどう考えれば解決できるかコードを書く楽しさだけでなく、プロダクトに向き合ってどういった価値を見出せるかを感じれたこの経験は自分にとって大きいものだと思います。 これからインターンに参加される方は、ただ与えられたタスクをこなすだけでなく、今まで見えてこなかった視点や考え方に意識を向け、自分は何のために取り組むのかという明確な意図を持って飛び込んでほしいなと思います。

