OpenWork Tech Blog

OpenWork を運営するエンジニアによるテックブログです。

インターン生がリファクタPJに配属されて学んだこと

インターン生がリファクタPJに配属されて学んだこと
インターンの時期のオフィスからの一枚。渋谷で雪が降りました

こんにちは。バターコーヒーの飲み過ぎで最近身体が黄色くなりつつある気がする、22卒内定者の佐藤です。 現在はインターン生としてWebアプリの開発に携わっています。

インターン生の実情新卒社員の様子については21卒の先輩方が既に書いてくださっているので、今回は私がインターン中に「リファクタPJ」に配属された時の様子を綴らせていただきます。

業務の具体的なイメージが湧かない方や、少しでもオープンワークのエンジニア職に興味がある学生の方はぜひ参考にしてみてください。

そもそもリファクタPJって?

リファクタPJを一言で表すと「技術的負債を解消していくためのプロジェクト」です。

新機能の開発、というよりかは既存のコードの修正(リファクタ)が主な業務になります。

詳しくは以下の記事を参考にしてみてください。

techblog.openwork.co.jp

リファクタ対象

そんなリファクタPJに3ヶ月間配属となった私ですが、主に携わったのはOpenWorkの以下の機能です。

  • メールアドレス更新機能
  • ユーザー設定更新機能

リファクタ対象

どちらも決して複雑なロジックがあるわけでもないシンプルな機能ですが、週2出勤かつまだ入社して日も浅かった自分にとってはボリューム的にも難易度的にもとても丁度良いタスクでした。

主な業務内容

私の当時のリファクタPJでの業務の流れは以下の通りです。

  • 既存コードのリファクタ
  • 自動テスト実装
  • リリース

既存コードのリファクタ

まずは既存のコードを読み、ロジックを理解することから始まりました。

担当箇所がFatControllerだったことも相まって、読むだけでも時間が掛かったのを覚えています。 (中には5年以上前に書かれた埃まみれのコードも...)

しかし以下の存在のおかげで、苦戦することはあれど実装が滞ることはありませんでした。

  • 定期的な朝会や相談会などを設けてくれるなど、メンターの方の手厚いサポート
  • SlackのリファクタPJ専用「timesチャンネル」

後者の「timesチャンネル」というのはSlackにおける雑談や独り言を呟けるようなチャンネルのことを指すのですが、個人的にはこの存在が業務を進める上で特に有難かったです。

SlackのリファクタPJ専用「timesチャンネル」SlackのリファクタPJ専用「timesチャンネル」

自分の場合はそのtimesチャンネルを、些細な疑問や実装する上での(手元に残すほどではない)メモを投げる場所として使っていました。

勿論自分の中で考えをまとめることが1番の目的ではあるのですが、先輩に時折それらを拾っていただきアドバイスをいただけることもあるなど、コミュニケーションの活性化や質問することのハードルの低下といった様々な恩恵があるとても有難い存在でした。

自動テスト実装

実際にアプリを触って動作確認をするテストだけでなく、オープンワークでは自動テストも取り入れているのですが、今回のリファクタ対象は書かれたのが如何せん昔であったため、テストコードも書かれていない状態でした。

そこでリファクタと並行しながら未実装のテストにも着手していくことに。

自動テスト実装のいろはに関してはメンターの方に教えていただき、あとはドキュメントや他のコードを参考にしながら書き進めていく形となりました。

リリース

実装もテストも終わり、あとはリリースするのみ。

...しかしここで問題は起きました。

オープンワークではリリースをSlack上で実施できるようになっているため実施自体は何も難しいことはないのですが、私の場合は担当箇所のリリース後に本番環境においてバグが発生してしまったのです。

当時の個人timesチャンネルの様子
当時の個人timesチャンネルの様子

(バグの対象となったユーザーの数は片手で数えられるレベルでこそありましたが、当時は変な汗をかいた記憶があります)

その結果リリースは一度切り戻しとなり、以下を行うことに。

  • バグの原因調査
  • 暫定対応後、再リリース
  • 根本原因調査&再発防止策検討

原因が少し複雑であったため多少悩みこそしましたが、メンターの方にアドバイスをいただきながらこちらも何とか完了。無事にタスクは完了となりました。

リファクタPJを経験して

以上がリファクタPJにて取り組んだ主な内容です。

入社前まではぼんやりとOpenWorkの新機能の開発に夢を膨らませてはいましたが、今回の配属で技術的負債に向きあいリファクタリングを行うことの「重要性」と「楽しさ」両方を学ぶことができました。

インターン中にリファクタPJを十分に満喫(?)できたかどうかと問われると怪しいところですが、業務の流れや基本的なことを学びながらこのような経験をできたのはとても貴重だったと思っています。

最後に

こういった技術的負債に向き合うことができるのも含め、経験が浅いうちから色んなことにチャレンジできるのもオープンワークの1つの魅力かと思います。

もしご興味があれば、新卒の先輩方が書かれた記事もぜひ参考にしてみてください。

techblog.openwork.co.jp

techblog.openwork.co.jp

この記事を読んでオープンワークに少しでも興味を持った方は、ぜひ弊社採用サイトをご覧いただけると幸いです。 vorkers.jp