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
ぼくらはこうして乗り越えてきた!
Search
fukumura
June 20, 2019
Programming
1
2.1k
ぼくらはこうして乗り越えてきた!
CTOが考える、チームで向き合う技術的負債との付き合い方
fukumura
June 20, 2019
Tweet
Share
More Decks by fukumura
See All by fukumura
リードエンジニアから学ぶMedPeerの プロダクト開発
fukumura
1
810
Rubyコミュニティとメドピアの素敵な関係
fukumura
4
8.4k
20190828_withrarejob_v1.0.pdf
fukumura
0
280
JapanTaxi x MedPeer 技術交流会
fukumura
1
480
20190523_graspy_.pdf
fukumura
0
400
RailsDevelopersMeetupスポンサーセッション資料
fukumura
0
240
20181101_medpeer_rwc.pdf
fukumura
0
3.4k
MedPeerGroup会社紹介
fukumura
0
2.3k
japantaxi_medpeer
fukumura
0
270
Other Decks in Programming
See All in Programming
⼤規模⾔語モデルの拡張(RAG)が 終わったかも知れない件について
nearme_tech
23
15k
GitHub Actionsで泣かないためにやっておきたい設定 / Recommended GHA settings to avoid crying
pinkumohikan
3
530
HUIT新歓2024「競技プログラミング、やってみませんか?」
slephy2784
1
270
Scalable Customer Journey Orchestration (CJO)
lewuathe
0
220
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.4k
ONE WEDGE_company_guide
1wedge_one
0
470
AWS CDKコントリビュートTIPS / aws-cdk-contribution-tips
gotok365
2
150
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
380
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
670
Apache Hive 4 on Treasure Data
ryukobayashi
0
220
Netty Chicago Java User Group 2024-04-17
sullis
0
170
Site Reliability Engineering for GMO
pyama86
8
1k
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
132
6.3k
Rails Girls Zürich Keynote
gr2m
91
13k
A better future with KSS
kneath
231
16k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
Ruby is Unlike a Banana
tanoku
96
10k
Designing Experiences People Love
moore
136
23k
In The Pink: A Labor of Love
frogandcode
138
21k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
6
1.5k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
Faster Mobile Websites
deanohume
299
30k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
19
1.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
243
12k
Transcript
CTOが考える、 チームで向きあう技術的負債との付き合い⽅ 2019/6/20 メドピア株式会社 |> ぼくらはこうして乗り越えてきた!
⽬次 1. ⾃⼰紹介 2. メドピアってどういう会社? 3. 技術的負債とメドピアでの取り組み 4. 今からできる取り組み
3 ⾃⼰紹介 2児の⽗。 好きな飲物はビールです。 2012年からメドピアで頑張ってます! MedBeerというエンジニア向けイベントを不定期で開催してます! 福村 彰展(@fukumura) メドピア株式会社 CTO
Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
⽬次 1. ⾃⼰紹介 2. メドピアってどういう会社? 3. 技術的負債とメドピアでの取り組み 4. 今からできる取り組み
5 メドピアってどういう会社? Supporting Doctors, Helping Patients. 医師を⽀援すること。そして患者を救うこと。 集合知により医療を再発明する。 Mission -存在意義-
Vision -実現したい姿- Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
6 メドピアってどういう会社? 医師専⽤コミュニティサイトの 運営がメインの会社です Copyright(C) 2019 ALL RIGHTS RESERVED ,
MedPeer,Inc
7 メドピアってどういう会社? メドピアの特徴は3つ! Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
8 メドピアってどういう会社? 1. 社⻑が現役の医師! Copyright(C) 2019 ALL RIGHTS RESERVED ,
MedPeer,Inc
9 メドピアってどういう会社? 1. 社⻑が現役の医師! Copyright(C) 2019 ALL RIGHTS RESERVED ,
MedPeer,Inc 医療現場の⼿触り感 強い想い
10 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc メドピアってどういう会社? 2.
⽇本の医師の3⼈に1⼈が会員! ? ? 医師の3⼈に1⼈が会員
11 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc. メドピアってどういう会社? 2.
⽇本の医師の3⼈に1⼈が会員! ? ? 医師の3⼈に1⼈が会員 医療業界へ ゲームチェンジが起こせる プラットフォーム
12 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc メドピアってどういう会社? 3.
エンジニア⽂化!
13 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc メドピアってどういう会社? 3.
エンジニア⽂化! 2012年から醸成している エンジニア⽂化!
14 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc メドピアってどういう会社? 開発支援系
データベース 開発言語 開発・本番環境 業務支援系 その他 スピーディに技術選択
15 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc メドピアってどういう会社? 開発支援系
データベース 開発言語 開発・本番環境 業務支援系 その他 スピーディに技術選択 PHPの独⾃フレームワークから Railsへ移⾏している会社です。 開発フローはgithubフロー(っぽいので) 環境は今⾵を維持してると思います!
16 メドピアの開発チーム 新規事業 エンジニア チーム エンジニア チーム エンジニア チーム エンジニア
チーム エンジニア チーム エンジニア チーム フロントエンド SRE セキュリティ QA サービス開発チームと基盤チームのマトリクス構成 C T O 室 for 医師 for 薬剤師 for コンシューマー/ビジネス 新規事業 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
17 メドピアの開発チーム 新規事業 エンジニア チーム エンジニア チーム エンジニア チーム エンジニア
チーム エンジニア チーム エンジニア チーム フロントエンド SRE セキュリティ QA サービス開発チームと基盤チームのマトリクス構成 C T O 室 for 医師 for 薬剤師 for コンシューマー/ビジネス 新規事業 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc Railsエンジニア 40名(増員予定) アプリエンジニア 10名(増員予定) フロントエンドエンジニア 2名(増員予定) SRE 5名(増員予定) セキュリティ 1名(増員予定) QA 1名(増員予定)
18 メドピアの技術顧問 Ruby領域: 前島 真⼀⽒(@netwillnet) フリーランスとして、スタートアップ企業でのサービス開発⽴ち上げの経験多 数。地域Rubyコミュニティ ginza.rbやオンライン勉強会を主催。著書にパー フェクトRuby on
Rails(共著)、WEB+DB PRESSでRuby連載(Vol.93~95)。 メドピアには2016年2⽉より技術顧問として参画。 メドピアのRuby on Rails化やエンジニアの⽂化づくりをサポート フロントエンド領域: 林優⼀⽒(@frontainer) プロダクトアドバイザーソーシャルゲーム・Web開発会社にてフロントエンド エンジニア、本部⻑、CTO、プロダクトマネージャーを歴任。 現在、共同創業者の⼀員として⾃社サービスの開発に携わるとともに、社外に 向けてフロントエンド技術やプロダクト開発のアドバイスなどを⾏っている。 メドピアには2018年10⽉より技術顧問として参画。 メドピアのフロントエンド開発、JavaScript全般の技術⼒底上げをサポート。 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
19 メドピアの技術顧問 Ruby領域: 前島 真⼀⽒(@netwillnet) フリーランスとして、スタートアップ企業でのサービス開発⽴ち上げの経験多 数。地域Rubyコミュニティ ginza.rbやオンライン勉強会を主催。著書にパー フェクトRuby on
Rails(共著)、WEB+DB PRESSでRuby連載(Vol.93~95)。 メドピアには2016年2⽉より技術顧問として参画。 メドピアのRuby on Rails化やエンジニアの⽂化づくりをサポート フロントエンド領域: 林優⼀⽒(@frontainer) プロダクトアドバイザーソーシャルゲーム・Web開発会社にてフロントエンド エンジニア、本部⻑、CTO、プロダクトマネージャーを歴任。 現在、共同創業者の⼀員として⾃社サービスの開発に携わるとともに、社外に 向けてフロントエンド技術やプロダクト開発のアドバイスなどを⾏っている。 メドピアには2018年10⽉より技術顧問として参画。 メドピアのフロントエンド開発、JavaScript全般の技術⼒底上げをサポート。 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc コードを⼀緒に書いてくれたり メドピアテックブログ書いてくれちゃったり 勉強会主導してくれたり ランチに⼀緒に⾏ってくれり 合宿に⼀緒に⾏ってくれたり
⽬次 1. ⾃⼰紹介 2. メドピアってどういう会社? 3. 技術的負債とメドピアでの取り組み 4. 今からできる取り組み
21 技術的負債とメドピアの取り組み 今⽇のテーマは技術的負債 技術的負債ってなんだろう? Copyright(C) 2019 ALL RIGHTS RESERVED ,
MedPeer,Inc
22 技術的負債とメドピアの取り組み 今⽇のテーマは技術的負債 技術的負債(英: Technical debt)とは、⾏き当たりばった りなソフトウェアアーキテクチャと、余裕のないソフトウェ ア開発が引き起こす結果のことを指す新しい⽐喩である。 Copyright(C) 2019
ALL RIGHTS RESERVED , MedPeer,Inc https://ja.wikipedia.org/wiki/%E6%8A%80%E8%A1%93%E7%9A%84%E8%B2%A0%E5%82%B5 Wikipediaによると・・・
23 技術的負債とメドピアの取り組み 今⽇のテーマは技術的負債 考えました Copyright(C) 2019 ALL RIGHTS RESERVED ,
MedPeer,Inc
24 技術的負債とメドピアの取り組み 技術的負債とはエンジニア視点だと下記3つ。 • モチベーションを下げるコード • 想定外に障害が起きてしまうコード • 想定外に⼯数がかかるコード 個々⼈の気持ち・スキル・知識
で感じ⽅が変わるもの。 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
25 技術的負債とメドピアの取り組み 技術的負債を放置すると? • ⽣産性が落ちる • 障害が起きやすくなる • 経営陣との信頼が崩れる •
モチベーションが下がる • 辞めたくなる Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
26 技術的負債とメドピアの取り組み 放っておけない。カイゼンだ。 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
27 技術的負債とメドピアの取り組み 今⽇のテーマは技術的負債 モチベーションを下げるコードとは Copyright(C) 2019 ALL RIGHTS RESERVED ,
MedPeer,Inc
28 技術的負債とメドピアの取り組み モチベーションを下げるコードとは • 仕様がよくわからない • バージョンが最新じゃない・古い • トレンドじゃない Copyright(C)
2019 ALL RIGHTS RESERVED , MedPeer,Inc
29 技術的負債とメドピアの取り組み 障害が予想外に起きてしまうコード • テストがない • 可読性が悪い • 設計思想の理解が薄い Copyright(C)
2019 ALL RIGHTS RESERVED , MedPeer,Inc
30 技術的負債とメドピアの取り組み 想定より余計に⼯数がかかるコード • 可読性が悪い • Fat • DRYじゃない、DRYすぎる Copyright(C)
2019 ALL RIGHTS RESERVED , MedPeer,Inc
31 技術的負債とメドピアの取り組み 技術的負債の対策は下記3つかな? モチベーションを下げるコード 想定外に障害が起きてしまうコード 想定外に⼯数がかかるコード • モチベーションを上げる環境 • 障害が起きにくいコードと環境
• 開発がぐんぐん進むコードが⽣まれる環境 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
32 技術的負債とメドピアの取り組み 技術的負債の対策! • モチベーションを上げる環境 • 障害が起きにくいコードと環境 • 開発がぐんぐん進むコードが⽣まれる環境 Copyright(C)
2019 ALL RIGHTS RESERVED , MedPeer,Inc
33 技術的負債とメドピアの取り組み • モチベーションを上げる環境 Copyright(C) 2019 ALL RIGHTS RESERVED ,
MedPeer,Inc 技術的負債の対策!
34 技術的負債とメドピアの取り組み 技術的負債の対策! • モチベーションを上げる環境 独⾃フレームワークからRuby on Railsへ移⾏ Rails6で開発している PJTがすでに2つ!
Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
35 技術的負債とメドピアの取り組み • モチベーションを上げる環境 テストを書く 後世に安⼼を与える Copyright(C) 2019 ALL RIGHTS
RESERVED , MedPeer,Inc メドピアでは ⾒積もるときにテストを書く分を 想定して⾒積もるようにしている。 技術的負債の対策!
36 技術的負債とメドピアの取り組み 技術的負債の対策! • モチベーションを上げる環境 テストを書く 後世に安⼼を与える https://tech.medpeer.co.jp/entry/2017/05/23/070000 Copyright(C) 2019
ALL RIGHTS RESERVED , MedPeer,Inc メドピアでは 書き⽅などもブログでアウトプット
37 技術的負債とメドピアの取り組み • モチベーションを上げる環境 定期的なバージョンアップ Copyright(C) 2019 ALL RIGHTS RESERVED
, MedPeer,Inc 技術的負債の対策! メドピアでは ⽉2回、⾃動でプルリクが作られる 仕組みを採⽤。 dependabotとか無料になったし便利。 (キャプチャはcircleci-bundle-update-pr )
38 技術的負債とメドピアの取り組み 技術的負債の対策! • 障害が起きにくいコードと環境 Copyright(C) 2019 ALL RIGHTS RESERVED
, MedPeer,Inc
39 技術的負債とメドピアの取り組み • 障害が起きにくいコードと環境 テストを書く!(再) 技術的負債の対策! Copyright(C) 2019 ALL RIGHTS
RESERVED , MedPeer,Inc ⼤事なことなので2回。
40 技術的負債とメドピアの取り組み 技術的負債の対策! • 障害が起きにくいコードと環境 皆で勉強(会)する Copyright(C) 2019 ALL RIGHTS
RESERVED , MedPeer,Inc 輪読会おすすめです。 同じ書籍を持ち寄って、 みんなで読むところから始めよう。 社内の知⾒者に参加してもらったり すると周りに好影響与えます。 ※メドピアでは技術顧問の前島さんに ファシリテートしてもらいながら 気になったらみなで会話するスタイル
41 技術的負債とメドピアの取り組み 技術的負債の対策! • 障害が起きにくいコードと環境 皆で勉強(会)する Copyright(C) 2019 ALL RIGHTS
RESERVED , MedPeer,Inc
42 技術的負債とメドピアの取り組み 技術的負債の対策! • 障害が起きにくいコードと環境 レビューする! Copyright(C) 2019 ALL RIGHTS
RESERVED , MedPeer,Inc おすすめです。 プルリクのテンプレート化
43 技術的負債とメドピアの取り組み 技術的負債の対策! • 障害が起きにくいコードと環境 レビューする! Copyright(C) 2019 ALL RIGHTS
RESERVED , MedPeer,Inc おすすめです。 プルリクのテンプレート化 • このプルリクエストは何なのか? • チケットURL • 重点的に⾒てほしいところは?(不安なところ) • どんなテストをしたか • ローカル環境で動かしたくなった時の⼿順
44 技術的負債とメドピアの取り組み 技術的負債の対策! • 障害が起きにくいコードと環境 可読性よくする! Copyright(C) 2019 ALL RIGHTS
RESERVED , MedPeer,Inc CIで怒ってもらうのおすすめです。 コーディング規約チェックを⼊れる RubocopとかPHP_CodeSnifferとか。
45 技術的負債とメドピアの取り組み 技術的負債の対策! • 開発がぐんぐん進むコードが⽣まれる環境 Copyright(C) 2019 ALL RIGHTS RESERVED
, MedPeer,Inc
46 技術的負債とメドピアの取り組み 技術的負債の対策! • 開発がぐんぐん進むコードが⽣まれる環境 レールに乗る Copyright(C) 2019 ALL RIGHTS
RESERVED , MedPeer,Inc 輪読会おすすめです(再) Ruby関連の書籍や gemのREADMEを読むなどしてます。
47 技術的負債とメドピアの取り組み 技術的負債の対策! • 開発がぐんぐん進むコードが⽣まれる環境 整地部活動する Copyright(C) 2019 ALL RIGHTS
RESERVED , MedPeer,Inc 整地部おすすめです。 荒地ページを作ってリファクタリング したいところを記述。 隔週で1.5h 程度の時間を確保。 修正⼤きい場合は、 技術⼒⾼いエンジニアを頼りながら カイゼン!
48 技術的負債とメドピアの取り組み 技術的負債の対策! • 開発がぐんぐん進むコードが⽣まれる環境 整地部活動する https://tech.medpeer.co.jp/entry/2018/10/24/180932 Copyright(C) 2019 ALL
RIGHTS RESERVED , MedPeer,Inc
49 技術的負債とメドピアの取り組み 技術的負債の対策! • 開発がぐんぐん進むコードが⽣まれる環境 皆でプルリクを振り返る Copyright(C) 2019 ALL RIGHTS
RESERVED , MedPeer,Inc 例えば、Rails6でハマった知⾒ をプルリクを通し、 皆が同じ地雷を踏まないように 共有しています。
50 技術的負債とメドピアの取り組み 技術的負債の対策! • 開発がぐんぐん進むコードが⽣まれる環境 JavaScriptStudy ハンズオンで勉強会 • ES6 •
Vue.js • TypeScript Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
51 技術的負債とメドピアの取り組み 技術的負債の対策! • 開発がぐんぐん進むコードが⽣まれる環境 インフラStudy ハンズオンで勉強会 • シンプルなRailsアプリ作成 •
ネットワーク・セキュリティ Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
52 技術的負債とメドピアの取り組み 技術的負債の対策! • 開発がぐんぐん進むコードが⽣まれる環境 SecurityStudy 勉強⽤リポジトリ作成 • 初期はテストがfail •
脆弱性を潰すとsuccess • OWASP top10 の理解 OSSのRailsGoatを カスタマイズして利⽤ Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
⽬次 1. ⾃⼰紹介 2. メドピアってどういう会社? 3. 技術的負債とメドピアでの取り組み 4. 今からできる取り組み
54 取り組み とっつきやすい取り組み Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
取り組みとまとめ
55 取り組み 整地部 輪読会 プルリク振り返り会 プルリクテンプレート レビュー コーディング規約⾃動チェック Copyright(C) 2019
ALL RIGHTS RESERVED , MedPeer,Inc 取り組みとまとめ
56 取り組み すこしハードルがあるかもな取り組み Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
取り組みとまとめ
57 取り組み エンジニア⽂化を醸成 技術的負債の解消チームを作る 技術顧問の⼒をかりる 技術研鑽系イベントの定期開催 技術研鑽系のサポート Copyright(C) 2019 ALL
RIGHTS RESERVED , MedPeer,Inc 取り組みとまとめ
58 取り組みとまとめ 2013年から年2〜3回ペースで⾏き続けています! Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
<過去実績> 2013年3⽉ 伊東 2013年9⽉ 箱根 2014年2⽉ 伊東 2014年6⽉ 千葉 2015年3⽉ 伊東 2016年1⽉ 熱海 2016年8⽉ 湯河原 2017年3⽉ 湯河原 2017年7⽉ 千葉 2017年11⽉ 群⾺ 2018年7⽉ 伊⾖⼤島 2018年11⽉ 湯河原 2019年6⽉ 北の⽅?
59 まとめ 新規事業 エンジニア チーム エンジニア チーム SRE セキュリティ for
医師 新規事業 C T O 室 2016年までの開発チーム。
60 メドピアの開発チーム 新規事業 エンジニア チーム エンジニア チーム エンジニア チーム エンジニア
チーム SRE セキュリティ for 医師 for コンシューマー/ビジネス 新規事業 C T O 室 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc 2017年までの開発チーム。
61 メドピアの開発チーム 新規事業 エンジニア チーム エンジニア チーム エンジニア チーム エンジニア
チーム エンジニア チーム SRE セキュリティ for 医師 for コンシューマー/ビジネス 新規事業 C T O 室 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc 2018年までの開発チーム。
62 メドピアの開発チーム 新規事業 エンジニア チーム エンジニア チーム エンジニア チーム エンジニア
チーム エンジニア チーム エンジニア チーム フロントエンド SRE セキュリティ QA for 医師 for 薬剤師 for コンシューマー/ビジネス 新規事業 C T O 室 Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc 2019年の開発チーム。(今)
63 取り組み ⼈増えてくると・・・ Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
取り組みとまとめ
64 取り組みとまとめ まとめ 技術的負債を望んで作る⼈はいないが、 できてしまうのは仕⽅がない。 ⾒る⼈が変わると技術的負債に早変わり していまうという困り物。 やれるところからやっていく姿勢が⼤事。 Copyright(C) 2019
ALL RIGHTS RESERVED , MedPeer,Inc
65 仲間募集してます! Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
66 ご清聴ありがとうございました! Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc