TSKaigi2024
現地参加メモです
2024/5/11
タイムテーブル
Keynote What's New in TypeScript
Microsoft / TypeScript Principal Product Manager
VS Codeでデモしながら発表するスタイル
JSDocで型を記述するのいいよね
RegExpの構文チェック
正規表現は難しいからね
Type Imports in JSDoc
@import
NoInfer
filter関数での型推論
"Performace and Scaling"
Project References
使ったことない
14:00 TypeScriptでもLLMアプリケーション開発!LangChain.js入門 (track 2)
うおー 見逃した! 
スライド読む
LangChain.js
他のライブラリは?
LlamaIndex.TS、ollama-js、LangGraph.js、Vercel AI SDK、PromptLayer
ML researcherとFullstack engineerを繋ぐ「AIエンジニア」の誕生の提唱、興味深い
TypeScriptでLLMアプリを開発する動きが活発するかも?とのこと
Denoのsandboxで安全に実行できるしいい方向性かもしれない
14:40 Type-safety in Angular (track 3)
lacolacoさん
今年こそAngular入門したい 
Bard(Gemini)のWebアプリがAngluarで実装されているとどこかで読んでからなおさら気になっている
ひとまずGUIコピしてみるか
Angular Basics
Component
Selector: HTMLで表現するとどうなるか? タグ名と考えておけばいい
Template
Style
Class
Bootstrapping
<app-root>
を宣言したHTMLを用意する bootstrapApplication(App)
Application
Component tree
@Componentの宣言でimportsできる
Signals
変更を購読できる。イベントをlistenできる。
派生した値を作れる
computed
メモ化されている
カウンタのデモが分かりやすい
Building Strictly-Typed Angular Application
ngtsc: Template Type-Checking Engine
TemplateとClassをngtscに通して、TCBを生成する
Type-check Block (TCB)
16:00 Denoで作る快適な “as Code” プラットフォーム (track 3)
Shisho Cloud
セキュリティSaaS
クラウドの設定値検査ルール
Policy as a Code
カスタマイズ、自作可能
検査の透明性と再現性の担保
自動セキュリティ検査の「アラート疲れ」
当然ローカルルールは理解してもらえない
public-
で始まるBucketは公開状態で問題ないのだけども?など プロダクトごとに自由に個別最適化してルールを定義できる
真に対処すべきものが埋もれていく
どんな情報を検査kするか
as GraphQL query
どのように検査するか
as TypeScript code
ケースの考慮漏れを型検査で気付ける
ポリシー記述言語Rego
というものもあるけれど
普段使い慣れているTSで書けると嬉しいよね
便利な型推論と型検査
ネストしたオブジェクトの型定義が見やすい
vs Golang
nullハンドリング
信頼できないJSを実行したい
オーバーヘッド小さく実行したい
外部サービスから情報を取得しない。あくまで情報加工にとどめる。
DenoベースのRust製サーバー
deno_fsとかは除去している
Deno CLIを入れるだけでいい
Rustライブラリを使って実装できる
でかいオブジェクト扱いがちなので無駄なメモリコピーを避けたい
他のランタイムは?
workerd (Cloudflare Workers)
LLRT
WinterJS
deno runコマンドをそのまま使うわけではない
Opsのほとんどを外す
ファイルアクセスやfetchをやらせない
module loaderはメモリ上のモジュール郡のみからロード
bundler自作
あえて単一JSファイルに纏めない
パスとコードを記述したYAMLを構築する
GraphQL → TS型定義生成器
Rust向けの型定義生成器graphql_clientをforkしてTS向けにする
感想 
Pimento Cloudの開発に応用できそう
17:20 LT: Documetation testsの恩恵 (track 2)
ssssotaさん
ソースコードのコメントにソースコード
Rustの !assert(...) がまさにこれ
jsdocのコメント内にassert関数
ソースコードのすぐそばにテストコードを記述できる
これはいいよね。Rust書いていても思った 
ドキュメントに記載したコードを実行して動作を保証できる
関数利用時にIDEを介して「動作保証されたサンプルを閲覧できる」
動かないサンプルコードとの決別
UIテストなど、向かない分野ももちろんある
ドキュメントテストをもっとカジュアルに書こう!
"生きているドキュメントとテストを書こう"
k-ichirofさん
Full TSとは: サーバーとクライアントをともにTSで書く世界線
結論: コンテキストによる!
「分業しない」ことてエンジニアとしての幅が広がる
感想: ScrapboxもFull TS(JS)なので、Wikiの記法のparserを共用できて嬉しかったりする 
Yuku Kotaniさん
型安全+コードジェネレータ=Prisma
スポンサーブース