Published on

ZOZOテクノロジーズのインターンでリファクタリング支援ツール作成

Authors

どうも,よしかわです.

11 月上旬に行われた ZOZO テクノロジーズ のインターンについて参加しましたので,忘れないうちにブログ記事にしていきます.

リファクタリング支援ツール作成をしましたが,経緯などをまとめましたので,最後まで読んで頂けたら光栄です.

参加した【いつでもどこでもインターン】好きな時間・場所でインターンをしてみませんか? - 株式会社 ZOZO テクノロジーズについて,詳細に綴っていきます.

選考フロー

  1. 応募
  2. 書類選考
  3. 面接
  4. インターン参加

このインターンに応募した理由は,逆求人イベントで一番惹かれたからです.

また,ZOZO が作っているサービスに興味があり,ファッションで世の中の課題を解決する姿勢に感化されたからです.

ちなみにインターン参加前は,ファッションに興味なかったですが,インターン参加後にはファッションに興味をもちました!

ミッション

僕は,ZOZO テクノロジーズ ZOZOTOWN 部 検索チームへの配属になりました.

取り組んだミッションは,ZOZOTOWN のコードのリファクタリングが必要な箇所を見つけ出すツールの作成です.

背景・目的

ZOZOTOWN は,2004 年からのサービスであり,マイクロサービス化に着手してきました.

マイクロサービス化を行うにあたって,事前にコードの関連性を洗い出し,ロジックを切り分ける必要があります.

そのため,保守・改善を行うエンジニアに負担がかかるため,今回はリファクタリング指標を提供するツール作成が必要になります.

Codecov や Coveralls では,ZOZOTOWN で使用されている VBScript のカバレッジが出来ないため,独自でカバレッジツールを作成する必要があります.

また,VBScript 問わず,他言語のサポートもする機構を作成する必要があります.

これは,インターンを開始する際に,メンターの有村さん(以下,ぱきおさんと称します)やチームリーダーの渡さんと事前に面談をして決めました.

やったこと

まずは,技術選定です.

ZOZOTOWN では,Microsoft IIS, ASP, .NET Framework, VBScript などを扱っています.

そのため,最初は C#などの言語を選定しようと思いました.

しかしながら,所属しているエンジニアの使用言語を確認してみると,Python や Go, Ruby などを書くエンジニアが多かったです.

今回は Go でリファクタリング支援ツールを作成します.

また上記にあるように,検索チームに留まらず,全社共有で使う可能性があるため,VBScript や他言語をサポートする必要があります.

メンターとのミーティングでは,ツールの仕様について密に話しました.

具体的には,ディレクトリ構成や CLI ツールなら,オプションや出力を JSON にするか,XML にするかなど.

一番意識したことは,「吉川が何をしているか,何に困っているかの共有」です.

細かなことでは,Slack や Discord を駆使して,相談しました.

PR レビュアーである検索チームの皆様のレビューは的確で,僕の想定していなかった仕様を共有していただきました.

最終成果物は下記のようになります.

  • Go
  • CLI tool(using Cobra)
  • Cognitive Complexity に基づいた計測
  • VBScript の if-statement のみ計測可能

最終成果発表

最終日に成果発表を行います.

この成果発表には,人事や CTO, 部長や検索チームの皆様も出席します.

検索チーム外でも分かりやすく,なぜ取り組んだのかを理解してもらえる資料作りを心がけました.

発表は,大体 20 分ほどで,15 分発表,5 分質疑応答だった気がします.

CTO,部長からのフィードバックは,まさに僕が躓いたことだったり,僕が心がけていたところを的確に当てていました.

さいごに

僕がインターン中に開発していたst-tech/refactoring-conductor | GitHubが OSS として公開されました.

これも,ZOZO テクノロジーズの皆様のおかげです.

最後となりますが,メンターのぱきおさん,別インターンで一緒だった さっと,検索チームの皆さん,人事や色々な方々のご支援で,ここまで経験できました.

本当にありがとうございました.

この記事を読んで,ZOZO テクノロジーズのインターンに参加したいと思った人は,下記からエントリーしてみてはどうでしょうか.

【いつでもどこでもインターン】好きな時間・場所でインターンをしてみませんか? - 株式会社 ZOZO テクノロジーズ

また,ZOZO テクノロジーズの採用も始まっているそうなので,記載しておきます.

採用情報 - 株式会社 ZOZO テクノロジーズ

ちなみに,インターン中に ZOZOTOWN を使って,お買い物をしました.

黒い箱が届いたときは,すごくワクワクしました.

おまけ

おまけ程度に,インターン期間中のランチやミーティング,論文輪読会,勉強会などについて綴っていきます.

ランチ

検索チームとお昼ご飯を一緒に食べました。最近の趣味や僕が何をしてきたかを話しました。

ミーティング

今後の ZOZOTOWN について、深くミーティングをしました。

どこに問題があるか、どのように改善していくかをチームで共有してる姿勢は、絶対に身に着けたいを思いました。

検索チーム論文輪読会

検索に関する論文を共有し、ZOZOTOWN に貢献できるように輪読会をしていました。

参考文献

Codecov

Coveralls

コードメトリックスの値 | Microsoft document

Cobra | GitHub

合わせて読みたい

楽天 インターンに参加しました

サイバーエージェント インターンに参加しました

マネーフォワードのインターンでコンテナイメージ脆弱性検査

Sansan のインターンで姓名分割