概要
TrackWeightは、MacBookのForce Touchトラックパッドを精密なデジタルはかりに変えるmacOSアプリケーション。 Open Multi-Touch Supportライブラリを用いて圧力データを取得し、グラム単位で計測可能。 キャリブレーションは従来のはかりと比較して高精度を実現。 指の接触が必要など、利用にはいくつかの制約あり。 主に実験・学習用途向けで、商用や重要な計測には非推奨。
TrackWeight: MacBookのトラックパッドをデジタルはかり化
- TrackWeight は macOS用アプリケーション
- MacBookのForce Touchトラックパッド を デジタルはかり として利用可能
- Open Multi-Touch Supportライブラリ (Takuto Nakamura氏作)を活用
- トラックパッドの 圧力センサー から得たデータを グラム単位 で計測
- SwiftUI によるユーザーインターフェース
- Combine によるリアクティブデータフロー
- Xcodeプロジェクト として提供
使い方
- アプリケーションを開いて スケール画面 を表示
- 指をトラックパッドに軽く接触 させる
- 指の接触を維持 しつつ、計測したい物体をトラックパッドに置く
- できるだけ指圧を加えず に接触を維持
- 表示された数値が 物体の重さ(グラム)
仕組み
- Open Multi-Touch Supportライブラリ で macOSのトラックパッドイベント へプライベートアクセス
- 圧力データ は指などの 静電容量 が検出されたときのみ取得可能
- Force Touchセンサー の値を キャリブレーション し、重量へ変換
- キャリブレーション方法
- MacBookのトラックパッドを既存のデジタルスケール上に設置
- 既知の重り を指接触状態で順次載せ、データを比較・調整
- マルチタッチデータ は既にグラム単位で取得可能
必要要件
- macOS 13.0以降 (ライブラリ対応のため)
- Force Touchトラックパッド搭載MacBook (2015年以降のPro、2016年以降のMacBook)
- App Sandbox無効化 (トラックパッドへの低レベルアクセス必須)
- Xcode 16.0+、Swift 6.0+ (開発用)
インストール手順
- リポジトリをクローン
- TrackWeight.xcodeproj を Xcodeで開く
- App Sandboxを無効化 (プロジェクト設定)
- ビルド&実行 でアプリ起動
制限事項
- 指の接触必須 :静電容量検出時のみ圧力データ取得可能
- 物体の設置方法 :指の接触を妨げないように物体を配置
- 金属物体 :金属は指と誤認される場合あり、 紙や布を間に挟む ことで対応
- 直接計量不可 :指接触なしでは計量不可
技術詳細
- SwiftUI でUI構築
- Combine でデータフロー管理
- Open Multi-Touch Supportライブラリ 利用
- macOSトラックパッドの グローバルなマルチタッチイベント 取得
- 位置・圧力・角度・密度 など詳細なタッチデータ
- スレッドセーフなasync/await対応
- タッチ状態追跡 ・センサーデータ網羅
- MITライセンス (Takuto Nakamura氏による)
免責事項
- 本アプリは 実験・教育用途 向け
- 精度保証なし、重要な計測や商用利用には非推奨
- 正確な計量が必要な場合は従来のはかりで検証 が必須