Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20240508_TypeScriptLT資料

ebijun1007
May 12, 2024
39

 20240508_TypeScriptLT資料

以下のイベント時に使用したスライドです
https://kepple.connpass.com/event/315546/

ebijun1007

May 12, 2024
Tweet

Transcript

  1. 蝦名 潤 Jun Ebina Tech Lead 青森出身。公立はこだて未来大学にてコンピュータサイエンスを選考 在学時には仮想通貨やブロックチェーン技術を独学 卒業後、不動産Techベンチャーにエンジニア1期生として入社 コアメンバーとして、フロントエンド・バックエンド・インフラと境目なくWebサー

    ビス開発に従事 2022年、X Mileに1人目のエンジニアとしてジョインし、開発基盤から組織構 築までリード Rails書いたりPython書いたり技術的には何でも屋状態 最近の関心はTypeScript、エッジコンピューティング、SQLiteなど X: @ebijun1007
  2. 技術スタック Digital X Mileではプロダクト開発・環境に 対して、積極的に投資を行っており、 自社サービスについては開発・ Webマーケティング・セールスまでを 全て自社でシームレスに 業務構築しております。 また、事業部・コーポレート部署に

    ついてはバックオフィスSaaSを多数導入 することで、事業と組織の生産性を高め、 社員がコア業務に集中できる環境を、 創業期より整備してまいりました。 Copyright © X Mile All Rights Reserved. 今日話す部分
  3. 現状のgoodポイント • 関心毎の凝集度が高い ◦ アプリケーションロジックはNext.js、ビジネスロジックや社内固有の事情に 基づく仕様はAWS CDKに閉じ込める ▪ UI/UXはクライアントサイド、ロジックはサーバサイドなど Next.js内でも分離しや

    すい ◦ 引数や返り値が明確で他モジュールがブラックボックスでもコードを書きや すく、スイッチングコストが低い ▪ サーバーサイドの静的言語では当たり前だが、フロントまでカバーできるのは TypeScriptならでは
  4. 現状のbadポイント • 境界を超えて追従出来ない ◦ アプリケーション/インフラでリポジトリが分断されているため、お互いの実装 を認識出来ない ◦ API定義やデータ型が変わった時に同期を取る仕組みが無く、差分が生じ ていても検知出来ない ▪

    コードレビューで人力で解決している状態 💪💪💪 • どこにでもTypeScriptを書けてしまう ◦ この処理ってどっちのリポジトリに実装するのが良いんだっけ?が 多発 ◦ アーキテクト力が鍛えられる💪💪💪
  5. どこまでTypeScriptでやるべき? • アプリケーションはフルTypeScriptで快適な環境 ◦ Next.js, remix, honoなどフルスタックに書けるFWが整ってきた • CDKにこだわるメリットはあまり感じられない ◦

    なんでもTypeScriptで出来る ≠ なんでもTypeScriptでやる ◦ プロダクトの思想とマッチするクラウドベンダーに乗っかる ▪ 3大クラウドベンダー • 柔軟性は高いが手間もかかる。 CDK for Terraform などAWS以外の選択肢もアリ ▪ Vercel、CloudflareなどFWのコントリビュートをしているベンダー • ホスティングとFaaSでプロダクト要件満たせる場合に限り、開発体験が良くサポートも 手厚い。ストレージや DBサービスも出てきているので、今後の BaaSとしての仕上がり に期待 ▪ その他PaaS
  6. 諦めたキーワード達 • zodが素晴らしい。TypeScriptならではの開発体験 • Zodios vs GraphQL vs tRPC •

    React Native 別の機会に話すかテックブログに書く予定✍ (X Mile zenn で検索おなしゃす!)
  7. Zodiosとは? • zod + axios • ZodでAPIスキーマを定義して、型安全にaxiosを使えるライブ ラリ • 公式のexampleがわかりやすい

    ◦ https://github.com/ecyrbe/zodios • axios自体が良い意味で枯れてるのでとっつきやすい
  8. API定義は結局どれが良い? • zodiosとtRPCはフルTypeScriptが前提 ◦ 個人的にはtRPCの方が好み。他の選択肢に比べてコード 量が少なめ。バリデーションのライブラリも柔軟 ◦ zodiosも悪くはないがRestに強いこだわりが無い限り積極 的に選択しなくても良さそう •

    バックエンドが異なる言語の場合 ◦ プロダクトの性質に応じてよしなに ◦ スキーマはあった方が楽なのでOpenAPIかGraphQLどち らか入れた方が良いが、大概Rest APIで事足りる