レガシー業界・システムに奮闘!プロダクト改善事例LT【開発PM勉強会vol.9】 - connpass https://peer-quest.connpass.com/event/239171/
- 株式会社PR TIMES執行役員CTO 金子達哉
- @catatsuyというアカウントで各種SNS登録しています
- ピクシブ・メルカリを経て2021/04にPR TIMESに入社しました
- 進行中のプロジェクトが何を作っているのか誰も把握していない
- ほぼすべてのプロジェクトで求められている機能ではないものが作られていたり、技術的にやるべきでない方向に進んでいた(最終的にほぼすべて停止 or 方針変更)
- 数年間PR TIMESにはほぼ新機能追加がされていなかった
- PHPのバージョンが非常に古く、ソースコードにも問題があり機能追加が困難
- PHPバージョンアップは不可能だと思われていた
- ミドルウェアのバージョンアップもされていなかった
- フロントエンドもほぼすべてjQueryで作られており、バグ修正すらできていない箇所もある
- 最近追加されたところでは一部Vue.jsが使われていたが、大半はjQuery
- レガシーがひどすぎて誰がやってもうまくいかないと思い込んでいた
- 何を聞いても「無理です」と言われる状態に陥っていた
- マインド面でも負けていた
- 確認していったら技術的にできるものばかりでした
- 何を聞いても「無理です」と言われる状態に陥っていた
- 開発者ブログもなく、開発本部の存在自体が社外に認知されていない
- サービスの知名度は高いのに😭
- 進行中のプロジェクトはデザイン・仕様書・Design Doc・Jiraのチケットなどで管理されており、把握されている
- PHPのバージョンアッププロジェクトが進行中であり、ソースコード改修も進んだ
- 企業ページはjQueryからReactに書き換え、新機能であるプレスキットのリリース済み
- 他にもサムネイル画像高画質化/個人ユーザー・フォロワー統合かつ個人ユーザーにFacebookログイン機能追加/いいね♡ボタン機能追加などなどリリース済み
- レガシーと戦うマインドはできてきて、スキルもお互いが切磋琢磨して成長できる組織に
- 「これを達成する方法はありませんか?」というコミュニケーションが当たり前に
- 開発者ブログや社内勉強会での発信などから社内のコミュニケーションも活発に
- 開発者ブログに記事を50記事以上公開済み
- 去年私がやったことはブログを書いています
- 具体的にどういう技術や方法で新機能追加や改善を行っているかは開発者ブログをぜひ読んで欲しいです
- 今回はどういう考えでどう組織を変えて進めてきたのかを説明します
- 開発者ブログ開始 (2021/04)
- 取り組みを社内外に発信するために開始
- CTO通信開始 (2021/04)
- 社内のドキュメントツール整理を行った後、利用を再開したNotionで始めた
- CTOの考えていることややっていることをオープンに発信していくことで自分たちのタスクが会社の成長にどう繋がるか感じてもらえるように
- 一部公開済みです
- PHPバージョンアップ勉強会開催 (2021/07)
- PHPバージョンアップのために入社してもらったuzullaさんが入社後に社外公開も含めて開催
- レガシーはどこにでもあるもので技術を使えば必ず解決できるというマインドに向かっていった
- 「○○だからできない」ではなく、「××を遂行するには○○が必要だが、○○はどうすれば解決できるのか?」という発想をする組織にする
- 以前は社内ITがほぼ未整備で、サービスのセキュリティを強化する以前の状態だった
- 2021/06に開発本部コーポレートチーム発足
- 2段階認証導入・1Password導入・IDaaS (Onelogin) 導入・MDM (Jamf/Intune)導入などを半年で達成
- 半年間で一気に社内IT改善が進み、適切な知識と方向で努力をすれば会社を変えられることが示された
- 🙅♀️「社内ITが整備されていないからセキュリティ改善ができない」
- 🙆♀️「社内ITを整備して、セキュリティ改善ができる組織にする」
- 旧ストレージからファイルを移行することができず、数年以内にPR TIMESは画像をアップロードできなくなる状態に陥っていた
- 1つのフォルダに大量のファイルが入っているせいでファイルのリストを取得できない
- それ以外のフォルダは新ストレージに移行済み
- 3300万ファイルのリストを出せる独自CLIを作成することで解決
- 正直技術的に取得可能だとは思っていなかったが、一部界隈で話題になっていたページを見つけて、システムプログラミングとGoの知識を使って実装して解決
- 土日に数時間くらいで実装したが、特定の用途に対して強力なCLIを作った気がします
- 既に旧ストレージは廃止済みで、諦めなければ解決策を見つけられる実例に
- Findy Teams導入
- これまで諦めてきた開発生産性の数値化・グラフ化が行えるように
- 大きなPRを数ヶ月ごとに一気にデプロイ→小さいPRをどんどんデプロイしていって本番環境でも確認できるようにすることで開発生産性が向上
- これまで1つしかなかったステージング環境を複数用意できるようにしたことで開発速度向上
- こういった施策で速度が上がっている感覚はあったが、そこが数値で示せるように
- 数値化されることで他部署や経営陣にも説明がしやすく
- 今のところKPI設定は行っていないが、各チームの傾向を調べて今後改善していく予定
- レガシーから脱却できたかどうかはエンジニア以外には分からない
- 外から唯一分かるのは新機能追加などのサービス改善とその開発速度
- 先程紹介した新機能は金子入社時にはすべて不可能もしくは1年以上かかると思われていたものばかりです
- 「サービス改善をするため」にレガシーと戦う
- 最終的にサービス改善に繋がらないシステム変更はむしろ害悪
- 技術はサービスを良くするために利用する
- 🙅♀️「レガシーがすごすぎるのでエンジニアが作りたい別システムを作る」
- 🙆♀️「レガシー改善を進めつつ、この状況でもサービスのためにできることを考える」
- カヤック社さんとの合同勉強会開催
- リアルの勉強会がコロナにより難しくなったことで新卒1,2年目くらいのメンバーが他社の人との横の繋がりが作れない→カヤック社と合同勉強会ができることに
- 他社の人から見て自分たちの挑戦がどう見えるのかを知れて、かつ他社のメンバーの挑戦を見て刺激を受けるように
- PHPerKaigi 2022への社員の登壇が決まるなど、対外発表も積極的に
- 精神論みたいな話が多くなりましたが、精神論は本質ではありません
- 精神論ではレガシーは倒せず、技術によってのみレガシーは倒せます
- 技術が分からない人が先導してもレガシーは倒せないので、精神論だけ切り抜いて学んだ気になったのなら誤りです
- 少なくとも成果が出始めるのに1年、レガシーがある程度倒されるのに3年くらいはかかるので未来を信じて根気強くやりましょう
- 1年かけても成果が見えなければおそらく方向性を間違えています