SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
Title
yyyy/mm/dd
小規模チームで TypeScript を選んだ理由
2021/12/17 Harajuku.ts Meetup #1
Spectra, Inc.
Spectra, Inc.
自己紹介
2
● 山本 達也
● 株式会社Spectra 取締役CTO
● ERP ベンダー → 起業 → 売却したりいろいろ → 現在
Spectra, Inc.
Agenda
● どうして TypeScript を使うのか
● TypeScript の型システムを活用する
● Dependabot とうまく付き合う
3
Spectra, Inc.
前提
● 小規模チームの定義
○ 基本的に 1 人で Frontend ~ Backend & Infra まで
見なきゃいけないくらいのチーム(??)を想定しています
4
Spectra, Inc.
Spectra, Inc.
どうして TypeScript を使うのか
5
01
Spectra, Inc.
Spectra, Inc.
どうして TypeScript を使うのか
6
メンテナビリティ
コードの量
プロダクト誕生からの経過時間
コードベースは大きくなるほどメンテナビリティは下がる
メンテナビリティの下降スピードを緩やかにしたい
Spectra, Inc.
Spectra, Inc.
どうして TypeScript を使うのか
7
ランタイムエラーが
起こり得るコード
builder
ビルドエラー
エラーの早期発見ができる
※「型」で排除できないエラーパターンも
当然あるので注意
builder
ビルドOK
適切なコード
※変更箇所、内容によっては
最低限の品質担保が
できているため
自動マージを活用
`compilerOptions.strict = true` を使う!
Spectra, Inc.
メンテナビリティの維持が大事!
Spectra, Inc.
Spectra, Inc.
TypeScript の型システムを活用する
9
02
Spectra, Inc.
Spectra, Inc.
TypeScript の型システムを活用する
10
型の恩恵は受けたいけど、面倒なので型は書きたくない!
Spectra, Inc.
Spectra, Inc.
TypeScript の型システムを活用する
11
● TypeScript には型を便利に使う手段がいろいろ用意されている
○ Utility Types
■ ある型を別の型定義とすることができる
○ Indexed Access Types
■ ある型のあるフィールドの型を参照することができる
○ など
https://www.typescriptlang.org/docs/handbook/utility-types.html
https://www.typescriptlang.org/docs/handbook/2/indexed-access-types.html
Spectra, Inc.
Spectra, Inc.
TypeScript の型システムを活用する
12
● TypeScript Handbook の Type Manipulation の章は非常に有用なので
要チェック
● GraphQL Code Generator などのコード生成ソリューションとの
組み合わせが便利
○ e.g. 生成した types をもとに新たな型をつくる
https://www.typescriptlang.org/docs/handbook/2/types-from-types.html
Spectra, Inc.
Spectra, Inc.
Dependabot とうまく付き合う
13
03
Spectra, Inc.
Spectra, Inc.
Dependabot とうまく付き合う
14
依存ライブラリの改善やバグ修正を取り込みたいけど
面倒くさい!
Spectra, Inc.
Spectra, Inc.
Dependabot とうまく付き合う
15
● Dependabot を利用して依存ライブラリを最新に維持する
● Dependabot
○ GitHub が買収したライブラリアップグレードの
PR 自動生成ソリューション
https://github.com/dependabot/dependabot-core
https://docs.github.com/ja/code-security/supply-chain-security/keeping-your-dependencies-updated-a
utomatically/about-dependabot-version-updates
Spectra, Inc.
Spectra, Inc.
Dependabot とうまく付き合う
16
1. Dependabot がアップデート PR を作成する
GitHub Actions
2. GitHub Actions で検証 3. GitHub Actions でマージ
GitHub Actions と組み合わせて自動マージができる
とくに devDependencies は自動マージしやすい
https://docs.github.com/ja/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/auto
mating-dependabot-with-github-actions#enable-auto-merge-on-a-pull-request
Spectra, Inc.
Spectra, Inc.
Dependabot とうまく付き合う
17
● Linter や Tester
○ 前回の結果と同じ結果(= エラーなし)が得られる場合は
自動でマージして問題ない場合が多い
Spectra, Inc.
Spectra, Inc.
Dependabot とうまく付き合う
18
● Definitely Typed
○ > The repository for high quality TypeScript type definitions.
○ @types/hoge なやつ
○ 対応するライブラリ本体のマイナーバージョンまでと対応関係が
ある
■ = パッチバージョンの更新はライブラリ本体の更新とは
関係ないためビルドが通るなら更新してよい場合が多い
https://github.com/DefinitelyTyped/DefinitelyTyped
Spectra, Inc.
Spectra, Inc.
Dependabot とうまく付き合う
19
● Definitely Typed
○ 更新する意味ある??
■ YES
■ 型定義のバグ修正や、より使いやすい型への変更が
入ることがある
小規模チームで Type script と向き合う話

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

RPKI勉強会/RPKIユーザBoF
RPKI勉強会/RPKIユーザBoFRPKI勉強会/RPKIユーザBoF
RPKI勉強会/RPKIユーザBoF
 
Asp.netとbluemixで遊んでみたお話
Asp.netとbluemixで遊んでみたお話Asp.netとbluemixで遊んでみたお話
Asp.netとbluemixで遊んでみたお話
 
PHP Version Up と AWS への移行
PHP Version Up と AWS への移行PHP Version Up と AWS への移行
PHP Version Up と AWS への移行
 
YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略
 
YJTC18 D-5 日本のインターネットを守る!Yahoo! JAPANの不正利用対策 - Splunkによる不正ログイン検知
YJTC18 D-5 日本のインターネットを守る!Yahoo! JAPANの不正利用対策 - Splunkによる不正ログイン検知YJTC18 D-5 日本のインターネットを守る!Yahoo! JAPANの不正利用対策 - Splunkによる不正ログイン検知
YJTC18 D-5 日本のインターネットを守る!Yahoo! JAPANの不正利用対策 - Splunkによる不正ログイン検知
 
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介
 
DataEngConf NYC’18 セッションサマリー #2
DataEngConf NYC’18 セッションサマリー #2DataEngConf NYC’18 セッションサマリー #2
DataEngConf NYC’18 セッションサマリー #2
 
YJTC18 C-1 Kotlin導入の状況と展望
YJTC18 C-1 Kotlin導入の状況と展望YJTC18 C-1 Kotlin導入の状況と展望
YJTC18 C-1 Kotlin導入の状況と展望
 
セキュリティ教育とUX ~結ばれていた赤い糸~
セキュリティ教育とUX ~結ばれていた赤い糸~セキュリティ教育とUX ~結ばれていた赤い糸~
セキュリティ教育とUX ~結ばれていた赤い糸~
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
 
Bonfire API #1 APIのリトライ処理
Bonfire API #1 APIのリトライ処理Bonfire API #1 APIのリトライ処理
Bonfire API #1 APIのリトライ処理
 
グリーで行われている勉強会とその特徴 ✕ 勉強会を主催してみた話
グリーで行われている勉強会とその特徴 ✕ 勉強会を主催してみた話グリーで行われている勉強会とその特徴 ✕ 勉強会を主催してみた話
グリーで行われている勉強会とその特徴 ✕ 勉強会を主催してみた話
 
第一回☆GREE AI Programming ContestでTensorFlow
第一回☆GREE AI Programming ContestでTensorFlow第一回☆GREE AI Programming ContestでTensorFlow
第一回☆GREE AI Programming ContestでTensorFlow
 
kukai: 省エネ世界2位のディープラーニング・スパコン
kukai: 省エネ世界2位のディープラーニング・スパコンkukai: 省エネ世界2位のディープラーニング・スパコン
kukai: 省エネ世界2位のディープラーニング・スパコン
 
インターネットの維持 近況
インターネットの維持 近況インターネットの維持 近況
インターネットの維持 近況
 
生粋のRubyistがJavaを好きになった理由
生粋のRubyistがJavaを好きになった理由生粋のRubyistがJavaを好きになった理由
生粋のRubyistがJavaを好きになった理由
 
クラウドの積極的利活用による生産性向上と経営に寄与する仕組みづくり
クラウドの積極的利活用による生産性向上と経営に寄与する仕組みづくりクラウドの積極的利活用による生産性向上と経営に寄与する仕組みづくり
クラウドの積極的利活用による生産性向上と経営に寄与する仕組みづくり
 
Amazon Kinesis Streams デモ
Amazon Kinesis Streams デモAmazon Kinesis Streams デモ
Amazon Kinesis Streams デモ
 
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
 
OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向
 

Ähnlich wie 小規模チームで Type script と向き合う話

俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
taiju higashi
 

Ähnlich wie 小規模チームで Type script と向き合う話 (20)

良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント
良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント
良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント
 
SQiPシンポジウムアブストラクト作成のポイント
SQiPシンポジウムアブストラクト作成のポイントSQiPシンポジウムアブストラクト作成のポイント
SQiPシンポジウムアブストラクト作成のポイント
 
ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...
ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...
ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントと...
 
チームトポロジーから学び、 データプラットフォーム組織を考え直した話.pptx
チームトポロジーから学び、 データプラットフォーム組織を考え直した話.pptxチームトポロジーから学び、 データプラットフォーム組織を考え直した話.pptx
チームトポロジーから学び、 データプラットフォーム組織を考え直した話.pptx
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング
 
connpass特徴と開発の流れ
connpass特徴と開発の流れconnpass特徴と開発の流れ
connpass特徴と開発の流れ
 
「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
220203 sit2022 sap murata
220203 sit2022 sap murata220203 sit2022 sap murata
220203 sit2022 sap murata
 
Rancherを活用した開発・運用効率の改善への取り組み
Rancherを活用した開発・運用効率の改善への取り組みRancherを活用した開発・運用効率の改善への取り組み
Rancherを活用した開発・運用効率の改善への取り組み
 
20141203 tiberoセミナー講演資料
20141203 tiberoセミナー講演資料20141203 tiberoセミナー講演資料
20141203 tiberoセミナー講演資料
 
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座
 
TPS/リーンを使って強化するアジャイル/スクラム
TPS/リーンを使って強化するアジャイル/スクラムTPS/リーンを使って強化するアジャイル/スクラム
TPS/リーンを使って強化するアジャイル/スクラム
 
「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来
 
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
 

小規模チームで Type script と向き合う話

  • 2. Spectra, Inc. Spectra, Inc. 自己紹介 2 ● 山本 達也 ● 株式会社Spectra 取締役CTO ● ERP ベンダー → 起業 → 売却したりいろいろ → 現在
  • 3. Spectra, Inc. Agenda ● どうして TypeScript を使うのか ● TypeScript の型システムを活用する ● Dependabot とうまく付き合う 3
  • 4. Spectra, Inc. 前提 ● 小規模チームの定義 ○ 基本的に 1 人で Frontend ~ Backend & Infra まで 見なきゃいけないくらいのチーム(??)を想定しています 4
  • 5. Spectra, Inc. Spectra, Inc. どうして TypeScript を使うのか 5 01
  • 6. Spectra, Inc. Spectra, Inc. どうして TypeScript を使うのか 6 メンテナビリティ コードの量 プロダクト誕生からの経過時間 コードベースは大きくなるほどメンテナビリティは下がる メンテナビリティの下降スピードを緩やかにしたい
  • 7. Spectra, Inc. Spectra, Inc. どうして TypeScript を使うのか 7 ランタイムエラーが 起こり得るコード builder ビルドエラー エラーの早期発見ができる ※「型」で排除できないエラーパターンも 当然あるので注意 builder ビルドOK 適切なコード ※変更箇所、内容によっては 最低限の品質担保が できているため 自動マージを活用 `compilerOptions.strict = true` を使う!
  • 9. Spectra, Inc. Spectra, Inc. TypeScript の型システムを活用する 9 02
  • 10. Spectra, Inc. Spectra, Inc. TypeScript の型システムを活用する 10 型の恩恵は受けたいけど、面倒なので型は書きたくない!
  • 11. Spectra, Inc. Spectra, Inc. TypeScript の型システムを活用する 11 ● TypeScript には型を便利に使う手段がいろいろ用意されている ○ Utility Types ■ ある型を別の型定義とすることができる ○ Indexed Access Types ■ ある型のあるフィールドの型を参照することができる ○ など https://www.typescriptlang.org/docs/handbook/utility-types.html https://www.typescriptlang.org/docs/handbook/2/indexed-access-types.html
  • 12. Spectra, Inc. Spectra, Inc. TypeScript の型システムを活用する 12 ● TypeScript Handbook の Type Manipulation の章は非常に有用なので 要チェック ● GraphQL Code Generator などのコード生成ソリューションとの 組み合わせが便利 ○ e.g. 生成した types をもとに新たな型をつくる https://www.typescriptlang.org/docs/handbook/2/types-from-types.html
  • 13. Spectra, Inc. Spectra, Inc. Dependabot とうまく付き合う 13 03
  • 14. Spectra, Inc. Spectra, Inc. Dependabot とうまく付き合う 14 依存ライブラリの改善やバグ修正を取り込みたいけど 面倒くさい!
  • 15. Spectra, Inc. Spectra, Inc. Dependabot とうまく付き合う 15 ● Dependabot を利用して依存ライブラリを最新に維持する ● Dependabot ○ GitHub が買収したライブラリアップグレードの PR 自動生成ソリューション https://github.com/dependabot/dependabot-core https://docs.github.com/ja/code-security/supply-chain-security/keeping-your-dependencies-updated-a utomatically/about-dependabot-version-updates
  • 16. Spectra, Inc. Spectra, Inc. Dependabot とうまく付き合う 16 1. Dependabot がアップデート PR を作成する GitHub Actions 2. GitHub Actions で検証 3. GitHub Actions でマージ GitHub Actions と組み合わせて自動マージができる とくに devDependencies は自動マージしやすい https://docs.github.com/ja/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/auto mating-dependabot-with-github-actions#enable-auto-merge-on-a-pull-request
  • 17. Spectra, Inc. Spectra, Inc. Dependabot とうまく付き合う 17 ● Linter や Tester ○ 前回の結果と同じ結果(= エラーなし)が得られる場合は 自動でマージして問題ない場合が多い
  • 18. Spectra, Inc. Spectra, Inc. Dependabot とうまく付き合う 18 ● Definitely Typed ○ > The repository for high quality TypeScript type definitions. ○ @types/hoge なやつ ○ 対応するライブラリ本体のマイナーバージョンまでと対応関係が ある ■ = パッチバージョンの更新はライブラリ本体の更新とは 関係ないためビルドが通るなら更新してよい場合が多い https://github.com/DefinitelyTyped/DefinitelyTyped
  • 19. Spectra, Inc. Spectra, Inc. Dependabot とうまく付き合う 19 ● Definitely Typed ○ 更新する意味ある?? ■ YES ■ 型定義のバグ修正や、より使いやすい型への変更が 入ることがある