両面どころかインフラもTSでできるよ ~ 全方位TypeScriptによるプロダクト開発 ~
by
Tatasuro Hisamori
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 !