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
期待しすぎずに取り組む両面 TypeScript
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
tomohiro shozawa
March 25, 2024
Technology
1.6k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
期待しすぎずに取り組む両面 TypeScript
tomohiro shozawa
March 25, 2024
More Decks by tomohiro shozawa
See All by tomohiro shozawa
プロダクトのタイプ別 GraphQL クライアントの選び方
shozawa
3
30k
Other Decks in Technology
See All in Technology
LayerXにおけるセキュリティ管理の現在地と次の一手
tosho
0
210
Claude Codeとのおしゃべりでセマンティックモデルの定義からダッシュボード作成まで完成させる
nic_sugiyama
0
120
脆弱性対応、どこで線を引くか
rymiyamoto
1
400
プロダクト開発から業務改善コンサルまで。事業全体へ「染み出す」ことで広がるエンジニアの可能性
ham0215
0
130
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
140
中期計画、2回作ってみた ~業務委託と正社員、両方の視点から~
demaecan
1
910
FinOps × AIエージェントで実現する コストインシデントの自動調査
oasis1994liveforever
0
150
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
1.1k
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2.4k
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
130
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
140
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
150
Featured
See All Featured
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
130
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
330
Prompt Engineering for Job Search
mfonobong
0
340
Building AI with AI
inesmontani
PRO
1
1.1k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
The Spectacular Lies of Maps
axbom
PRO
1
810
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
280
WENDY [Excerpt]
tessaabrams
11
38k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
220
Transcript
期待しすぎずに取り組む 両面 TypeScript 株式会社一休 所澤 友大
2 両面 TypeScript って実際どうなの? 良いんだけど... 開発言語を統一するだけで フルスタックな開発ができるわけではない。
3 両面 TypeScript って実際どうなの? 1. 宿に特化した写真共有SNS 2. 飲食店の業務支援SaaS この二つのアプリケーション開発を振り返って、言語統一の利点や限界についてお話します。 私は直近2
年の間にふたつの両面 TypeScript なアプリケーションを開発してきました。
4 そもそもサーバーサイドを TypeScript で開発するのってどうなの? TypeScript はサーバー開発にも適した良い言語 1. モダンな言語機能 2. 静的型付け、柔軟で強力な型システム
3. 成熟したエコシステム ヒト・モノ・カネがふんだんに投入されている (特にWeb 開発の視点だと)Prisma や GraphQL 関連のライブラリの充実
宿に特化した写真共有SNS 『YADOLINK 』 5 新規事業(2022 年4 月 ~ 2023 年3
月) 少人数で開発 エンジニア2 名で5 ヶ月 10 人月くらいかけて初期開発 Next.js にべったり Next.js の Pages Router API Routes + Apollo Server + GraphQL Nexus シンプルなアプリケーション 基本的にはCRUD GraphQL の resolver 内にロジックをベタ書き
6 言語統一の恩恵を受けられた? YES ! フロントとサーバーのスイッチングコスト軽減 ビルドの設定、lint 、CI ・CD の設定、インフラなどの設定が一度で済んで楽 フルスタックな開発が実現できた
一人のエンジニアが一つの機能をまるっと担当できるため余計な調整コストが発生しない なだらかな学習曲線 もう一人エンジニアはサーバーサイド開発がほぼ未経験だったが途中から開発できるように
7 飲食店の業務支援SaaS 新規事業(2022 年 ~ 現在β ) 大規模なアプリケーション エンジニア8 名
100 人月ほどかけて開発 Turborepo を使った monorepo Next.js の Pages Router Fastify + Apollo Server + Pothos GraphQL 複雑なドメインロジックがある業務アプリ CQRS Query は resolver 内にロジックをベタ書き Mutation は関数型言語のエッセンスを取り入れたアーキテクチャ
8 言語統一の恩恵を受けられた? NO... 基本的にフロント・サーバーで分業体制 一部のフロントエンド・エンジニアが Query を触ることはある フロントエンド・エンジニアが Mutation に変更を入れることは結構難しい
フロント・サーバー間で共有しているパッケージはそこまで多くない
9 パッケージ一覧 ドメインロジックの共有はしない! . ├── date-time ├── eslint-config-custom ├── feature-flag-setting
├── jest-config ├── reszaiko-ui ├── ts-utils └── tsconfig ちょっとした日付操作や Utility Types を共有している程度
10 何が言語統一の恩恵の寡多を決定するのか? 答え: 言語以外の複雑さ
11 アプリケーションの複雑さとは… 言語の複雑さ 例: Haskell 難しい! フレームワークやミドルウェアの複雑さ 例: React の宣言的UI
、GraphQL アーキテクチャの複雑さ 例: DDD 、関数型のパラダイム ドメインの複雑さ 例: 在庫のモデリング
12 シンプルなアプリケーションを作っています! そんなときは 言語統一が効く 例えば、新規サービスのMVP や小さくてシンプルなアプリケーション 極限まで複雑さを抑えるなら… Next.js の Server
Component / Server Actions からDB 叩く選択肢もある
13 複雑なアプリケーションを作っています! そんなときは 言語統一にこだわりすぎない方がいいかも 言語を統一だけではフロント・サーバー間のスイッチング・コストを下げられない スイッチング・コストを下げたいなら シンプルなアーキテクチャの採用など言語以外の複雑さ軽減の取り組む必要がある フロントとサーバーで型を共有したいなら… GraphQL などほかの選択肢もある
TypeScript 以外の選択肢を捨てるのはもったいない! もしSaaS を作り直すなら… Rust を検討します 速度、型システム、関数型パラダイムのサポートが⭕️
14 まとめ TypeScript はサーバーの実装にも向いた良い言語! 開発言語を統一すると言語をスイッチするコストを削減できる ただし… 言語統一だけでフロントとサーバーの壁を取り払えるわけではない
15 エンジニア募集中! 一休ではよりよいサービスを届ける仲間を募集しています。