SlideShare a Scribd company logo
React+TypeScriptと格
闘して得た知見
執筆者:トビウオ
概要
•TypeScriptで書くのは楽しい!
•Reactは楽しいけど難しい!
•つまづきポイントをまとめよう!
TypeScript 編 ①
• Python と違い、「全部同じ値の配列」や「要素の値が連番にな
った配列」を簡単に作成する方法が無い
• 例えば Array.prototype.fill() と Array.prototype.map() を使えば作
成できる
• ただしパフォーマンスの問題があるので、forループで地道に作
成する方法で書くこともある
TypeScript 編 ②
• Python と違い、要素数が同じ配列A・Bを束ねる zip 関数
が無い
• こちらも例えば Array.prototype.map() を使えば作成でき
る。ただしパフォーマンスの問題が(以下略
TypeScript 編 ③
• tsconfig.json の、compilerOptions.baseUrl の設定がめちゃ重要
• create-react-app で作ると、基本的に src ディレクトリ以下しか
触らないので、「"baseUrl": “src"」と書いておくとインポートの
記述が少し簡単になる
root
┣src
┃┣aaa.ts
┃┗bbb.ts
┗tsconfig.json
ディレクトリ階層の例 bbb.tsでaaa.tsからimportする際の記述
React 編 ①
• Component 自体は簡単に書けるが、 State 管理の方法を
身につけるのが難しい
• ベストプラクティスも時期によって変化するが、今のと
ころは React Hooks を用いて Redux 風に書くのがいいと
思われる
• 次ページ以降、 Custom Hooks と Context API と
useContext を利用した記述法を紹介する
React 編 ②
• State の型を interface で定義する。型内部では外部に公開
する状態、および状態変更のためのディスパッチ関数を定
義しておく
React 編 ③
• 定義した State 型を返す Custom Hooks を定義する
• ルートとなる Component に組み込む
React 編 ④
• 下層の Component では、 useContext() を使って欲しい
状態および dispatch を簡単に利用できる
• 次ページ以降は、State管理以外の小ネタに
ついて書きます
React 編 ⑤
• React Hooks における useState() は、 Promise 型ではな
いが非同期処理である
• つまり、例えば次のように書いた場合、変数aaaのセット
・変数bbbのセット・func()の実行の順番は確定しておら
ず、その順番も保証されない
React 編 ⑥
Q. 実行順を保証するにはどうするんだってばよ!?
A. useEffectを使います。強引に Promise 化してもOK
useEffectによる順番保証 Promise化して順番保証
React 編 ⑦
• useEffect の第一引数は EffectCallback 型。これはasync
functionではない
• つまり useEffect 内で await は
使えない。thenで繋げるか、内
部でasync functionを定義して実
行するしかない
Ad

More Related Content

What's hot (20)

[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬
KyeongWon Koo
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
 
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
増田 亨
 
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
naoki koyama
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
土岐 孝平
 
Google Cloud のネットワークとロードバランサ
Google Cloud のネットワークとロードバランサGoogle Cloud のネットワークとロードバランサ
Google Cloud のネットワークとロードバランサ
Google Cloud Platform - Japan
 
Pivotal Greenplumで実現する次世代データ分析基盤のご紹介
Pivotal Greenplumで実現する次世代データ分析基盤のご紹介Pivotal Greenplumで実現する次世代データ分析基盤のご紹介
Pivotal Greenplumで実現する次世代データ分析基盤のご紹介
Masayuki Matsushita
 
Angular - Chapter 1 - Introduction
 Angular - Chapter 1 - Introduction Angular - Chapter 1 - Introduction
Angular - Chapter 1 - Introduction
WebStackAcademy
 
Web開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor AppWeb開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor App
TomomitsuKusaba
 
WebAssembly Overview
WebAssembly OverviewWebAssembly Overview
WebAssembly Overview
Alexandr Skachkov
 
elixirを使ったゲームサーバ
elixirを使ったゲームサーバelixirを使ったゲームサーバ
elixirを使ったゲームサーバ
Hidetaka Kojo
 
Iocコンテナについて
IocコンテナについてIocコンテナについて
Iocコンテナについて
Akio Terayama
 
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
 
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovyJava開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
 
Oracle Advanced Analytics 概要
Oracle Advanced Analytics 概要Oracle Advanced Analytics 概要
Oracle Advanced Analytics 概要
オラクルエンジニア通信
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
Edureka!
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
Jakub Kubrynski
 
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬
KyeongWon Koo
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
 
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
増田 亨
 
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
naoki koyama
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
土岐 孝平
 
Google Cloud のネットワークとロードバランサ
Google Cloud のネットワークとロードバランサGoogle Cloud のネットワークとロードバランサ
Google Cloud のネットワークとロードバランサ
Google Cloud Platform - Japan
 
Pivotal Greenplumで実現する次世代データ分析基盤のご紹介
Pivotal Greenplumで実現する次世代データ分析基盤のご紹介Pivotal Greenplumで実現する次世代データ分析基盤のご紹介
Pivotal Greenplumで実現する次世代データ分析基盤のご紹介
Masayuki Matsushita
 
Angular - Chapter 1 - Introduction
 Angular - Chapter 1 - Introduction Angular - Chapter 1 - Introduction
Angular - Chapter 1 - Introduction
WebStackAcademy
 
Web開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor AppWeb開発者が始める .NET MAUI Blazor App
Web開発者が始める .NET MAUI Blazor App
TomomitsuKusaba
 
elixirを使ったゲームサーバ
elixirを使ったゲームサーバelixirを使ったゲームサーバ
elixirを使ったゲームサーバ
Hidetaka Kojo
 
Iocコンテナについて
IocコンテナについてIocコンテナについて
Iocコンテナについて
Akio Terayama
 
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
 
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovyJava開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
Edureka!
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
Jakub Kubrynski
 

Similar to React+TypeScriptと格闘して得た知見 (20)

とあるFlashの自動生成
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成
Akineko Shimizu
 
Unity + C#講座①
Unity + C#講座①Unity + C#講座①
Unity + C#講座①
Yu Yu
 
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
 
Python勉強会 2015-12-02
Python勉強会 2015-12-02Python勉強会 2015-12-02
Python勉強会 2015-12-02
WoodPecker (Shizuoka Univ)
 
第1回python勉強会
第1回python勉強会第1回python勉強会
第1回python勉強会
Yoshio Shimomura
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
 
CSRを自動生成する!
CSRを自動生成する!CSRを自動生成する!
CSRを自動生成する!
Taichi Ishitani
 
第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016
kyoto university
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
啓 小笠原
 
クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介
しくみ製作所
 
リテラル文字列型までの道
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道
Satoshi Sato
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テスト
Ken Morishita
 
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming ParadigmCookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
Minero Aoki
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
CHY72
 
Pythonの非同期処理を始める前に
Pythonの非同期処理を始める前にPythonの非同期処理を始める前に
Pythonの非同期処理を始める前に
koralle
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform
信之 岩永
 
TypeScriptをオススメする理由
TypeScriptをオススメする理由TypeScriptをオススメする理由
TypeScriptをオススメする理由
Yusuke Naka
 
とあるFlashの自動生成
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成
Akineko Shimizu
 
Unity + C#講座①
Unity + C#講座①Unity + C#講座①
Unity + C#講座①
Yu Yu
 
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
 
CSRを自動生成する!
CSRを自動生成する!CSRを自動生成する!
CSRを自動生成する!
Taichi Ishitani
 
第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016
kyoto university
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
啓 小笠原
 
クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介
しくみ製作所
 
リテラル文字列型までの道
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道
Satoshi Sato
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テスト
Ken Morishita
 
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming ParadigmCookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
Minero Aoki
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
CHY72
 
Pythonの非同期処理を始める前に
Pythonの非同期処理を始める前にPythonの非同期処理を始める前に
Pythonの非同期処理を始める前に
koralle
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform
信之 岩永
 
TypeScriptをオススメする理由
TypeScriptをオススメする理由TypeScriptをオススメする理由
TypeScriptをオススメする理由
Yusuke Naka
 
Ad

More from iPride Co., Ltd. (20)

サイクリングはいいぞ .
サイクリングはいいぞ                            .サイクリングはいいぞ                            .
サイクリングはいいぞ .
iPride Co., Ltd.
 
DDEVでらくらくDrupalローカル環境構築。2025/2/28の勉強会で発表されたものです。
DDEVでらくらくDrupalローカル環境構築。2025/2/28の勉強会で発表されたものです。DDEVでらくらくDrupalローカル環境構築。2025/2/28の勉強会で発表されたものです。
DDEVでらくらくDrupalローカル環境構築。2025/2/28の勉強会で発表されたものです。
iPride Co., Ltd.
 
DeepSeekの紹介( 2025/2/21の勉強会で発表されたものになります)
DeepSeekの紹介( 2025/2/21の勉強会で発表されたものになります)DeepSeekの紹介( 2025/2/21の勉強会で発表されたものになります)
DeepSeekの紹介( 2025/2/21の勉強会で発表されたものになります)
iPride Co., Ltd.
 
Azure で RDB を作成してみた (2024/12/20 の勉強会で発表)
Azure で RDB を作成してみた (2024/12/20 の勉強会で発表)Azure で RDB を作成してみた (2024/12/20 の勉強会で発表)
Azure で RDB を作成してみた (2024/12/20 の勉強会で発表)
iPride Co., Ltd.
 
vi / vim の基本コマンドについて(2024/12/20 の勉強会で発表)
vi / vim の基本コマンドについて(2024/12/20 の勉強会で発表)vi / vim の基本コマンドについて(2024/12/20 の勉強会で発表)
vi / vim の基本コマンドについて(2024/12/20 の勉強会で発表)
iPride Co., Ltd.
 
WebAuthnについてのざっくり説明[2024/10/25]の勉強会で発表されたものです。
WebAuthnについてのざっくり説明[2024/10/25]の勉強会で発表されたものです。WebAuthnについてのざっくり説明[2024/10/25]の勉強会で発表されたものです。
WebAuthnについてのざっくり説明[2024/10/25]の勉強会で発表されたものです。
iPride Co., Ltd.
 
AWSの勉強、AWS S3編。2024/10/11の勉強会で発表されたものです。
AWSの勉強、AWS S3編。2024/10/11の勉強会で発表されたものです。AWSの勉強、AWS S3編。2024/10/11の勉強会で発表されたものです。
AWSの勉強、AWS S3編。2024/10/11の勉強会で発表されたものです。
iPride Co., Ltd.
 
AWSの勉強リージョン編  2024/09/27の勉強会で発表されたものです。
AWSの勉強リージョン編  2024/09/27の勉強会で発表されたものです。AWSの勉強リージョン編  2024/09/27の勉強会で発表されたものです。
AWSの勉強リージョン編  2024/09/27の勉強会で発表されたものです。
iPride Co., Ltd.
 
AWSサポートに学ぶ、エラーなどの報告をする際のコツ(2024/09/13 勉強会)
AWSサポートに学ぶ、エラーなどの報告をする際のコツ(2024/09/13 勉強会)AWSサポートに学ぶ、エラーなどの報告をする際のコツ(2024/09/13 勉強会)
AWSサポートに学ぶ、エラーなどの報告をする際のコツ(2024/09/13 勉強会)
iPride Co., Ltd.
 
最近のDrupalバージョンアップで起きた問題まとめ(2024/09/13 勉強会)
最近のDrupalバージョンアップで起きた問題まとめ(2024/09/13 勉強会)最近のDrupalバージョンアップで起きた問題まとめ(2024/09/13 勉強会)
最近のDrupalバージョンアップで起きた問題まとめ(2024/09/13 勉強会)
iPride Co., Ltd.
 
AWSとIPv6 2時間目  2024/09/06の勉強会で発表されたものです。
AWSとIPv6 2時間目  2024/09/06の勉強会で発表されたものです。AWSとIPv6 2時間目  2024/09/06の勉強会で発表されたものです。
AWSとIPv6 2時間目  2024/09/06の勉強会で発表されたものです。
iPride Co., Ltd.
 
AWSとIPv6       2024/08/30の勉強会で発表されたものです。
AWSとIPv6       2024/08/30の勉強会で発表されたものです。AWSとIPv6       2024/08/30の勉強会で発表されたものです。
AWSとIPv6       2024/08/30の勉強会で発表されたものです。
iPride Co., Ltd.
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
iPride Co., Ltd.
 
Drupal Feedsモジュールについての豆知識 2024/06/21の勉強会で発表されたものです。
Drupal Feedsモジュールについての豆知識 2024/06/21の勉強会で発表されたものです。Drupal Feedsモジュールについての豆知識 2024/06/21の勉強会で発表されたものです。
Drupal Feedsモジュールについての豆知識 2024/06/21の勉強会で発表されたものです。
iPride Co., Ltd.
 
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
iPride Co., Ltd.
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
 
サイクリングはいいぞ .
サイクリングはいいぞ                            .サイクリングはいいぞ                            .
サイクリングはいいぞ .
iPride Co., Ltd.
 
DDEVでらくらくDrupalローカル環境構築。2025/2/28の勉強会で発表されたものです。
DDEVでらくらくDrupalローカル環境構築。2025/2/28の勉強会で発表されたものです。DDEVでらくらくDrupalローカル環境構築。2025/2/28の勉強会で発表されたものです。
DDEVでらくらくDrupalローカル環境構築。2025/2/28の勉強会で発表されたものです。
iPride Co., Ltd.
 
DeepSeekの紹介( 2025/2/21の勉強会で発表されたものになります)
DeepSeekの紹介( 2025/2/21の勉強会で発表されたものになります)DeepSeekの紹介( 2025/2/21の勉強会で発表されたものになります)
DeepSeekの紹介( 2025/2/21の勉強会で発表されたものになります)
iPride Co., Ltd.
 
Azure で RDB を作成してみた (2024/12/20 の勉強会で発表)
Azure で RDB を作成してみた (2024/12/20 の勉強会で発表)Azure で RDB を作成してみた (2024/12/20 の勉強会で発表)
Azure で RDB を作成してみた (2024/12/20 の勉強会で発表)
iPride Co., Ltd.
 
vi / vim の基本コマンドについて(2024/12/20 の勉強会で発表)
vi / vim の基本コマンドについて(2024/12/20 の勉強会で発表)vi / vim の基本コマンドについて(2024/12/20 の勉強会で発表)
vi / vim の基本コマンドについて(2024/12/20 の勉強会で発表)
iPride Co., Ltd.
 
WebAuthnについてのざっくり説明[2024/10/25]の勉強会で発表されたものです。
WebAuthnについてのざっくり説明[2024/10/25]の勉強会で発表されたものです。WebAuthnについてのざっくり説明[2024/10/25]の勉強会で発表されたものです。
WebAuthnについてのざっくり説明[2024/10/25]の勉強会で発表されたものです。
iPride Co., Ltd.
 
AWSの勉強、AWS S3編。2024/10/11の勉強会で発表されたものです。
AWSの勉強、AWS S3編。2024/10/11の勉強会で発表されたものです。AWSの勉強、AWS S3編。2024/10/11の勉強会で発表されたものです。
AWSの勉強、AWS S3編。2024/10/11の勉強会で発表されたものです。
iPride Co., Ltd.
 
AWSの勉強リージョン編  2024/09/27の勉強会で発表されたものです。
AWSの勉強リージョン編  2024/09/27の勉強会で発表されたものです。AWSの勉強リージョン編  2024/09/27の勉強会で発表されたものです。
AWSの勉強リージョン編  2024/09/27の勉強会で発表されたものです。
iPride Co., Ltd.
 
AWSサポートに学ぶ、エラーなどの報告をする際のコツ(2024/09/13 勉強会)
AWSサポートに学ぶ、エラーなどの報告をする際のコツ(2024/09/13 勉強会)AWSサポートに学ぶ、エラーなどの報告をする際のコツ(2024/09/13 勉強会)
AWSサポートに学ぶ、エラーなどの報告をする際のコツ(2024/09/13 勉強会)
iPride Co., Ltd.
 
最近のDrupalバージョンアップで起きた問題まとめ(2024/09/13 勉強会)
最近のDrupalバージョンアップで起きた問題まとめ(2024/09/13 勉強会)最近のDrupalバージョンアップで起きた問題まとめ(2024/09/13 勉強会)
最近のDrupalバージョンアップで起きた問題まとめ(2024/09/13 勉強会)
iPride Co., Ltd.
 
AWSとIPv6 2時間目  2024/09/06の勉強会で発表されたものです。
AWSとIPv6 2時間目  2024/09/06の勉強会で発表されたものです。AWSとIPv6 2時間目  2024/09/06の勉強会で発表されたものです。
AWSとIPv6 2時間目  2024/09/06の勉強会で発表されたものです。
iPride Co., Ltd.
 
AWSとIPv6       2024/08/30の勉強会で発表されたものです。
AWSとIPv6       2024/08/30の勉強会で発表されたものです。AWSとIPv6       2024/08/30の勉強会で発表されたものです。
AWSとIPv6       2024/08/30の勉強会で発表されたものです。
iPride Co., Ltd.
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
iPride Co., Ltd.
 
Drupal Feedsモジュールについての豆知識 2024/06/21の勉強会で発表されたものです。
Drupal Feedsモジュールについての豆知識 2024/06/21の勉強会で発表されたものです。Drupal Feedsモジュールについての豆知識 2024/06/21の勉強会で発表されたものです。
Drupal Feedsモジュールについての豆知識 2024/06/21の勉強会で発表されたものです。
iPride Co., Ltd.
 
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
iPride Co., Ltd.
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
 
Ad

React+TypeScriptと格闘して得た知見

  • 3. TypeScript 編 ① • Python と違い、「全部同じ値の配列」や「要素の値が連番にな った配列」を簡単に作成する方法が無い • 例えば Array.prototype.fill() と Array.prototype.map() を使えば作 成できる • ただしパフォーマンスの問題があるので、forループで地道に作 成する方法で書くこともある
  • 4. TypeScript 編 ② • Python と違い、要素数が同じ配列A・Bを束ねる zip 関数 が無い • こちらも例えば Array.prototype.map() を使えば作成でき る。ただしパフォーマンスの問題が(以下略
  • 5. TypeScript 編 ③ • tsconfig.json の、compilerOptions.baseUrl の設定がめちゃ重要 • create-react-app で作ると、基本的に src ディレクトリ以下しか 触らないので、「"baseUrl": “src"」と書いておくとインポートの 記述が少し簡単になる root ┣src ┃┣aaa.ts ┃┗bbb.ts ┗tsconfig.json ディレクトリ階層の例 bbb.tsでaaa.tsからimportする際の記述
  • 6. React 編 ① • Component 自体は簡単に書けるが、 State 管理の方法を 身につけるのが難しい • ベストプラクティスも時期によって変化するが、今のと ころは React Hooks を用いて Redux 風に書くのがいいと 思われる • 次ページ以降、 Custom Hooks と Context API と useContext を利用した記述法を紹介する
  • 7. React 編 ② • State の型を interface で定義する。型内部では外部に公開 する状態、および状態変更のためのディスパッチ関数を定 義しておく
  • 8. React 編 ③ • 定義した State 型を返す Custom Hooks を定義する • ルートとなる Component に組み込む
  • 9. React 編 ④ • 下層の Component では、 useContext() を使って欲しい 状態および dispatch を簡単に利用できる • 次ページ以降は、State管理以外の小ネタに ついて書きます
  • 10. React 編 ⑤ • React Hooks における useState() は、 Promise 型ではな いが非同期処理である • つまり、例えば次のように書いた場合、変数aaaのセット ・変数bbbのセット・func()の実行の順番は確定しておら ず、その順番も保証されない
  • 11. React 編 ⑥ Q. 実行順を保証するにはどうするんだってばよ!? A. useEffectを使います。強引に Promise 化してもOK useEffectによる順番保証 Promise化して順番保証
  • 12. React 編 ⑦ • useEffect の第一引数は EffectCallback 型。これはasync functionではない • つまり useEffect 内で await は 使えない。thenで繋げるか、内 部でasync functionを定義して実 行するしかない