Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
マイナビニュースがチーム開発をするためにやってきたこと / What Mynavi News ...
Search
Mynavi System
November 20, 2019
Technology
0
2.6k
マイナビニュースがチーム開発をするためにやってきたこと / What Mynavi News did to do team development
マイナビ Tech Night #3 でのマイナビニュースの登壇資料です。
https://mynavi.connpass.com/event/151607/
Mynavi System
November 20, 2019
Tweet
Share
More Decks by Mynavi System
See All by Mynavi System
マイナビの全社データ基盤の モダナイズ/Developers-Summit-2024-Mynavi
mynavi_sys
0
390
マイナビ学生の窓口 半内製化の取り組みを振り返る / A retrospective investigation of our effort of semi-insourcing
mynavi_sys
0
1.7k
ライフメディアにおけるプライベートDMPの取り組み / mynavi-dmp-lifemedia
mynavi_sys
0
410
マイナビのシステム部門のご紹介 / Introduction of Mynavi Engineering Teams
mynavi_sys
0
550
CI環境としてのAWS CodeBuild / AWS CodeBuild as a CI software
mynavi_sys
0
1.6k
Webページ・スピード改善 / Webpage speed improvement
mynavi_sys
0
120
マイナビミドルシニアのプロダクトたち / Mynavi Middle Senior products
mynavi_sys
0
250
マイナビクラウドとその中の人たち / Mynavi Cloud and Insider
mynavi_sys
0
1k
若手エンジニアと行くマイナビ賃貸のクラウド化への道 / Mynavi Chintai Cloudization with Young Engineer
mynavi_sys
0
500
Other Decks in Technology
See All in Technology
やさしいClaude Code入門
minorun365
PRO
32
25k
AIに実況させる / AI Streamer
motemen
3
1.4k
GoogleのAI Agent
shukob
0
140
TypeScript と歩む OpenAPI の discriminator / OpenAPI discriminator with TypeScript
kaminashi
1
150
Azure Developer CLI と Azure Deployment Environment / Azure Developer CLI and Azure Deployment Environment
nnstt1
1
130
Devin&Cursor、それぞれの「本質」から導く最適ユースケース戦略
empitsu
8
2.5k
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.2k
アプリケーションの中身が見える!Mackerel APMの全貌と展望 / Mackerel APMリリースパーティ
mackerelio
0
450
面接を通過するためにやってて良かったこと3選
sansantech
PRO
0
140
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.6k
セキュリティSaaS企業が実践するCursor運用ルールと知見 / How a Security SaaS Company Runs Cursor: Rules & Insights
tetsuzawa
0
460
Contract One Dev Group 紹介資料
sansan33
PRO
0
6k
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
42
2.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
850
Rails Girls Zürich Keynote
gr2m
94
13k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.6k
We Have a Design System, Now What?
morganepeng
52
7.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
For a Future-Friendly Web
brad_frost
178
9.7k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.6k
Practical Orchestrator
shlominoach
188
11k
Transcript
マイナビニュースが チーム開発をするためにやっ てきたこと 岡部恭平 / Mynavi Corporation 2019.11.20 マイナビ Tech
Night #3
岡部恭平 @okabeeeat Webアプリケーションエンジニア IT戦略事業部 IT開発統括部 開発2部 ニュース開発1課
最近(というか結構前) ISUCON9 に参加しました!
本日の目標 以下の内容を知ってもらえるよう頑張ります • マイナビニュースについて • チーム開発をする上での課題と取り組み • これからやっていくこと
マイナビニュースとは?
None
マイナビニュース ・ビジネスパーソンのON/OFF、男女を問わず、 幅広いジャンルの情報を提供する総合ニュース メディア ・ニュースに限らず、役立つノウハウや体験レ ポート、まじめなレビュー、柔らかい記事から硬 派な記事まで網羅 その先を伝える総合情報サイト
https://www.youtube.com/watch?v=bu9yJ7wcpXc ガチャピンが紹介してバズった記事も https://news.mynavi.jp/article/20190108-753067/
チーム構成 ディレクター エンジニア エンジニア(リモート) ニュースメディア事業部 IT戦略事業部 開発ベンダー エンジニア インフラ・マーケティングチーム
システム統括部 編集・制作・事業推進・営業など 120人規模
マイナビニュースを支える技術 開発言語 コミュニケーション・情報共有 開発支援 インフラ
開発の雰囲気
チーム開発,割とできている のでは?
NO!!!
入社時はこんな状態ではな かった・・・
チーム開発をする上での 課題と取り組み
入社時(2019年1月)の課題 • プルリクエストの情報が GitHub 上に無い • え!誰が今どの環境でデプロイしてるの? • システムリニューアル時の流れで使っている Git-flow
入社時(2019年1月)の課題 • プルリクエストの情報が GitHub 上に無い • え!誰が今どの環境でデプロイしてるの? • システムリニューアル時の流れで使っている Git-flow
プルリクエストの情報が GitHub 上に無い え!?プルリクエストが紐付いてない? (master に直接 push している??) 入社して数日後のこと...
プルリクエストの情報が GitHub 上に無い 原因 • 開発ベンダー側は自社の GitLab で開発を進めて いた •
リニューアル時に実装した主要なロジックの意図 を commit のみで探るのが辛い・・・
プルリクエストの情報が GitHub 上に無い 解決方法 マイナビの GitHub に統合する
やったこと 開発フローの整備
やったこと CI 環境の構築 ◦ マイナビ側では CircleCI 利用していた ◦ 開発メンバーが増えるため契約コンテナ数が 足りない!?
CI 環境の構築 https://speakerdeck.com/mynavi_sys/aws-codebuild-as-a-ci-software 詳しくはこちらにまとめました
結果 • プルリクエストがわかるようになった • 全員でコードレビューができるようになった
入社時(2019年1月)の課題 • プルリクエストの情報が GitHub 上に無い • え!誰が今どの環境でデプロイしてるの? • システムリニューアル時の流れで使っている Git-flow
え!誰が今どの環境でデプロイしてるの? リリースだ! エンジニア
え!誰が今どの環境でデプロイしてるの? 次のタスクやろう ディレクター あいつ今日リリース予 定って聞いたけどちゃ んとリリースしたの か? エンジニア エンジニア
リリース したの? してないの? Slack などで報告・共有を忘れる...
え!誰が今どの環境でデプロイしてるの? 解決方法 Capistrano プラグインの導入
やったこと capistrano-github-releases の導入 • 本番リリース時にプルリクエストへのコメントの自動化と Tags ・ Releases を自動生成
やったこと capistrano-releases-notification の導入 • デプロイ時に Slack に通知するようにした
結果 • 報告・共有が自動化された • リリースノートができた!! リリースだ! ディレクター リリースされた! エンジニア
エンジニア リリース された!!
入社時(2019年1月)の課題 • プルリクエストの情報が GitHub 上に無い • え!誰が今どの環境でデプロイしてるの? • リニューアル時の流れで使っている Git-flow
リニューアル時の流れで使っている Git-flow master ← develop ← feature • リニューアル時から続いているブランチ構成
• 切り戻し(複数の feature ブランチを取り込んだ develop ブランチ)に時間が掛かる • リニューアル後,Git-flow にする理由は特に見当 たらなかった
解決方法 GitHub Flow に変更 リニューアル時の流れで使っている Git-flow
• develop ブランチの廃止 • 開発フローの整備 やったこと
• git 操作の作業量とミスが削減した • 開発速度が上がった • 開発フローがよりシンプルになった 結果
その他の効果 • issue や プルリクエストに開発業務の証跡を残す 習慣がチームに身についてきた • マイナビと開発ベンダーで開発チームとしての一 体感が増した ラフなやり取りもできるようになった!
一旦は色々整った (まだ色々できそうだけど)
これからやっていくこと
サーバーサイド プロダクトのグロースと変化により対応できる構成へ • 新機能・運用負荷軽減のため機能開発 ◦ CMS の機能追加・改修 ◦ Slack
bot・アプリの開発 • モノリシックリポジトリの分離 ◦ ニュース・CMS・API を機能毎に分離 ◦ 変化に対応しやすくする
フロントエンド コンポーネント管理ができるフロントエンド開発へ • E2Eテストの導入 • jQuery から Vue.js への移行
◦ Vue.js は一部は入っている ◦ jQuery のコードはまだまだ多い ◦ 単一ファイルコンポーネント使いたい!
インフラ インフラのコード化と最適化 • CloudFormation のリファクタリング ◦ テンプレートファイルの分割 • Terraform
の検証・導入 ◦ CloudFormation とのハイブリット構成の検討 • AWS リソースのコスト最適化 ◦ リソースの見直し ◦ リザーブドインスタンス化
他にもやりたいことがいっぱ いある!!!
まとめ • マイナビニュースと開発チームについて紹介した • チーム開発をする上での課題と解決方法をお話 した ◦ GitHub への統合 ◦
Capistrano プラグインの導入 ◦ GitHub フローへの変更 • これからやっていくことがとにかく沢山ある
参考 • capistrano-github-releases ◦ https://github.com/linyows/capistrano-github-releases • capistrano-releases-notification ◦ https://github.com/kimromi/capistrano-releases-notification
ご清聴ありがとうございました