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
シード期スタートアップで 2年半カイゼンしてきたこと
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
meijin
December 15, 2021
Programming
340
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
シード期スタートアップで 2年半カイゼンしてきたこと
https://rakus.connpass.com/event/229144/
?
meijin
December 15, 2021
More Decks by meijin
See All by meijin
Technical Decisions and Reflections on "Test Maker" After Two Years of Development
texmeijin
1
120
弊社の「意識チョット低いアーキテクチャ」10選
texmeijin
5
26k
DDDを志して3年経ったら「DDDの皮を被ったクリーンアーキテクチャ」になった話【デブサミ2024夏】
texmeijin
4
4.4k
サービス黎明期にNuxt.js v2からNext.js移行を決めた理由と進め方
texmeijin
0
530
スタートアップCTOが個人開発で収益化・年13本記事発信・5件登壇を平行するための時間管理
texmeijin
4
1.2k
個人開発がおすすめな理由
texmeijin
3
1.1k
弊社の開発体験の良いところは?メンバーに訊いてみた!
texmeijin
0
490
初めてESLintプラグインにコントリビュートした話
texmeijin
0
270
先生と一緒に プロダクトを良くする アナリティクス機能の開発
texmeijin
0
130
Other Decks in Programming
See All in Programming
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2k
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
120
The NotImplementedError Problem in Ruby
koic
1
710
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
510
New "Type" system on PicoRuby
pocke
1
830
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.6k
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
120
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
0
220
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
390
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
120
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Thoughts on Productivity
jonyablonski
76
5.2k
Six Lessons from altMBA
skipperchong
29
4.3k
A Modern Web Designer's Workflow
chriscoyier
698
190k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
230
A better future with KSS
kneath
240
18k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
230
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Everyday Curiosity
cassininazir
0
230
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