Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
minify の効果を最大限に引き出す TypeScript コードを書く
Search
jsakamoto
November 21, 2024
Technology
420
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
minify の効果を最大限に引き出す TypeScript コードを書く
クラメソさっぽろIT勉強会 (仮) #6:パフォーマンスチューニング LT
jsakamoto
November 21, 2024
Transcript
25 slides
minify の効果を 最大限に引き出す TypeScript コードを書く クラメソさっぽろIT勉強会 (仮) #6:パフォーマンスチューニング LT
https://jsakamoto.github.io/Toolbelt.Blazor.SplitContainer/
オリジナルのコード
None
2,197 bytes
クラスからクロージャーへ
クラスからクロージャーへ • 課題 • 大量の “this.” • クラスのメンバーは minify されない
• ヒント • 変数名は minify される • 解決 • アロー関数を const 変数に格納してこれを参照すれば minify される • class は使わず、状態変数を参照するクロージャーで実装する
None
1,446 bytes
文字列定数と null の重複排除
文字列定数と null の重複排除 • 課題 • イベント名の文字列定数が addEventListener 用と removeEventListener
用 とで 2 回出現する • null 値も 3 回出現する • ヒント • 変数名は minify される • 解決 • 繰り返し出現する文字列定数や null 値を const 変数に格納してから、これを参 照することで、minify された変数名での参照で重複を排除
None
1,421 bytes
メソッドを bind して関数化
メソッドを bind して関数化 • 課題 • 同じ要素に対する addEventListener 呼び出しと removeEventListener
呼 び出しが多数発出現する • ヒント • アロー関数に格納してそれを参照すれば minify される • しかしこれは同じ要素に対するメソッド呼び出し • 解決 • bind を使ってオブジェクトに束縛済みの関数にしてしまってから、const 変数 に格納して使う
None
1,336 bytes
状態オブジェクトを辞書化
状態オブジェクトを辞書化 • 課題 • 状態オブジェクトのプロパティ名は minify されない • 解決 •
プロパティアクセスの代わりに辞書形式でのアクセスを使う • キーを const enum にすることで、TypeScript から JavaScript への トランスパイルにより、キーが数字の即値になる • TypeScript の言語機能を活用し型安全になるよう実装
None
1,212 bytes
改めて結果比較
2,197 1,446 1,421 1,336 1,212 オリジナル クラスからクロージャーへ 文字列定数の重複排除 メソッドをbind 状態オブジェクトの辞書化
bytes bytes bytes bytes bytes
まとめ • じゅうぶん保守可能、且つ、型安全な TypeScript コードでも、 minify をより効果的にすることができ たと思う • とはいえ、その
100 bytes を削ることに意味があるのか? • ”minify” という意図を知らないと「なぜこんなことしているの?」と思われるので、 チーム開発での採用は慎重に • しかし class ではなくクロージャーで実装するのは効果絶大 & さほど変な Hack じゃな いので、これはやっておいて良さそう
Learn, Practice, Share.
More Decks by jsakamoto
See All by jsakamoto
WebMCPを試してみました
jsakamoto
0
100
VRT in Blazor App Dev - .NET Lab 2026 Jul LT
jsakamoto
0
110
Google Chrome の開発者ツールで C# コードをデバッグできるって知ってました?
jsakamoto
1
130
useEffect は使いたくないのですが、ではどうしたらいいですか
jsakamoto
1
160
開発したプレゼン用ツールが15年経っても誰も使ってくれない話
jsakamoto
0
130
UI コンポーネントカタログに MCP サーバー機能を追加する試み、そしてその結果
jsakamoto
1
160
いいね が燃料! 「自分のOSS」で1億ダウンロード突破の開発者が語る OSS 開発のリアル
jsakamoto
0
300
JavaScript 以外の言語によるフロントエンド Web 開発が既に実用段階である話
jsakamoto
0
3k
ベクトル化を使った意味検索を、簡単にアプリケーションに搭載できる時代になっていた件。
jsakamoto
2
480
Other Decks in Technology
See All in Technology
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
4
1.8k
BALLAS Technology Deck
ballas_inc
0
490
Kiro Crew の Bot (続く役目を任せる窓口) | 目指せ Kiro マスター 12
inariku
PRO
2
360
公共システムAdventCalendar2026
toru_kubota
0
300
AI時代に求められる優秀なTechLeadの振る舞い
pospome
11
16k
Context Ontology Accelerator 入門 (業務データの意味を、AI エージェントに渡す)
inariku
PRO
3
620
Agent Harnessはどう作る?事例から学ぶAI Agentの設計思想
sergicalsix
0
260
業務でAWSをあまり使っていない私が、AWSへのモチベを保つ方法
smt7174
0
190
ぼくのClaude Codeの使い方
falken
PRO
1
140
Microsoft Entra Kerberos で実現するクラウド デバイス管理
tamaiyutaro
2
660
生成AI時代のIAMのマニアックな話
takuros
6
3k
evcc & Home Assistant
naltatis
0
570
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
520
Reality Check: Gamification 10 Years Later
codingconduct
0
2.4k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
620
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
520
Facilitating Awesome Meetings
lara
57
7.2k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.6k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
550
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k