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

シード期スタートアップで 2年半カイゼンしてきたこと

meijin
December 15, 2021

シード期スタートアップで 2年半カイゼンしてきたこと

meijin

December 15, 2021
Tweet

More Decks by meijin

Other Decks in Programming

Transcript

  1. シード期スタートアップで
    2年半カイゼンしてきたこと
    株式会社NoSchool CTO @meijin
    1

    View full-size slide

  2. 自己紹介
    - ニックネーム:名人
    - フロントエンドが好きなWebエンジニア
    - 株式会社LIFULL(2016/04〜)
    株式会社NoSchool CTO(2019/03〜)
    - 個人開発するする詐欺
    - 趣味は将棋☗
    2
    Meijin_garden

    View full-size slide

  3. 今回話すこと
    4

    View full-size slide

  4. 私がスタートアップに参画して
    2年半かけてカイゼンしてきた歴史
    5

    View full-size slide

  5. 7
    WordPress + Bitbucket + さくらVPS時代
    Laravel + 一部Nuxt + GitHub + AWS(EC2ベース)時代
    Laravel(with テスト) + 全画面Nuxt + GitHub + AWS(Fargate)時代
    前述に加えてGitHub Actions自動化、noImplicitAny脱退、
    開発環境改善、XaaSの導入を次々やる時代
    2018/05〜
    2019/05〜
    2020/08〜
    2021/04〜

    View full-size slide

  6. 8
    WordPress + Bitbucket + さくらVPS時代
    Laravel + 一部Nuxt + GitHub + AWS(EC2ベース)時代
    Laravel(with テスト) + 全画面Nuxt + GitHub + AWS(Fargate)時代
    前述に加えてGitHub Actions自動化、noImplicitAny脱退、
    開発環境改善、XaaSの導入を次々やる時代
    白亜紀
    弥生
    江戸
    平成

    View full-size slide

  7. 事業のピボットやプロダクトの多様化、
    トレンドの変化に応じてカイゼンしてきました
    ※白亜紀とか弥生とか言ってますが、それぞれのフェーズの頑張りがあって
    今があるのでモダンではない方法や低コストで組むのが必ずしも悪いわけではないです
    9

    View full-size slide

  8. 1. WordPress + Bitbucket + さくらVPS時代
    10
    白亜紀
    2018/05〜

    View full-size slide

  9. ● 当時のサービス名は「NoSchool」
    ● Wordpress魔改造で開発
    ● (当時GitHubのprivate repoが有料だったので)
    Bitbucketで運用
    ● 複業メンバーだけで勢いで開発
    11

    View full-size slide

  10. 2. Laravel + 一部Nuxt + GitHub + AWS(EC2ベース)
    時代
    12
    弥生
    2019/05〜

    View full-size slide

  11. 13
    【実録】WordPressサイトをAWS+Laravel+Nuxtにフルリプレイスした話

    View full-size slide

  12. ● NoSchoolがシードで資金調達
    ● CTO(※僕)入社
    ● 複業メンバーは変わらず参画 & 追加
    ● 2ヶ月でできうる限りのモダン化
    14

    View full-size slide

  13. ● Framework使って開発するの最高!
    ● 横持ちで設計されたデータベース最高!
    ● AWSでサーバー管理できるの最高!
    ● フロントエンドのNuxt化を進めていくぞ!
    15

    View full-size slide

  14. 設計を学んで、Modelに依存しない
    設計にチャレンジ
    16

    View full-size slide

  15. NuxtのTypeScript化
    17

    View full-size slide

  16. 3. Laravel(with テスト) + 全画面Nuxt + GitHub +
    AWS(Fargate)時代
    18
    江戸
    2020/08〜

    View full-size slide

  17. https://note.com/noschool_dev/n/n2e4883315603
    19

    View full-size slide

  18. ● 最初に手掛けた事業(NoSchool)をピボット😭
    ● →ポジティブにとらえて、AWS環境を刷新
    ● local ~ prodまで全部コンテナ化!
    ● 全ページをNuxt化!
    ● PHP7.3 -> 7.4 class propertyに型指定が...!
    20

    View full-size slide

  19. ● コンテナ化→検証環境以降のサーバーの挙動を
    ローカルで再現しやすくなった!AMIで秘伝のタレ
    運用から開放された!
    ● PHP7.4→クラスのプロパティに型が指定できるの
    で、実装の安全性が向上!
    21

    View full-size slide

  20. アーキテクチャのカイゼン
    22
    app/Services
    app/Repositories
    UserService
    HogeService
    UserRepository
    HogeRepository
    … …
    弥生

    View full-size slide

  21. アーキテクチャのカイゼン
    23
    app/Domain UserAccount UseCase

    江戸
    RegisterAccount
    UnRegsiterAccount
    Infrastructure
    MySQLUserAccount
    Repository
    Entity/UserAccount
    Domain
    Repository/
    UserAccountRepository
    Interface
    Fat Serviceの欠点→別機能の実装が同クラスに
    混在し思わぬ影響が発生。様々な責務の実装が
    混ざり読みにくい

    機能(Feature)ごとにnamespaceを切り、
    UseCaseやDomain層も必要に応じて作成
    (APIテストを徹底して書いているのであとからリ
    ファクタもできる)

    View full-size slide

  22. 4. 前述に加えてGitHub Actions自動化、
    noImplicitAny脱退、
    開発環境改善、XaaSの導入を次々やる時代
    24
    平成
    2021/04〜

    View full-size slide

  23. https://zenn.dev/manalink/articles/manalink-gith
    ub-actions
    25

    View full-size slide

  24. https://zenn.dev/manalink/articles/manalink-ssl-o
    riginal-domain
    26

    View full-size slide

  25. https://speakerdeck.com/texmeijin/guan-li-hua-mian-fu-kiapigaji
    an-dan-nizuo-rerumicrocmstofalsexiang-kihe-ifang-matome
    27

    View full-size slide

  26. Feature Flags サービスの導入
    28

    View full-size slide

  27. カイゼンするなかで思ったこと
    29
    白亜紀
    弥生
    江戸
    平成

    View full-size slide

  28. その1
    事業的に優先度が高いところは、
    いずれ機能改善が入るので、
    リファクタリングも追ってできる
    30

    View full-size slide

  29. その2
    自分たちが頑張っても
    競争優位性にならないものは
    XaaSでカバーする
    31

    View full-size slide

  30. その3
    いずれ開発することになりそうな
    技術を先に学んでおいて、
    いざ実装するときに思い通りの
    技術選定をする
    32

    View full-size slide

  31. その4
    次々新しい開発をするのも良いけど
    1つのプロダクトを
    ずっとカイゼンし続けるのも
    意外と学びがある
    33

    View full-size slide

  32. その5
    カイゼンの過程を
    記事やスライドにすると
    見返したとき懐かしいのでおすすめw
    34

    View full-size slide

  33. エンジニアを絶賛採用中!
    36

    View full-size slide

  34. ご清聴ありがとうございました!
    37
    Meijin_garden

    View full-size slide