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

TypeScript × Paper.js 型安全で実現する 2Dグラフィックアプリ開発

Tsubasa Miyazaki
February 05, 2025
200

TypeScript × Paper.js 型安全で実現する 2Dグラフィックアプリ開発

このプレゼンテーションでは、TypeScript と Paper.js を組み合わせて、型安全性を保ちながら 2D グラフィックアプリケーションを開発した事例を紹介します。プロダクトの概要、必要な機能、実際の開発内容、そして Paper.js を採用した理由を解説し、特徴、型安全についてまとめました。
Paper.js の型定義を活用することで、API の誤用を防止し、コードの可読性や保守性を大幅に向上させました。

Tsubasa Miyazaki

February 05, 2025
Tweet

Transcript

  1. 3
 © toggle holdings inc. アジェンダ ❖ プロダクト紹介 ❖ どんな機能が必要だったのか

    ❖ 実際に Paper.js を用いて開発したもの ❖ なぜ、Paper.js を選んだのか ❖ まとめ
  2. 10
 © toggle holdings inc. なぜ Paper.js を選んだのか ★ 豊富な描画機能

    ◦ パス、グループ、レイヤー管理など。 ★ 直感的なAPI ◦ 簡単に複雑な図形を描画・操作可能。 ★ イベントハンドリング ◦ マウスイベントやツール機能によるインタラクティブな操作。 ★ TypeScript サポート ◦ 公式にTypeScriptサポートがされており、型定義ファイルがライ ブラリに含まれている。
  3. 11
 © toggle holdings inc. その他グラフィックライブラリ • Konva ◦ https://konvajs.org/index.html

    • Three Fiber ◦ https://r3f.docs.pmnd.rs/getting-started/intro duction • Fabric.js ◦ https://fabricjs.com/
  4. 16
 © toggle holdings inc. ❌ 例2: paper.Layer に addChild

    するオブジェクトの型ミス(型エラー)
  5. 18
 © toggle holdings inc. カテゴリ 型エラーの例 修正方法 間違った型の引数を 渡す

    new paper.Point("100", "200") new paper.Point(100, 200) 無効なオブジェクト testLayer.addChild({ x: 100, y: 100 }) testLayer.addChild(circle) メソッドの誤用 point.add(50) point.add(new paper.Point(50, 50)) 間違ったオブジェク トでメソッドを呼ぶ point.addChild(circle) layer.addChild(circle) 演算結果の型ミス const addPoint: number = point.add(new paper.Point(50, 50)) const addPoint: paper.Point = point.add(new paper.Point(50, 50)) 型安全