- PdM/toCプロダクト
- PAY/テックリード候補
- CX※責任者候補
- 他39件の職種
- 開発
- ビジネス
- その他
ランサーズ、ReBuild、BASEの3社でエンジニア向けの勉強会「レガシーコード改革!UT/CIでWebサービスの技術的負債を解消する取り組み」を開催しました!
8/7(火)に、渋谷にてサーバサイドエンジニア向けの勉強会を開催いたしました!
今回は弊社に加え、ランサーズ、ReBuildのエンジニア方々にもご協力いただき、「レガシーコード改革!UT/CIでWebサービスの技術的負債を解消する取り組み」と題し、各社の技術的負債への取り組みの成功と失敗を赤裸々に発表する会でした。
簡単にイベントレポートと各社の登壇の内容をご紹介します!
まずは、BASEの東口から発表です。
「PHPバージョンアップと決済テストを支えたユニットテスト」というタイトルで、テストのないコードに対してユニットテストを書いていった体験とその知見が発表されました。
今回のテーマである「レガシーコード改革」ですが、BASEにおける”レガシコード改革”とは、「テストがないコードに対してユニットテストを書いていくこと」と、「”レガシーコードのジレンマ”に泥臭く立ち向かうこと」と定義。
それまでのBASEのサービスについては、テストが書かれているものが少ないという状況でした。
そこでユニットテストを書いていくわけですが、ユニットテストの使い方として、既存コードの振る舞いを保護するために仕様化テスト、調査的リファクタリングを行ったとのこと。
またユニットテストを行うにあたっての課題として、テストしにくいコード、社内にテストを書く人と書かない人が存在すること、破綻しやすいテストが生まれてしまうことの3点を挙げられました。
まずテストしにくいコードに対しては、テストが書けるように書き換える、密結合をモックが差し込める段階まで解消する、テスト時にモックを差し込むという対策をとっていったとのことでした。
次に社内にテストを書く人と書かない人が存在している点については、テストを書く障壁を下げるために社内でのハンズオンの実施やCakePHP自体のバグの修正等を行ったとのことでした。
そしてテストを書いていくにつれて破綻しやすいテストが発生しやすくなってしまいますが、今後の課題としてテスト自体もメンテナンス対象として手を入れ続ける必要があるとして、発表が終わりました。
次はReBuildの発表です。代表の鈴木さん、エンジニアの嘉数さんが登壇。
ReBuildは沖縄に本社を構える会社。発表の冒頭では、代表の鈴木さんより会社の紹介がなされました。
続いて嘉数さんにマイクが渡されると、「はいさーい!」との挨拶で始まり、会場が和みます。
嘉数さんからは、「Laravel5.5的 継続的インテグレーション」というタイトルで、主にGitLab CIの導入方法とLaravel PHPUnitのメリットが紹介されました。
GitLabは、Gitを利用したリポジトリ管理の分野でGitHubに次いで名前の挙がるサービス。ReBuildでもこのGitLabを利用しており、その中でも特にバージョン管理とCIの機能をよく使用しているとのことです。そしてGitLab CIとは、GitLabが提供する継続的インテグレーションツールのこと。導入するメリットとしては、処理の自動化により効率がアップしたこと、安心感が得られること、品質が担保されることが挙げられました。発表の中では実際の導入手順も紹介されました。
参加者の方々も熱心にメモを取られており、嘉数さんの発表にもさらに熱が入ります。
続いて、Laravel PHPUnitについてです。こちらを利用するメリットとしてはレスポンスのアサートが豊富な点や、モック化の仕組みが便利な点などが挙げられました。こちらも実際のテストの進め方が紹介されましたので詳細は資料をご覧ください。
まとめとして、GitLab CIを導入することで作業を効率化しつつ品質の担保ができること、Laravel PHPUnitを利用することで可読性、保守性の高いテストが書けるとして発表が締めくくられました。
最後はランサーズ永田さんの発表です。
「レジェンドコードと向き合いレガシーからモダンへ変革する」と題し、ランサーズ創業から現在までの開発の歴史をお話しいただきました。
まずは、2008年から2011年の創業期についてのお話。当時は社員が2名のみで他はアルバイトやインターンだったため、メンバーの意識を統一することが課題とのことでした。また、ランサーズ代表の秋好さんは元々エンジニアであり、秋好さんが書いたコードは今でも残っているそうです。
この時期に関して特筆すべき点は、ローンチ当初からユニットテストを書いていること。当時使用していたユニットテストはCake PHP1.3デフォルトのテストフレームワークであるSimple Testで、コミットログを確認すると2008年のものがあったとのことでした。当時の課題やSimple Testの次に導入したテストツールについてもお話がありました。
次に、2012年から2015年の成長期について。ディレクターやエンジニアの社員が増え、新機能開発やデプロイも頻繁に行われるようになり、またコード修正の影響範囲を把握できず障害発生を事前に防げない課題があったそう。永田さんがランサーズにジョインしたのもこの時期とのこと。
この時期は、オープンソースのBDDフレームワークであるBehatやMintの導入、通称”ojido-sun”と呼ばれるテスト自動化プロジェクトなどが行われたとのことでした。
最後に、2016年から現在までの変革期のお話です。過去の施策を担当したメンバーの卒業や新メンバーのが多くジョインしたことにより、過去施策がメンテできずに負債になり、新メンバーが既存システムのキャッチアップにコストがかかるという課題が挙げられました。
ここでの取り組みとしてはCircle CIの導入や、PHP・CakePHPのバージョンアップが挙げられました。現在もバージョンアップを進めており、テストコードのリファクタなど並行して進めていた他の施策を一旦止めてバージョンアップに注力する覚悟で進めているとのこと。最後に技術負債との向き合い方として「失敗してきた過去の施策は技術的負債になるが、そのチャレンジに敬意を表しレジェンドコードと呼んでいる」と力強い言葉がありました。過去の失敗に向き合い、重要事項にフォーカスし新しい技術の導入も現在進行形で試みているとのことで発表が締めくくられました。
各社の登壇のあとは、懇親会です!
弊社からは東口以外のエンジニアのメンバーにも参加してもらいました。参加者の方と登壇者、参加者同士で活発にコミュニケーションが取られていました。
今後もこういったエンジニア向けのイベントを開催していきます。イベント告知情報を逃さないよう、BASEをフォローしていただけると嬉しいです!