はじめに
デュアルディスプレイを備えたノートPC向けのプレゼンテーションツールには、外部ディスプレイにスライドを表示する一方で、ノートPCの内蔵画面にはアンチョコを表示させる機能を持つものがあります。この機能は、急なプレゼンや外国語での発表などで非常に重宝することがあります。
しかし残念ながら、Linuxやその他のオープンソースOSで動作するプレゼンテーションツールで、そのような機能をサポートしているものは今のところありません。そこで、イメージとメモを表示するだけのシンプルなものですが、外部ディスプレイにはスライドを表示し、手元のディスプレイにはノートや次のスライドを表示させるツール「Prompter」を作りました。本稿では、その実装を例題に、GTK+プログラミングの概略を紹介します。
対象読者
GTK+プログラミングに興味がある方。もしくはPCを2台使ったプレゼンテーションをやってみたい人とその実装に関心のある人。
必要な環境
Prompterの開発はLinux (Fedora Core 4)で行いました。特にデバイスに依存したり、特殊なライブラリを利用しているわけではないので、Unix系のプラットフォームであれば移植はそれほど難しくないでしょう。注意すべき点としてはgetopt
関連がありますが、プログラムの本質的なところには関係ありません。
プログラムはC言語で書かれており、gccでコンパイルします。画像の表示にgdk-pixbufを利用しており、またウィジットセットにGTK+の2.0系を利用しています。比較的新しいLinuxディストリビューション(あるいは他のUnix系OSで、GNU開発環境を備えたもの)であれば特に問題なく実行ファイルを構築することができると思います。
Prompterとは
Mac OS Xで動作するKeynoteというプレゼンテーションツールをご存じでしょうか。Keynoteの優れた機能の一つに、「発表者ディスプレイ」というものがあります。これはデュアルディスプレイを持つPowerBookで利用可能な機能で、外部ディスプレイにプレゼンテーションスライドを出力し、手元の画面には現在のスライドと次のスライド、ノート(アンチョコ)、タイマーなどを表示するものです(次図参照)。
この機能、時として非常に役に立つのですが、いかんせん、デュアルヘッドのビデオカードを内蔵しているノートPCでないと使えません。
そこで、PCを2台利用して同じような機能を実現することを考えました。次図のように、PCをネットワークで接続し、X Window Systemのリモート画面にプレゼンテーションスライドを飛ばすことで同様の機能を実現します。投影用のPCではXサーバが動作していればよく、OSを問いません。
なおデュアルディスプレイのハードウェアを備えたノートPCの場合、X Window Systemの設定をデュアルディスプレイ対応にすることによって1台のPCでPrompterを利用することも可能です。その場合は、外部ディスプレイの画面を"unix:0.1"
とし、手元の画面を"unix:0.0"
などとして利用すればOKです(指定するディスプレイ番号とスクリーン番号は、利用しているX Window Systemの設定に依存します)。
Prompterの動作
冒頭の動作イメージ図を御覧ください。手元の画面には、そのスライドのアンチョコに相当するメモを表示するテキスト領域と、現在プロジェクタに投影しているスライドの縮小画像、次のスライドのサムネイル画像が表示されています。また、後ろには全画面表示されているスライドをプロジェクタでスクリーンに投影している様子が示されています。
ところで、Prompterはプレゼンテーションツールですが、プレゼンテーションスライドを表示するだけのツールです。画像ファイルとして保存されたプレゼンテーションスライドを、そのアンチョコであるノートと共に、次から次へと表示していくツールです。動画の埋め込みやアニメーションもできません。あくまで簡易プレゼンテーションツールですのでご了承ください。プレゼンテーションは中味で勝負、あるいはプレゼンテータの喋りが基本。Prompterは、それを支援するためのツールです。
Prompterの使い方
プログラムの内容を説明する前に、Prompterの使い方を簡単に紹介します。
プレゼンテーション内容の記述
まずスライドの画像を用意します。スライドの画像は手持ちのツールで作成してください。既存のプレゼンテーションツールを使い、プレゼンテーションを一括してスライド画像のセットにエクスポートしてしまう方法が簡単です。その後、皆さんが使い慣れたエディタを使って、ノート文書ファイルを作成します。そのフォーマットは、一行めにスライドのファイル名、それに続いてアンチョコの文章を書いて1ページとします。ページ区切りには、^L
(コントロールL)を使います。
slide001.png 最初のスライドの説明を記述します。 複数行にわたってもOKです。 どれだけ長くなっても、アンチョコ画面はスクロールするので問題ありません。 次のように^L(コントロールL)をページ区切りに使います。 ^L slide002.png 次のスライドの説明です。 ...
Prompterの起動
Prompterの起動は、コマンドラインからノート文書ファイルを引数に指定して、例えば、次のようにするだけです。なお現バージョンの制限として、ノートファイルと各画像のファイルはカレントディレクトリに存在しなければならないという制約がありますので注意してください。
$ prompter note.txt [RET]
prompter
コマンドはいくつかのオプションを取ることができて、リモート画面の指定、全画面表示の切り替え、次画面表示の切り替えなどを指定できます。通常の利用で気にしなければならないのは、リモート画面の指定くらいでしょうか。
-r | --remote=REMOTE_DISPLAY | REMOTE_DISPLAYにスライドを表示します。 |
-f | --fullscreen[=on/off] | スライドの全画面表示モードを選択します。 |
-c | --currentslide[=on/off] | 発表者画面に現在のスライドを表示するか否かを選択します。 |
-n | --nextslide[=on/off] | 発表者画面に次のスライドを表示するか否かを選択します。 |
-? または-h | --help | 使い方を表示します。 |
スライドの表示と投影用PC設定上の注意
Prompterの操作は簡単です。スペースバーや矢印キーを活用して、スライドを前後させるだけです。
なお、スライド画面を表示させる方のPCには、重要な注意点があります。まずXサーバが動作していること。これがなければ話になりません。さらに他のPCからの接続を許可していることも必要です。閉じたネットワークや、クロスケーブルで直結しているような状況であればxhost +
としてしまうのが簡単でしょう。
まれに、xhost
やxauth
以外の仕組みで接続を制限している場合もあるようなので、そのようなときにはケースバイケースで対応してみてください。