01
ネットワーク権限を持たない
App Sandbox を有効化したうえで、ネットワーク関連の entitlement を一切付与していません。「実装で送らない」のではなく、OS レベルで 送る経路自体を持たない設計です。
Field Note · 01
マイクとシステム音声を 2 チャンネルで同時収録し、
文字起こしと構造化要約まで、ネットワークを使わずに完了させる macOS アプリ。
macOS 26 (Tahoe) / Apple Silicon / Apple Intelligence 有効
01
App Sandbox を有効化したうえで、ネットワーク関連の entitlement を一切付与していません。「実装で送らない」のではなく、OS レベルで 送る経路自体を持たない設計です。
02
文字起こしは macOS 26 の SpeechAnalyzer、要約は Foundation Models(Apple Intelligence のオンデバイス モデル)で行います。録音から議事録までインターネットは不要です。
03
Zoom や Teams、Meet のいずれでも、ボットを招待する必要はありません。 Mac が再生・収音している音声を Core Audio で直接取得するので、 相手にも気づかれず録音できます。
codesign --display --entitlements - でアプリの権限を取り出すと、
こうなっています。
ネットワーク関連の com.apple.security.network.* が
存在しないことを、出荷前のリリースチェックリストで
毎回確認しています。
書き込み権限はユーザーが Save Panel で明示的に選んだファイルのみ
(files.user-selected.read-write) で、サンドボックスの
外側にこちらから手を伸ばすことはできません。
[Key] com.apple.security.app-sandbox
[Bool] true
[Key] com.apple.security.device.audio-input
[Bool] true
[Key] com.apple.security.files.user-selected.read-write
[Bool] true
# network.client / network.server — 存在しない
I
マイクとシステム音声を、別チャンネルで。
自分の声は AVAudioEngine で、相手の声は
Core Audio の process tap で取得します。話者分離は AI 推定ではなく
チャンネルで確定するため、誤判定がありません。
II
2 系統の音声を、それぞれ独立に。
各チャンネルを SpeechAnalyzer に流し、タイムスタンプ付きで 書き起こします。日本語・英語に対応。
III
議事録のかたちに。
Foundation Models の @Generable を使って、概要・決定事項・
アクションアイテム・未解決の問い・レビュー項目に整理します。
詳細ビューから「エクスポート」を選ぶと、議事録を Markdown またはプレーンテキストで書き出せます。
保存先は OS の Save Panel で都度ユーザーが選びます。Slack に 貼っても、Notion に貼っても、社内 Wiki に貼っても、整った形で残ります。
.md) — 見出しと箇条書きで構造化.txt) — 装飾なし、コピペ向き# 2026-05-27 ロードマップ確認
- 日時: 2026-05-27 14:30 〜 15:30 (60 分)
## 概要
Q3 の優先順位を整理し、Phase 1 から Phase 2 への
受け渡しを確定した。
## 決定事項
- 録音・文字起こし・要約は完全オンデバイスで進める
- Phase 2 のテスト計画を翌週金曜までに策定
## アクションアイテム
- [ ] テスト計画ドラフト(担当: 佐藤、期限: 06-03)
- [ ] セキュリティレビュー依頼(担当: 未割当)
## 文字起こし
[00:00] mic: では、本日のアジェンダから...
[00:03] system: 了解しました。まず...
version 0.1.4
released 2026-05-27 · build 5
localVoiceRec-0.1.4.dmg
※ 配布版は Developer ID 署名 + Notarization 済み。
ダウンロード後、SHA-256 を必ず照合してください。
v0.1.4 の変更点
・初回起動時にマイク権限プロンプトを早出し
・録音開始前に権限未要求なら自動でプロンプト(無音録音事故を防止)
・診断パネルに「権限を要求する」「システム設定を開く」ボタン
・録音中のリアルタイム波形(Mic / System を上下で可視化)
・保存録音の静的波形、状態バッジ、一括再処理
※ 旧バージョンを使っていた方は、必ず Applications から既存の .app を
削除+下記コマンドで TCC リセットしてから再インストールしてください。
tccutil reset Microphone com.example.localVoiceRec
tccutil reset SystemAudioRecording com.example.localVoiceRec
上記でリセット後、新 .app の初回起動でマイク・システム音声の両方の権限プロンプトが 順に表示されます。両方とも「許可」を選んでください。
SHA-256
3a363743e204339501e82fcecc1b5098643405cdf5485ff7c6c08df310a5bc45
検証コマンド
shasum -a 256 ~/Downloads/localVoiceRec-0.1.4.dmg
公証の確認
spctl --assess --type execute -vv localVoiceRec.app
source=Notarized Developer ID が出ていれば OK。
com.apple.security.network.client
と com.apple.security.network.server のどちらも entitlement に
含めていません。OS がアプリのソケット作成を拒否します。
codesign --display --entitlements - で確認できます。
~/Library/Containers/com.example.localVoiceRec/
の下です。アプリから個別/一括削除でき、削除時はファイル実体も同時に消去されます。