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
スタディサプリ/Quipper オンラインミートアップ #1(Webエンジニア) / 新規サー...
Search
Yoshihide TANIGUCHI
July 14, 2021
Programming
0
2.8k
スタディサプリ/Quipper オンラインミートアップ #1(Webエンジニア) / 新規サービス開発チームの紹介 / Studysapuri online meetup #1
Yoshihide TANIGUCHI
July 14, 2021
Tweet
Share
More Decks by Yoshihide TANIGUCHI
See All by Yoshihide TANIGUCHI
Raspberry Pi と Netatmo と少しの ruby で作る二酸化炭素濃度モニター君
ravelll
0
94
Ruby の静的型チェックの話
ravelll
0
87
Quipperian and VimConf2019
ravelll
1
5.7k
さくらのフロントエンド さくらの Vue.js // vue.js in SAKURA
ravelll
3
4.4k
PHP7.2で始める型宣言 // Type declaration with PHP 7.2
ravelll
0
290
ISUCONのすゝめ // Shall we ISUCON ?
ravelll
0
120
オブジェクト指向設計とデザインパターンの基礎 / Basics of object oriented design and design pattern
ravelll
0
740
1人から始める大規模Webアプリケーションの言語バージョンアップ / Upgrade PHP in a large application
ravelll
0
160
PHP 5.4 ~ 5.6 での追加機能のおさらいとバージョンアップへの誘い / Re-introduce PHP5.4~5.6 and invitation for upgrading
ravelll
0
100
Other Decks in Programming
See All in Programming
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
140
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
140
Jetpack XR SDKから紐解くAndroid XR開発と技術選定のヒント / about-androidxr-and-jetpack-xr-sdk
drumath2237
1
200
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
150
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
910
AIコーディングエージェント(Gemini)
kondai24
0
300
SwiftUIで本格音ゲー実装してみた
hypebeans
0
520
チームをチームにするEM
hitode909
0
410
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
240
Navigating Dependency Injection with Metro
l2hyunwoo
1
200
Vibe codingでおすすめの言語と開発手法
uyuki234
0
130
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
290
Featured
See All Featured
WCS-LA-2024
lcolladotor
0
390
30 Presentation Tips
portentint
PRO
1
180
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
0
320
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
280
Statistics for Hackers
jakevdp
799
230k
Exploring anti-patterns in Rails
aemeredith
2
210
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
The Curse of the Amulet
leimatthew05
0
5.9k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
0
68
Unsuck your backbone
ammeep
671
58k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Transcript
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 新規サービス開発チームの紹介 TANIGUCHI Yoshihide @ravelll スタディサプリ/Quipper オンラインミートアップ
#1(Webエンジニア)
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 Agenda | 01 02 03 新規サービス開発チームについて
開発しているサービスについて 見えている技術的な課題
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 < Hi 👋 • @ravelll (TANIGUCHI
Yoshihide) ◦ バックエンドエンジニア@GMOペパボ ◦ フロントエンドエンジニア@さくらインターネット ◦ Web Engineer@Quipper (2019-06~) • 現チームではバックエンド API の開発とサービスの稼働環境の整備を担当 ときどき Web フロントエンドの開発も
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 新規サービス開発チームについて 01
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 開発チーム ➔ Web 13 人, iOS
6 人, Android 4 人, QA 1 人, PdM 1 人 ◆ Web は 3 つのサブチームに分割 ➔ 2週間1スプリントのスクラム ◆ スクラムセレモニーは Web のサブチームごとと職能ごとに実施中 ◆ 職能横断チーム(feature チーム)の構成も検討中
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 開発の進め方 ➔ PdM が機能の叩き台をメンバーに展開 ➔ みんなで仕様を固めてドキュメント化・Issue
化 ➔ Sprint Backlog に追加、Sprint Planning でメンバーにアサイン ➔ 実装 ◆ 1 人をリードとしてアサイン、必要に応じてペアプロ・モブプロも ➔ 確認
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 利用ツール ➔ コミュニケーション: Slack, Google Meet,
SpetialChat ➔ プロジェクト管理: ZenHub ➔ ドキュメンテーション: GitHub Wiki, GitHub Issue, Google Docs, Google Slides, Miro ➔ デザイン共有: Figma ➔ 有用そうなツールを見つけたら気軽に試せる環境
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 Web Engineer の担当範囲 ➔ 開発する機能の提案・設計 ➔
フロントエンド・バックエンドアプリケーションの設計・実装・運用保守 ➔ アプリケーションの稼働環境の整備 ◆ CI/CD の整備 ◆ アプリケーションの K8s 上への展開(K8s manifest の記述) ◆ Datadog 等を利用した稼働状況の監視や SLI / SLO の設定
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 開発しているサービスについて 02
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 ➔ 学習系のサービス ◆ 目下開発中のサービスなので詳細は🤐 ◆ ドメイン知識がある程度溜まっている状態から開発スタート
◆ ゼロからアプリケーションを書く 開発しているサービスについて
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 アーキテクチャ
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 これまでの意思決定から 3 つをピックアップ ➔ サービス間は基本的に GraphQL
で会話 ➔ 初手 Microservices ➔ バックエンドサービスに複数言語
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 基本的に GraphQL で会話 ➔ API 開発時のクライアント・サーバーの両開発者の協調を促進させたかった
◆ 既存プロジェクトの開発でクライアント(mobile app)側の開発が API の後追いで行われてしまう課題があった ➔ 既存の REST API で起きていた Over-fetching とそれを軽減するための 様々な構造を持つエンティティの量産(i.e. User, UserLite, UserWithABC, ...)を防ぎたかった ➔ 現チームでは主にクライアント側が GraphQL Schema を提案し、 サーバー側の開発者と議論して実装している
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 初手 Microservices ➔ 社内の古くから存在するあるサービスが大きな Monolith になっている
◆ 一部を Microservices に移行中 ➔ 今回作るサービスについては既にドメイン知識が多くあり、分けるべきと思し きドメイン境界が見えていた ◆ 安全に最初から Service を分割することでそれぞれの Service の 開発効率を高く保てそう ◆ 社内に Microservices 運用の知見を増やせそう
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 バックエンドサービスに複数言語 ➔ RoR と Node.js (TypeScript)
◆ Content は責務的に型によるサポートが欲しい → TS Usage は既存の資源・知見を活かして素早く開発したい → RoR ◆ Node.js は社内に運用の知見はほぼ無かったが、それを加味しても恩 恵が勝ると判断 ➔ 社の First language は Ruby だが、目的に応じて柔軟に言語を選んでいる チームが多い ◆ 社内に Go, Elixir のアプリケーションも
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 余談: より良い意思決定のための取り組み ➔ 毎週1時間、リードアーキテクト含む社内の開発者たちが技術トピックを持ち 寄り会話する場(random tech
talk)がある ◆ 開発者全員が参加必須の会ではなく、意思決定を行う上で必須のフ ローというわけでもない ◆ 技術的な意思決定について広く意見が欲しいときはここで会話をすると 大変便利
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 random tech talk の雰囲気
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 見えている技術的な課題 03
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 課題 ➔ Partial Outage への対応 ➔
GraphQL API の運用 ➔ 高頻度で安定したデリバリー
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 Partial Outage への対応 ➔ バックエンドアプリケーション群の一部に問題が発生してもユーザーのサー ビス利用を止めないようにしたい
◆ 例:ユーザーの学習履歴の取得失敗が学習に影響を与えないようにす る ➔ 取り組みたいが現状は具体的な対応に着手できていない状況
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 GraphQL API の運用 ➔ GraphQL のクエリの種別(Operation)の粒度での
SLI / SLO の設定がで きていない ◆ サービスの中で特に体験を劣化させたくない機能を SLI に据えて、機能 が必要とするクエリについての SLO を監視したい ◆ Apollo の data platform サービスである Apollo Studio と Datadog の Apollo 連携を使って解決できるか検証中 ➔ キャッシュ活用、Directive の活用、セキュリティ、…
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 高頻度で安定したデリバリー ➔ スタディサプリの Production リリースは週に1回 ◆
手動 QA test(1 ~ 2日) → リリース ➔ 新規サービスは週1回よりも高頻度にリリースできるようにしたい ◆ QA test の自動化 ◆ Canary Release, Feature Flags など Production リリース時のリスク を削減
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 Quipper では人々の学びを支える 仲間を絶賛募集中です!!!
#sapurimeetup スタディサプリ/Quipper オンラインミートアップ #1 「quipper web engineer」で検索!!!