Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Scripta 3.4.7: schedule local meeting recordings without sending anything to the cloud

2026年09月26日に「Dev.to」が公開したITニュース「Scripta 3.4.7: schedule local meeting recordings without sending anything to the cloud」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

macOSの会議録音アプリScriptaがv3.4.7に更新された。会議の開始・終了時刻を設定すれば、自動で録音を開始・停止する機能が追加。これにより、録音し忘れを防ぎ、議事録作成の手間を減らす。すべての処理はユーザーのMac内で完結し、クラウドへデータが送られることはない。

ITニュース解説

Scriptaは、macOS上で動作する革新的な会議文字起こしアプリケーションである。その最大の特長は、会議の音声データ、文字起こし結果、そして要約といったすべての処理をユーザーのMacの内部で完結させ、外部のクラウドサービスに一切データを送信しないという点にある。これにより、企業の機密情報や個人のプライベートな会話内容がインターネット上に流出するリスクを完全に排除し、極めて高いプライバシー保護とセキュリティを実現する。この「100%ローカル処理」は、高性能なローカル音声認識技術「whisper.cpp」と、テキストを理解し生成する能力を持つ「LLM(大規模言語モデル)」と呼ばれるAIの一種をMac上で直接実行することで実現されている。

これまでのScriptaは、会議の録画・文字起こしを開始するために、ユーザーがアプリを開いて手動で「録音開始」ボタンをタップする必要があった。しかし、この手動操作が、多くのユーザー、さらには開発者自身にとっても課題となっていた。定期的に行われる定例会議、採用面接、あるいは「ちょっとした確認」のための打ち合わせなど、カレンダーには開始時刻が明確に記されているにもかかわらず、慌ただしい日常の中で録画開始ボタンを押し忘れてしまうことが頻繁に発生したのだ。クラウドベースの会議アシスタントであれば、通常は外部のデータセンターで動作するシステムが会議の開始に合わせて自動的に録画を始めることができる。しかし、Scriptaの根幹にある「すべての処理をMac内で完結させる」という理念と相反するため、そのようなクラウドボットの導入は不可能だった。このため、手動操作の負担をなくしつつ、Scriptaのプライバシー保護の原則を維持する新しい機能が強く求められていた。

この課題を解決するために、Scriptaの最新バージョン3.4.7では、「会議の自動録画スケジュール機能」が追加された。この新機能により、ユーザーは会議が始まる前に、録画したい会議のタイトル、正確な開始時刻と終了時刻(または録画の継続時間)、使用する言語などの情報をScriptaアプリ内で事前に設定できるようになった。アプリがMac上で起動していれば、指定した時刻になると自動的に会議の録画が開始され、設定した終了時刻になれば録画も自動で停止する。この一連の自動化されたプロセスはすべてユーザーのMac上で完結するため、これまで通り、録画された音声や文字起こし、要約、そして会議に関するメタデータは、外部に送信されることなくユーザーのローカル環境に安全に保存される。これにより、ユーザーは録画のし忘れの心配から解放され、Scriptaの核となるプライバシー保護の原則も完全に維持される。

新しいスケジュール機能は、Scriptaのツールバーにあるカレンダーアイコン、またはメニューバーから「スケジュール録画」画面を開くことで利用できる。そこで「新しい会議を作成」を選択し、会議名、録画したい時間帯、使用言語などを入力する。もし会議の開始時刻にScriptaアプリが起動していなかった場合、macOSの通知機能を通じて「Scriptaを開いてください」というメッセージが表示され、ユーザーにアプリの起動を促すことも可能だ。作成されたスケジュールは、「保留中」「現在録画中」「開始待機中」といった現在の状態とともに一覧表示され、必要に応じてスケジュールの編集やキャンセル、または録画中のセッションの停止を行うことができる。スケジュールされたセッションが完了すると、エクスポートされるセッションファイル(session.json)には会議のタイトル情報が含まれるため、後から会議履歴を会議名で効率的に検索できるようになる。

このスケジュール機能の設計には、いくつかの意図的な「製品ルール」が設けられている。例えば、複数の録画スケジュールが同じ時間帯に重複して設定されることは許可されない。これは、録画の競合や失敗を防ぐためである。また、スケジュールされた録画が終了した直後に、自動的に会議の要約が開始されることはない。手動で録画した場合には要約機能が利用できるが、スケジュール録画では、ユーザーが要約処理によって作業を中断されることを避けるため、要約は手動で行う設計になっている。もしスケジュールされた録画が開始される時点で、ユーザーが既に別の録画セッションを進行させていた場合、Scriptaは既存のセッションを停止してスケジュールされた録画を開始するかどうかをユーザーに確認する。これは、ユーザーの意図しない上書きを防ぎ、常にユーザーの同意を得るための重要な配慮である。さらに、この自動録画機能が動作するためには、ScriptaアプリがMac上で常に起動している必要がある。現在は、システムに常駐してバックグラウンドでサイレントに録画を開始するような機能は提供されておらず、アプリがフォアグラウンドまたはバックグラウンドで実行されている状態でのみスケジュールが機能する。もしアプリが閉じている状態で開始時刻を迎えた場合、録画は行われず、ユーザーにアプリを開くよう促す通知が表示されるだけだ。これらのルールは、機能の安定性、ユーザー体験、そしてプライバシー保護のバランスを考慮して慎重に決定されたものである。

このスケジュール機能の実装は、比較的簡潔な方法で実現されている。まず、すべての録画スケジュールに関する情報は、ユーザーのMac内の特定のパス(~/Library/Application Support/Scripta/schedules.json)に、単一のJSONファイルとして保存される。JSONファイルは、データを構造化して保存するための一般的なテキスト形式であり、人間にも読みやすい。Scriptaアプリが起動している間は、「ScheduleCoordinator」と呼ばれるプログラムの一部が、約1秒ごとに動作し、現在時刻と登録されたスケジュールを常に比較する。このコーディネーターは、間もなく開始する予定の会議に対してmacOSのローカル通知を設定したり、開始時刻になると、会議タイトルや言語設定などの録画に必要なパラメータを設定し、実際に録画を開始する命令を出す。また、終了時刻になるとそのスケジュールに対応する録画セッションを停止する命令も出す。万が一、アプリが予期せず終了したり再起動したりした場合でも、JSONファイルに保存されている状態(例えば、「録画中」と記されているが実際には録画が開始されていない状態)を正しく修正し、状態の不整合を防ぐ機能も備えている。自動録画を開始する前には、マイク、音声認識、そしてシステム全体の音声を録音するために必要な「画面収録」といったmacOSの権限が適切に付与されているかを自動的に確認する。これにより、必要な権限が不足している場合に、何度も許可を求めるシステムダイアログが表示されるのを防ぎ、ユーザー体験を向上させている。実際の録画プロセスは、手動モードと同じパイプラインを使用しており、マイクからの音声は「whisper.cpp」で、システムオーディオはmacOSの「ScreenCaptureKit」という技術と「SFSpeechRecognizer」というシステム音声認識機能を使って処理される。また、録画中や文字起こし処理中にMacがスリープ状態に入るのを防ぐため、「Awake」という機能がデフォルトで有効になっており、システムやディスプレイのスリープを抑制することで、長時間にわたる会議でも途切れることなく処理を継続できる。

新しいスケジュール機能の導入は、既存のプライバシー関連の権限設定を新たに要求するものではない。Scriptaがマイクやシステム音声を録音し、音声認識を行うためには、macOSの「Transparency, Consent, and Control(TCC)」と呼ばれるセキュリティ機能を通じて、ユーザーが事前に以下の権限を許可しておく必要がある。それは「マイク」「画面収録」(システムオーディオの録音に必須)、「音声認識」である。これらの権限は、Scriptaアプリを初回起動した際に表示される設定画面で一度設定を完了させておく必要がある。もし自動開始に失敗した場合、アプリは「開始待機中」と表示し、ユーザーが設定を修正してアプリに戻った後に、再度開始を試みるよう促す。これは、システムエンジニアを目指す初心者にとっても特に重要なセキュリティとプライバシーの概念であり、アプリケーションがユーザーの明示的な許可なくデバイスのリソースにアクセスできないようにするmacOSの強固な仕組みである。

この新機能を開発する過程では、いくつかの技術的な学びがあった。例えば、macOSアプリ開発で使われるフレームワークであるSwiftUIにおいて、バックグラウンドスレッドで言語設定のプロパティを更新しようとすると、アプリのリリース版ビルドで「スタックオーバーフロー」という深刻なエラーが発生することが判明した。これは、特定のUI変更は必ずメインスレッドで行うべきだというSwiftUIの設計原則を再認識させる重要な教訓となった。また、スケジュール情報をJSONファイルに保存する際、マイクや画面収録の権限を求めるダイアログが表示されている途中でアプリが予期せず終了した場合、JSONファイルには「録画中」と誤って記録されてしまうが、実際には録画が開始されていないという状態の不整合が発生する可能性があった。この問題を解決するため、実際の録画が「.recording」状態に遷移するまでは、スケジュールを「録画中」としてマークしないように修正した。さらに、macOS 15といった古いバージョンの継続的インテグレーション(CI)環境で、特定のビューのライフサイクル修飾子がエラーを引き起こす問題が発生し、これを解決するためにビューの構造をより小さなコンポーネントに分割する必要があった。

Scriptaの最新バージョン3.4.7は、macOS 14以降のApple SiliconまたはIntelチップを搭載したMacで利用できる。インストールは、GitHubリポジトリから提供されているスクリプトをターミナルで実行するだけで簡単に行える。インストール後、必要なプライバシー権限の設定を完了させ、スケジュール録画機能で数分後の会議を設定し、Scriptaアプリを起動したままにしておけば、自動的に録画が開始される様子を体験できる。このアプリはMITライセンスで公開されているオープンソースソフトウェアであり、そのソースコードはGitHubで誰でも閲覧・貢献できる。また、その開発哲学通り、スケジュール情報を含むすべてのデータはユーザーのMac上のファイルに保存され、外部のサーバーには一切送信されない。これは、開発者がサービス側のサーバーを運用していないためである。

関連コンテンツ

関連IT用語