両面どころかインフラもTSでできるよ ~ 全方位TypeScriptによるプロダクト開発 ~
by
Tatasuro Hisamori
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
両面どころかインフラもTSでできるよ ~ 全方位TypeScriptによるプロダクト開発 ~
Slide 2
Slide 2 text
全方位TypeScript?
Slide 3
Slide 3 text
「全方位TypeScript」とは? ● フロントエンドだけでなくバックエンド、インフラも TypeScriptで統一して開発すること ● 統一すると何がうれしいの? ○ 型の共有 ○ モノレポとの相性 ○ 開発者オンボーディングの速さ、etc… ● 何より重要なこと ○ 開発速度を高める ○ 開発品質を高める ○ → 顧客提供価値を高める
Slide 4
Slide 4 text
我々の開発者オンボーディング
Slide 5
Slide 5 text
ステップは3つ 1. GitHub OrgとPlanetScaleに招待 2. Codespaceを起動して立ち上げコマンド打つ 3. 開発開始! MacとかWindowsとかそういうのも気にしない。 ブラウザさえあれば開発に入れる。 ※開発者体験的にはローカルのVSCode使うのがいい と思うけど
Slide 6
Slide 6 text
アプリケーション開発
Slide 7
Slide 7 text
フロントエンド開発 Vite + React + Ant Design を採用しています。 Viteはesbuildを用いた開発サーバでビルドが高速なので開発 者体験が良く、Pluginも充実してきているため採用 Reactはもう特に議論の必要はないレベルでフロントエンドの デファクトだと思います Ant DesignとChakraで議論になりましたが、B2Bの管理画面 向けとして使えるコンポーネントがChakraよりも多くあるため 採用
Slide 8
Slide 8 text
バックエンド開発 Hono + Prisma を主なコンポーネントとして採用 HonoはWAFとしてシンプルに振舞うため、乗るアプリのコン ポーネント設計と切り離すことができ、高速であるため採用 Prismaはprisma.schemaの定義ができていればTypeとテーブ ル双方の定義が出来上がるなど、データベースを使った開 発の生産性を高めることができ、ORMとしても一定のシェア を持っていることから採用 アプリケーション構成としてはレイヤードアーキテクチャに 倣った構成で依存の方向をシンプルに
Slide 9
Slide 9 text
型などの共有 pnpm workspacesを利用 プロジェクトルートにpnpm-workspace.yamlを配置する とサブパッケージをimportできる 我々の場合は packages/* に api や schema を配置 し、それぞれのアプリから呼べるような構成を採用
Slide 10
Slide 10 text
インフラもTSでIaCする
Slide 11
Slide 11 text
TSでIaCするためのPulumi Pulumiとは、IaCするためのOSSツールで、AWS, GCP, Azure問わずリソース作成・削除、デプロイ など管理を行うことができる。 TypeScript以外にもPython, Go, C#などでもIaCで きる。
Slide 12
Slide 12 text
おまけ:PlanetScaleの効用
Slide 13
Slide 13 text
PlanetScale? ● ソースコード同様「ブランチ」という概念を データベースに持ち込んだサービス。 ● VitessというMySQLをクラスタ化して運用す るためのミドルウェアインフラをクラウド サービスにしたもの。 ● これを使うと、データベースも「プルリク」運 用できるようになる!
Slide 14
Slide 14 text
まとめ:なぜこうしているのか
Slide 15
Slide 15 text
なぜこうしているのか エンジニアリング組織論への招待に ● 不確実性への向き合い ● 役割を分けない ● 経験を知識に変える ● 価値の流れを最適化する というような話がありますが、我々も不確実 なことをやっているので「高速に価値を届け られる開発体制」が必要だから
Slide 16
Slide 16 text
結論:全方位TypeScript開発の実践と効果 ● フルスタックな開発 ○ フロントエンド、バックエンド、インフラについて特に役割を設けていない→ 分業しない ○ 得意なことが違う人同士でのコラボレーションもやりやすい ● IaC ○ Pulumiを用いて、IaCもTSを用いてできるようにした結果、ちょっとしたメンテも開発者がやるように ● モノレポ ○ 1つのリポジトリを見ればすべてのアプリケーションが入っている状態 ○ GitHub Codespace と相性良好で超高速オンボーディングが実現 ● CI/CD ○ GitHub Actionsでリリースパイプラインを整備しており、仕事の開始から 開発作業、リリースまでGitHub上だけで完結
Slide 17
Slide 17 text
耳寄り情報 toggle holdingsではエンジニア向けの Handbookを作って公開しています 今日話した内容も記載がありますので、是 非ご覧ください https://engineer.toggle.co.jp/
Slide 18
Slide 18 text
エンジニア積極採用中です!! リサーチエンジニア Pythonを中心技術として 「データ収集・加工・分析・利用基盤 」を作る 「建築士がやる高度な計算ロジック 」を実装する ひたすらコードとデータに向き合いたい人 ソフトウェアエンジニア TypeScriptを中心技術として 「ユーザーと直接対話して」提供価値を発見する 「業界の仕事を変革するサービス 」を開発する フルスタックエンジニアを目指す人
Slide 19
Slide 19 text
こちらからどうぞ https://x.gd/4TDao https://hrmos.co/pages/toggle/jobs/0000007
Slide 20
Slide 20 text
Thank you !