CTOが考える、チームで向き合う技術的負債との付き合い方
CTOが考える、チームで向きあう技術的負債との付き合い⽅2019/6/20メドピア株式会社|> ぼくらはこうして乗り越えてきた!
View Slide
⽬次1. ⾃⼰紹介2. メドピアってどういう会社?3. 技術的負債とメドピアでの取り組み4. 今からできる取り組み
3⾃⼰紹介2児の⽗。好きな飲物はビールです。2012年からメドピアで頑張ってます!MedBeerというエンジニア向けイベントを不定期で開催してます!福村 彰展(@fukumura)メドピア株式会社 CTOCopyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
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医療現場の⼿触り感強い想い
10Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Incメドピアってどういう会社?2. ⽇本の医師の3⼈に1⼈が会員!??医師の3⼈に1⼈が会員
11Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc.メドピアってどういう会社?2. ⽇本の医師の3⼈に1⼈が会員!??医師の3⼈に1⼈が会員医療業界へゲームチェンジが起こせるプラットフォーム
12Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Incメドピアってどういう会社?3. エンジニア⽂化!
13Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Incメドピアってどういう会社?3. エンジニア⽂化!2012年から醸成しているエンジニア⽂化!
14Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Incメドピアってどういう会社?開発支援系データベース開発言語開発・本番環境業務支援系その他スピーディに技術選択
15Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Incメドピアってどういう会社?開発支援系データベース開発言語開発・本番環境業務支援系その他スピーディに技術選択PHPの独⾃フレームワークからRailsへ移⾏している会社です。開発フローはgithubフロー(っぽいので)環境は今⾵を維持してると思います!
16メドピアの開発チーム新規事業エンジニアチームエンジニアチームエンジニアチームエンジニアチームエンジニアチームエンジニアチームフロントエンドSREセキュリティQAサービス開発チームと基盤チームのマトリクス構成CTO室for 医師 for 薬剤師 for コンシューマー/ビジネス 新規事業Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
17メドピアの開発チーム新規事業エンジニアチームエンジニアチームエンジニアチームエンジニアチームエンジニアチームエンジニアチームフロントエンドSREセキュリティQAサービス開発チームと基盤チームのマトリクス構成CTO室for 医師 for 薬剤師 for コンシューマー/ビジネス 新規事業Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,IncRailsエンジニア 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コードを⼀緒に書いてくれたりメドピアテックブログ書いてくれちゃったり勉強会主導してくれたりランチに⼀緒に⾏ってくれり合宿に⼀緒に⾏ってくれたり
21技術的負債とメドピアの取り組み今⽇のテーマは技術的負債技術的負債ってなんだろう?Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
22技術的負債とメドピアの取り組み今⽇のテーマは技術的負債技術的負債(英: Technical debt)とは、⾏き当たりばったりなソフトウェアアーキテクチャと、余裕のないソフトウェア開発が引き起こす結果のことを指す新しい⽐喩である。Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inchttps://ja.wikipedia.org/wiki/%E6%8A%80%E8%A1%93%E7%9A%84%E8%B2%A0%E5%82%B5Wikipediaによると・・・
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/070000Copyright(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,IncCIで怒ってもらうのおすすめです。コーディング規約チェックを⼊れる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/180932Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
49技術的負債とメドピアの取り組み技術的負債の対策!• 開発がぐんぐん進むコードが⽣まれる環境皆でプルリクを振り返るCopyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc例えば、Rails6でハマった知⾒をプルリクを通し、皆が同じ地雷を踏まないように共有しています。
50技術的負債とメドピアの取り組み技術的負債の対策!• 開発がぐんぐん進むコードが⽣まれる環境JavaScriptStudyハンズオンで勉強会• ES6• Vue.js• TypeScriptCopyright(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
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 医師 新規事業CTO室2016年までの開発チーム。
60メドピアの開発チーム新規事業エンジニアチームエンジニアチームエンジニアチームエンジニアチームSREセキュリティfor 医師 for コンシューマー/ビジネス 新規事業CTO室Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc2017年までの開発チーム。
61メドピアの開発チーム新規事業エンジニアチームエンジニアチームエンジニアチームエンジニアチームエンジニアチームSREセキュリティfor 医師 for コンシューマー/ビジネス 新規事業CTO室Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc2018年までの開発チーム。
62メドピアの開発チーム新規事業エンジニアチームエンジニアチームエンジニアチームエンジニアチームエンジニアチームエンジニアチームフロントエンドSREセキュリティQAfor 医師 for 薬剤師 for コンシューマー/ビジネス 新規事業CTO室Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc2019年の開発チーム。(今)
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