Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
シード期スタートアップで 2年半カイゼンしてきたこと
meijin
December 15, 2021
Programming
1
160
シード期スタートアップで 2年半カイゼンしてきたこと
https://rakus.connpass.com/event/229144/
?
meijin
December 15, 2021
Tweet
Share
More Decks by meijin
See All by meijin
React NativeアプリにStorybook CSF3.0を導入しよう
texmeijin
0
650
初めてエンジニアインターンの育成に取り組んで考えたこと
texmeijin
0
890
ESLintの独自ルール作成にチャレンジした話
texmeijin
2
380
一部上場企業からベンチャー転職のBefore/After
texmeijin
0
420
次世代フロントエンドツールVite入門会
texmeijin
0
590
microCMSを使った ビジネスサイドとの コミュニケーション
texmeijin
2
720
国産OSS_aspida_の_公認エバンジェリストに_任命してもらった話.pdf
texmeijin
1
240
React Native×Firebaseで オンライン指導用の チャットアプリを開発している話
texmeijin
0
1.9k
管理画面付きAPIが簡単に作れるmicroCMSとの向き合い方まとめ
texmeijin
1
1k
Other Decks in Programming
See All in Programming
子育てとEMと転職と
_atsushisakai
1
430
存在しないアセットへの参照と 未公開アセットでのネタバレに どう立ち向かうか / How to prevent missing assets and spoilers by assets
orgachem
0
210
2023年にクル(かもしれない)通信ミドルウェア技術(仮)
s_hosoai
0
230
はじめての「R」
masaha03
0
130
Hatena Engineer Seminar #23「新卒研修で気軽に『ありがとう』を伝え合える Slack アプリを開発した話」
slashnephy
0
410
Gradle build: The time is now
nonews
1
510
CDKでValidationする本当の方法 / cdk-validation
gotok365
1
270
Prácticas de Seguridad en Kubernetes
pablokbs
0
130
LIFFで動く割り勘アプリTATEKAをリリースしてみた話
inoue2002
0
270
Becoming an Android Librarian (Android World Wide 2023 Jan)
skydoves
2
230
Swift Expression Macros: a practical introduction
kishikawakatsumi
2
740
ECテックカンファレンス2023
kspace
1
390
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
57
6.6k
Building a Scalable Design System with Sketch
lauravandoore
451
31k
Building Better People: How to give real-time feedback that sticks.
wjessup
346
17k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
239
19k
Put a Button on it: Removing Barriers to Going Fast.
kastner
56
2.5k
How GitHub Uses GitHub to Build GitHub
holman
465
280k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
657
120k
Into the Great Unknown - MozCon
thekraken
2
310
Building an army of robots
kneath
301
40k
How to train your dragon (web standard)
notwaldorf
66
4.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
24
4.7k
WebSockets: Embracing the real-time Web
robhawkes
58
6k
Transcript
シード期スタートアップで 2年半カイゼンしてきたこと 株式会社NoSchool CTO @meijin 1
自己紹介 - ニックネーム:名人 - フロントエンドが好きなWebエンジニア - 株式会社LIFULL(2016/04〜) 株式会社NoSchool CTO(2019/03〜) -
個人開発するする詐欺 - 趣味は将棋☗ 2 Meijin_garden
3
今回話すこと 4
私がスタートアップに参画して 2年半かけてカイゼンしてきた歴史 5
概観 6
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〜
8 WordPress + Bitbucket + さくらVPS時代 Laravel + 一部Nuxt +
GitHub + AWS(EC2ベース)時代 Laravel(with テスト) + 全画面Nuxt + GitHub + AWS(Fargate)時代 前述に加えてGitHub Actions自動化、noImplicitAny脱退、 開発環境改善、XaaSの導入を次々やる時代 白亜紀 弥生 江戸 平成
事業のピボットやプロダクトの多様化、 トレンドの変化に応じてカイゼンしてきました ※白亜紀とか弥生とか言ってますが、それぞれのフェーズの頑張りがあって 今があるのでモダンではない方法や低コストで組むのが必ずしも悪いわけではないです 9
1. WordPress + Bitbucket + さくらVPS時代 10 白亜紀 2018/05〜
• 当時のサービス名は「NoSchool」 • Wordpress魔改造で開発 • (当時GitHubのprivate repoが有料だったので) Bitbucketで運用 • 複業メンバーだけで勢いで開発
11
2. Laravel + 一部Nuxt + GitHub + AWS(EC2ベース) 時代 12
弥生 2019/05〜
13 【実録】WordPressサイトをAWS+Laravel+Nuxtにフルリプレイスした話
• NoSchoolがシードで資金調達 • CTO(※僕)入社 • 複業メンバーは変わらず参画 & 追加 • 2ヶ月でできうる限りのモダン化
14
• Framework使って開発するの最高! • 横持ちで設計されたデータベース最高! • AWSでサーバー管理できるの最高! • フロントエンドのNuxt化を進めていくぞ! 15
設計を学んで、Modelに依存しない 設計にチャレンジ 16
NuxtのTypeScript化 17
3. Laravel(with テスト) + 全画面Nuxt + GitHub + AWS(Fargate)時代 18
江戸 2020/08〜
https://note.com/noschool_dev/n/n2e4883315603 19
• 最初に手掛けた事業(NoSchool)をピボット😭 • →ポジティブにとらえて、AWS環境を刷新 • local ~ prodまで全部コンテナ化! • 全ページをNuxt化!
• PHP7.3 -> 7.4 class propertyに型指定が...! 20
• コンテナ化→検証環境以降のサーバーの挙動を ローカルで再現しやすくなった!AMIで秘伝のタレ 運用から開放された! • PHP7.4→クラスのプロパティに型が指定できるの で、実装の安全性が向上! 21
アーキテクチャのカイゼン 22 app/Services app/Repositories UserService HogeService UserRepository HogeRepository … …
弥生
アーキテクチャのカイゼン 23 app/Domain UserAccount UseCase … 江戸 RegisterAccount UnRegsiterAccount Infrastructure
MySQLUserAccount Repository Entity/UserAccount Domain Repository/ UserAccountRepository Interface Fat Serviceの欠点→別機能の実装が同クラスに 混在し思わぬ影響が発生。様々な責務の実装が 混ざり読みにくい ↓ 機能(Feature)ごとにnamespaceを切り、 UseCaseやDomain層も必要に応じて作成 (APIテストを徹底して書いているのであとからリ ファクタもできる)
4. 前述に加えてGitHub Actions自動化、 noImplicitAny脱退、 開発環境改善、XaaSの導入を次々やる時代 24 平成 2021/04〜
https://zenn.dev/manalink/articles/manalink-gith ub-actions 25
https://zenn.dev/manalink/articles/manalink-ssl-o riginal-domain 26
https://speakerdeck.com/texmeijin/guan-li-hua-mian-fu-kiapigaji an-dan-nizuo-rerumicrocmstofalsexiang-kihe-ifang-matome 27
Feature Flags サービスの導入 28
カイゼンするなかで思ったこと 29 白亜紀 弥生 江戸 平成
その1 事業的に優先度が高いところは、 いずれ機能改善が入るので、 リファクタリングも追ってできる 30
その2 自分たちが頑張っても 競争優位性にならないものは XaaSでカバーする 31
その3 いずれ開発することになりそうな 技術を先に学んでおいて、 いざ実装するときに思い通りの 技術選定をする 32
その4 次々新しい開発をするのも良いけど 1つのプロダクトを ずっとカイゼンし続けるのも 意外と学びがある 33
その5 カイゼンの過程を 記事やスライドにすると 見返したとき懐かしいのでおすすめw 34
告知! 35
エンジニアを絶賛採用中! 36
ご清聴ありがとうございました! 37 Meijin_garden