プレゼン資料の画面共有中にデモ用の端末の画面を安全に映したい! - 2023-05-11 - ククログ

ククログ

株式会社クリアコード > ククログ > プレゼン資料の画面共有中にデモ用の端末の画面を安全に映したい!

プレゼン資料の画面共有中にデモ用の端末の画面を安全に映したい!

結城です。

コロナ禍以後、オンラインでの会議や技術イベント登壇の機会が増えました。 登壇時の発表は大抵の場合、自分が操作しているPCの画面を共有して配信する形で行うことになります。

このとき、ただ漫然と画面全体を共有してしまうと、社外秘の文書や、プライバシー情報を含むメッセージの通知など、人に見せてはいけない情報までもが画面共有されてしまう恐れがあります。 画面共有での「意図しない情報が参加者に見えてしまう」事による情報漏洩リスクについて、皆さんはどのように対策を取っているでしょうか?

当社のメンバーが関わる場面でよく登場するプレゼンツールRabbitのバージョン3.0.1以降には、プレゼン発表のウィンドウ内に端末の画面を埋め込む機能が含まれています。 デモンストレーションの内容が端末エミュレータ上での操作だけで済む場合、この機能を使えば、誤配信による情報漏洩のリスクを低減し、より安全にライブデモを行えます。 この記事では、この機能の具体的な使い方をご紹介します。

画面共有のやり方と情報漏洩リスク

大前提として押さえておくべき点に、「普段使用している環境を何らかの形で発表に流用すると、情報漏洩のリスクがある」という事があります。 以下に、普段の環境を使う事により生じる情報漏洩の例をいくつか挙げてみます。

  • 取引先の会社名が書かれたファイルの名前が画面内に映り込む(デスクトップ全体やファイルマネージャーの画面共有、シェル上でのlsコマンドの実行結果など)。
  • 取引先とやり取りしたメールの文面が画面内に映り込む(メールクライアントの画面の誤配信、通知ポップアップなど)。
  • 設定ファイルやシェルのコマンド履歴などに含まれた、本番環境にアクセスするためのIPアドレス、トークン、パスワードなどが画面内に映り込む。
  • 日本語入力ソフトの入力履歴に基づく変換候補や補完候補を通して、未公開の新製品名が画面内に映り込む。
  • パーソナライズされた検索結果のページに表示される、現在位置・居住地などの情報が画面内に映り込む。

このように、プライバシーやセキュリティに関わる情報は様々な角度から漏洩し得ます。 プレゼン資料の表示画面だけを共有すれば、資料内に埋め込んだスクリーンショットや発表時のデスクトップ通知などを除けば、意図しない情報が映り込むことを理論上は防げます。 逆に、プレゼン資料の表示のためだけにデスクトップ全体を画面共有する場合や、普段の開発・本番環境を使ってライブデモをする場合は、情報漏洩が起こりやすいと考えられます。

情報漏洩のリスクを低減するためには、画面共有の対象をどれだけ普段の環境から切り離せるかが鍵となります。 この事を踏まえて、画面共有のやり方を情報漏洩リスクの低い物から高い物へと順に挙げてみます。

  1. 普段使用しているものとは別の、発表専用のクラウド環境(Azure、AWSなど)やローカル環境(物理的なPCまたは仮想環境)を使い、画面全体またはプレゼン資料のウィンドウを共有する。
  2. 普段使用している環境で、ウィンドウ単位で画面を共有し、発表資料のウィンドウのみを共有する。(他のウィンドウには切り替えない)
  3. 普段使用している環境に外付けのディスプレイを追加で接続して、その画面全体のみを共有する。
  4. 普段使用している環境で、ウィンドウ単位で画面を共有し、発表資料のウィンドウと他のウィンドウの間で共有対象を切り替える。(誤って「見せてはいけないウィンドウ」を共有してしまうリスクがある)
  5. 普段使用している環境で、画面全体を共有する。(誤操作、意図しないタイミングなどでの通知で情報が漏洩するリスクがある)

1や3の方法は発表のためのハードウェアや仮想環境を調達する必要があり、実施のハードルが高いです。 となると、現実的には2、4、5のいずれかとなる場合が多いでしょう。

その中では、できればより安全な方法として2を採用したい所ですが、この方法でネックとなるのが、プレゼン資料のウィンドウ以外に共有対象を切り替えられないという点です。 発表の中でデモンストレーションを見せたい場合、事前に撮影した動画を資料の中に埋め込むか、デモまで含めたプレゼンの発表内容全体を動画にするしかありません。 しかし事前録画だと、視聴者の質問に応えてリアルタイムで追加・補足のデモンストレーションをすることはできません。 Rabbitの「発表資料のウィンドウ内で端末を使う」機能は、この欠点を補う物と言えます。

必要なもの

Rabbitで発表画面内に端末を表示するためには、GTK 3ベースの仮想端末ウィジェットを提供するGemのvte3が必要です1。 このGemはWindows環境では使用できないため、Windows上で端末埋め込み機能を使いたい人は、WSLを使ってLinux環境上でRabbitを動かす方法を取る必要があります。

$ gem install rabbit vte3

Gemのインストールが終わったら、Rabbit用のプレゼン資料を読み込ませてRabbitを起動します。 例えばOSS Gateワークショップのオンライン開催会用の資料だと、以下の要領です。

$ git clone https://github.com/oss-gate/workshop.git
$ cd workshop/tutorial/scenario-online
$ rake

プレゼン資料の表示のためのウィンドウが開かれたら、このウィンドウを画面共有します。

スクリーンショット:プレゼン資料のウィンドウを画面共有している様子。

発表の最中でデモンストレーションをする場面がきたら、キーボードショートカットの Alt-Ctrl-Shift-T を入力します。 すると、発表用のウィンドウの表示が端末の物に切り替わります。

スクリーンショット:プレゼン資料のウィンドウが端末の他面に切り替わった様子。

もう一度Alt-Ctrl-Shift-Tを入力すると、端末が消えてスライドの画面に戻ります。 このようにして、発表資料と端末の画面とを1つのウィンドウの中で行き来することで、それ以外のウィンドウやポップアップ通知などを他の人に見せずに安全に画面共有を行える、という寸法です。

なお、画面を発表資料に切り替えた後も、端末の状態はそのまま維持されます。 そのため、デモの途中で表示を発表資料に戻して、スライドを進めたらまたデモの端末の画面に戻す、ということも問題無く行えます。 発表を開始する前の段階から何かしらの下準備をしておきたい場合は、tmuxなどの仮想端末のセッションを別途用意しておき、Rabbit上の端末からそのセッションにアタッチするとよいでしょう。

実際にこの機能を使った発表の事例として、当社代表・須藤(Rabbitの作者)による発表の様子が動画で公開されています。 動作の様子を参考にしてみて下さい。

余談:発表内容がプレゼン資料と端末だけで完結しない場合の対策あれこれ

どうしても先に挙げた32、43、54のいずれかの方法で発表する必要がある場合、情報漏洩リスクを下げるための追加の対策を講じたい所です。 以下、対策の例をいくつか挙げてみます。 (それぞれを記事にするほどの分量がないため、ここにまとめてしまいました。)

  • 全般:
    • システム全体でデスクトップ通知を無効化する。
      • Windows 11の場合、タスクバー右端の通知領域を右クリックして「通知設定」を選択し、「通知」を「オフ」に切り替える。
  • Webブラウザーを使う場合:
    • 普段使いとは別の、発表時専用のブラウザーを使うようにする。例えば、普段Firefoxを使っているのであれば、発表時にはあえてChromeを使うようにする。
      • 普段使いのブラウザーを使う場合、履歴やお気に入りを消去しておく。または、ゲストモード(Chromiumベースのブラウザーの場合)普段使いとは別のプロファイル(Firefoxの場合)このブログの過去記事での言及)を使うようにする。
      • 発表専用のブラウザーまたはプロファイルを、履歴の類が残らないように設定しておく。Firefoxの場合は以下のようにする。
        • 設定→検索→検索バー→「検索候補を使用する」をOFFにする。
        • 設定→プライバシーとセキュリティー→Cookieとサイトデータ→「Firefoxを閉じたときにCookieとサイトデータを削除する」をONにする。
        • 設定→プライバシーとセキュリティー→履歴→FireFoxに 「履歴を一切記憶させない」を選択する。
        • 設定→プライバシーとセキュリティー→アドレスバー→「アドレスバーの使用時に表示する候補」の全てのチェックを外す
    • ブラウザーの設定でデスクトップ通知を無効化する。
      • Firefoxの動作環境やバージョンによっては、Webサイトが提供するデスクトップ通知はFirefox固有の機能で表示され、OSレベルでの通知の制御が機能しないので、Firefox側でも明示的に通知を無効化するよう設定しないといけない。設定→プライバシーとセキュリティ→許可設定→通知 の「Firefoxを再起動するまで通知を一時停止」(この項目はOSレベルでの制御が機能しない場合にのみ表示される)にチェックを入れると、Firefoxを再起動するか自分でチェックを外すまでの間はデスクトップ通知が無効化される。
  • 日本語入力をする場合:
    • かな漢字変換の候補や入力履歴に基づく補完候補を表示しないように設定しておく。
      • 新しめのバージョンのATOKには、Zoomなどの有名なツールで画面共有が行われている事を検知して、変換候補や補完候補の表示を自動的に無効する機能があるので、そのような日本語入力ソフトを選ぶ、という対策もある。
    • ウィンドウ単位での画面共有の場合、候補ウィンドウは別ウィンドウ扱いとなって画面共有対象から外れるため、なるべくならその方法を使う。
  • メールクライアントを使っている場合:
    • 新着メール等のデスクトップ通知を無効化する。
      • Thunderbirdのデスクトップ通知はThunderbird固有の機能で表示され、OSレベルでの通知の制御が機能しないので、Thunderbirdの設定→一般→新着メールの通知→「デスクトップ通知を表示する」のチェックを外して明示的に無効化する必要がある。

まとめ

Rabbit 3.0.1を使って、プレゼン資料の画面の共有中に余計な情報を写り込ませるリスクを冒さず安全にライブデモを行う方法をご紹介しました。

技術イベントで登壇して発表することは、情報を整理したり、理解が曖昧だった部分を調べ直したりする機会になります。 発表を安全に行う手段を手に入れて、皆さんも是非、臆せず発表に挑んでみてください。

  1. 動作に必要なGemなら依存関係に最初から入っていてくれれば……と思う所ですが、WindowsネイティブのRubyではこのGemを使えないため、依存関係に追加できないでいるとのことです。

  2. 普段使用している環境に外付けのディスプレイを追加で接続して、その画面全体のみを共有する。

  3. 普段使用している環境で、ウィンドウ単位で画面を共有し、発表資料のウィンドウと他のウィンドウの間で共有対象を切り替える。

  4. 普段使用している環境で、画面全体を共有する。