Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ぼくらはこうして乗り越えてきた!

 ぼくらはこうして乗り越えてきた!

CTOが考える、チームで向き合う技術的負債との付き合い方

fukumura

June 20, 2019
Tweet

More Decks by fukumura

Other Decks in Programming

Transcript

  1. CTOが考える、
    チームで向きあう技術的負債との付き合い⽅
    2019/6/20
    メドピア株式会社
    |> ぼくらはこうして乗り越えてきた!

    View Slide

  2. ⽬次
    1. ⾃⼰紹介
    2. メドピアってどういう会社?
    3. 技術的負債とメドピアでの取り組み
    4. 今からできる取り組み

    View Slide

  3. 3
    ⾃⼰紹介
    2児の⽗。
    好きな飲物はビールです。
    2012年からメドピアで頑張ってます!
    MedBeerというエンジニア向けイベントを不定期で開催してます!
    福村 彰展(@fukumura)
    メドピア株式会社 CTO
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  4. ⽬次
    1. ⾃⼰紹介
    2. メドピアってどういう会社?
    3. 技術的負債とメドピアでの取り組み
    4. 今からできる取り組み

    View Slide

  5. 5
    メドピアってどういう会社?
    Supporting Doctors, Helping Patients.
    医師を⽀援すること。そして患者を救うこと。
    集合知により医療を再発明する。
    Mission
    -存在意義-
    Vision
    -実現したい姿-
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  6. 6
    メドピアってどういう会社?
    医師専⽤コミュニティサイトの
    運営がメインの会社です
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  7. 7
    メドピアってどういう会社?
    メドピアの特徴は3つ!
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  8. 8
    メドピアってどういう会社?
    1. 社⻑が現役の医師!
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  9. 9
    メドピアってどういう会社?
    1. 社⻑が現役の医師!
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    医療現場の⼿触り感
    強い想い

    View Slide

  10. 10
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    メドピアってどういう会社?
    2. ⽇本の医師の3⼈に1⼈が会員!


    医師の3⼈に1⼈が会員

    View Slide

  11. 11
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc.
    メドピアってどういう会社?
    2. ⽇本の医師の3⼈に1⼈が会員!


    医師の3⼈に1⼈が会員
    医療業界へ
    ゲームチェンジが起こせる
    プラットフォーム

    View Slide

  12. 12
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    メドピアってどういう会社?
    3. エンジニア⽂化!

    View Slide

  13. 13
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    メドピアってどういう会社?
    3. エンジニア⽂化!
    2012年から醸成している
    エンジニア⽂化!

    View Slide

  14. 14
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    メドピアってどういう会社?
    開発支援系
    データベース
    開発言語
    開発・本番環境
    業務支援系
    その他
    スピーディに技術選択

    View Slide

  15. 15
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    メドピアってどういう会社?
    開発支援系
    データベース
    開発言語
    開発・本番環境
    業務支援系
    その他
    スピーディに技術選択
    PHPの独⾃フレームワークから
    Railsへ移⾏している会社です。
    開発フローはgithubフロー(っぽいので)
    環境は今⾵を維持してると思います!

    View Slide

  16. 16
    メドピアの開発チーム
    新規事業
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    フロントエンド
    SRE
    セキュリティ
    QA
    サービス開発チームと基盤チームのマトリクス構成




    for 医師 for 薬剤師 for コンシューマー/ビジネス 新規事業
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  17. 17
    メドピアの開発チーム
    新規事業
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    フロントエンド
    SRE
    セキュリティ
    QA
    サービス開発チームと基盤チームのマトリクス構成




    for 医師 for 薬剤師 for コンシューマー/ビジネス 新規事業
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    Railsエンジニア 40名(増員予定)
    アプリエンジニア 10名(増員予定)
    フロントエンドエンジニア 2名(増員予定)
    SRE 5名(増員予定)
    セキュリティ 1名(増員予定)
    QA 1名(増員予定)

    View Slide

  18. 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

    View Slide

  19. 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
    コードを⼀緒に書いてくれたり
    メドピアテックブログ書いてくれちゃったり
    勉強会主導してくれたり
    ランチに⼀緒に⾏ってくれり
    合宿に⼀緒に⾏ってくれたり

    View Slide

  20. ⽬次
    1. ⾃⼰紹介
    2. メドピアってどういう会社?
    3. 技術的負債とメドピアでの取り組み
    4. 今からできる取り組み

    View Slide

  21. 21
    技術的負債とメドピアの取り組み
    今⽇のテーマは技術的負債
    技術的負債ってなんだろう?
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  22. 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によると・・・

    View Slide

  23. 23
    技術的負債とメドピアの取り組み
    今⽇のテーマは技術的負債
    考えました
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  24. 24
    技術的負債とメドピアの取り組み
    技術的負債とはエンジニア視点だと下記3つ。
    • モチベーションを下げるコード
    • 想定外に障害が起きてしまうコード
    • 想定外に⼯数がかかるコード
    個々⼈の気持ち・スキル・知識
    で感じ⽅が変わるもの。
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  25. 25
    技術的負債とメドピアの取り組み
    技術的負債を放置すると?
    • ⽣産性が落ちる
    • 障害が起きやすくなる
    • 経営陣との信頼が崩れる
    • モチベーションが下がる
    • 辞めたくなる
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  26. 26
    技術的負債とメドピアの取り組み
    放っておけない。カイゼンだ。
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  27. 27
    技術的負債とメドピアの取り組み
    今⽇のテーマは技術的負債
    モチベーションを下げるコードとは
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  28. 28
    技術的負債とメドピアの取り組み
    モチベーションを下げるコードとは
    • 仕様がよくわからない
    • バージョンが最新じゃない・古い
    • トレンドじゃない
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  29. 29
    技術的負債とメドピアの取り組み
    障害が予想外に起きてしまうコード
    • テストがない
    • 可読性が悪い
    • 設計思想の理解が薄い
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  30. 30
    技術的負債とメドピアの取り組み
    想定より余計に⼯数がかかるコード
    • 可読性が悪い
    • Fat
    • DRYじゃない、DRYすぎる
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  31. 31
    技術的負債とメドピアの取り組み
    技術的負債の対策は下記3つかな?
    モチベーションを下げるコード
    想定外に障害が起きてしまうコード
    想定外に⼯数がかかるコード
    • モチベーションを上げる環境
    • 障害が起きにくいコードと環境
    • 開発がぐんぐん進むコードが⽣まれる環境
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  32. 32
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • モチベーションを上げる環境
    • 障害が起きにくいコードと環境
    • 開発がぐんぐん進むコードが⽣まれる環境
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  33. 33
    技術的負債とメドピアの取り組み
    • モチベーションを上げる環境
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    技術的負債の対策!

    View Slide

  34. 34
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • モチベーションを上げる環境
    独⾃フレームワークからRuby on Railsへ移⾏
    Rails6で開発している
    PJTがすでに2つ!
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  35. 35
    技術的負債とメドピアの取り組み
    • モチベーションを上げる環境
    テストを書く
    後世に安⼼を与える
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    メドピアでは
    ⾒積もるときにテストを書く分を
    想定して⾒積もるようにしている。
    技術的負債の対策!

    View Slide

  36. 36
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • モチベーションを上げる環境
    テストを書く
    後世に安⼼を与える
    https://tech.medpeer.co.jp/entry/2017/05/23/070000
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    メドピアでは
    書き⽅などもブログでアウトプット

    View Slide

  37. 37
    技術的負債とメドピアの取り組み
    • モチベーションを上げる環境
    定期的なバージョンアップ
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    技術的負債の対策!
    メドピアでは
    ⽉2回、⾃動でプルリクが作られる
    仕組みを採⽤。
    dependabotとか無料になったし便利。
    (キャプチャはcircleci-bundle-update-pr )

    View Slide

  38. 38
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • 障害が起きにくいコードと環境
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  39. 39
    技術的負債とメドピアの取り組み
    • 障害が起きにくいコードと環境
    テストを書く!(再)
    技術的負債の対策!
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    ⼤事なことなので2回。

    View Slide

  40. 40
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • 障害が起きにくいコードと環境
    皆で勉強(会)する
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    輪読会おすすめです。
    同じ書籍を持ち寄って、
    みんなで読むところから始めよう。
    社内の知⾒者に参加してもらったり
    すると周りに好影響与えます。
    ※メドピアでは技術顧問の前島さんに
    ファシリテートしてもらいながら
    気になったらみなで会話するスタイル

    View Slide

  41. 41
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • 障害が起きにくいコードと環境
    皆で勉強(会)する
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  42. 42
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • 障害が起きにくいコードと環境
    レビューする!
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    おすすめです。
    プルリクのテンプレート化

    View Slide

  43. 43
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • 障害が起きにくいコードと環境
    レビューする!
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    おすすめです。
    プルリクのテンプレート化
    • このプルリクエストは何なのか?
    • チケットURL
    • 重点的に⾒てほしいところは?(不安なところ)
    • どんなテストをしたか
    • ローカル環境で動かしたくなった時の⼿順

    View Slide

  44. 44
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • 障害が起きにくいコードと環境
    可読性よくする!
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    CIで怒ってもらうのおすすめです。
    コーディング規約チェックを⼊れる
    RubocopとかPHP_CodeSnifferとか。

    View Slide

  45. 45
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • 開発がぐんぐん進むコードが⽣まれる環境
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  46. 46
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • 開発がぐんぐん進むコードが⽣まれる環境
    レールに乗る
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    輪読会おすすめです(再)
    Ruby関連の書籍や
    gemのREADMEを読むなどしてます。

    View Slide

  47. 47
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • 開発がぐんぐん進むコードが⽣まれる環境
    整地部活動する
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    整地部おすすめです。
    荒地ページを作ってリファクタリング
    したいところを記述。
    隔週で1.5h 程度の時間を確保。
    修正⼤きい場合は、
    技術⼒⾼いエンジニアを頼りながら
    カイゼン!

    View Slide

  48. 48
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • 開発がぐんぐん進むコードが⽣まれる環境
    整地部活動する
    https://tech.medpeer.co.jp/entry/2018/10/24/180932
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  49. 49
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • 開発がぐんぐん進むコードが⽣まれる環境
    皆でプルリクを振り返る
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    例えば、Rails6でハマった知⾒
    をプルリクを通し、
    皆が同じ地雷を踏まないように
    共有しています。

    View Slide

  50. 50
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • 開発がぐんぐん進むコードが⽣まれる環境
    JavaScriptStudy
    ハンズオンで勉強会
    • ES6
    • Vue.js
    • TypeScript
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  51. 51
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • 開発がぐんぐん進むコードが⽣まれる環境
    インフラStudy
    ハンズオンで勉強会
    • シンプルなRailsアプリ作成
    • ネットワーク・セキュリティ
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  52. 52
    技術的負債とメドピアの取り組み
    技術的負債の対策!
    • 開発がぐんぐん進むコードが⽣まれる環境
    SecurityStudy
    勉強⽤リポジトリ作成
    • 初期はテストがfail
    • 脆弱性を潰すとsuccess
    • OWASP top10 の理解
    OSSのRailsGoatを
    カスタマイズして利⽤
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  53. ⽬次
    1. ⾃⼰紹介
    2. メドピアってどういう会社?
    3. 技術的負債とメドピアでの取り組み
    4. 今からできる取り組み

    View Slide

  54. 54
    取り組み
    とっつきやすい取り組み
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    取り組みとまとめ

    View Slide

  55. 55
    取り組み
    整地部
    輪読会
    プルリク振り返り会
    プルリクテンプレート
    レビュー
    コーディング規約⾃動チェック
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    取り組みとまとめ

    View Slide

  56. 56
    取り組み
    すこしハードルがあるかもな取り組み
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    取り組みとまとめ

    View Slide

  57. 57
    取り組み
    エンジニア⽂化を醸成
    技術的負債の解消チームを作る
    技術顧問の⼒をかりる
    技術研鑽系イベントの定期開催
    技術研鑽系のサポート
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    取り組みとまとめ

    View Slide

  58. 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⽉ 北の⽅?

    View Slide

  59. 59
    まとめ
    新規事業
    エンジニア
    チーム
    エンジニア
    チーム
    SRE
    セキュリティ
    for 医師 新規事業




    2016年までの開発チーム。

    View Slide

  60. 60
    メドピアの開発チーム
    新規事業
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    SRE
    セキュリティ
    for 医師 for コンシューマー/ビジネス 新規事業




    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    2017年までの開発チーム。

    View Slide

  61. 61
    メドピアの開発チーム
    新規事業
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    SRE
    セキュリティ
    for 医師 for コンシューマー/ビジネス 新規事業




    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    2018年までの開発チーム。

    View Slide

  62. 62
    メドピアの開発チーム
    新規事業
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    エンジニア
    チーム
    フロントエンド
    SRE
    セキュリティ
    QA
    for 医師 for 薬剤師 for コンシューマー/ビジネス 新規事業




    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    2019年の開発チーム。(今)

    View Slide

  63. 63
    取り組み
    ⼈増えてくると・・・
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc
    取り組みとまとめ

    View Slide

  64. 64
    取り組みとまとめ
    まとめ
    技術的負債を望んで作る⼈はいないが、
    できてしまうのは仕⽅がない。
    ⾒る⼈が変わると技術的負債に早変わり
    していまうという困り物。
    やれるところからやっていく姿勢が⼤事。
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  65. 65
    仲間募集してます!
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide

  66. 66
    ご清聴ありがとうございました!
    Copyright(C) 2019 ALL RIGHTS RESERVED , MedPeer,Inc

    View Slide