SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

GTK+プログラミング:プレゼンテーション支援ツールの開発

アンチョコ付きプレゼンテーションツール「Prompter」

  • このエントリーをはてなブックマークに追加

本稿では、2台のPC、またはデュアルディスプレイを備えたPCを使ってアンチョコ付きプレゼンテーションを手軽に実現するツール「Prompter」を例題に、GTK+プログラミングのエッセンスを紹介します。プログラムはLinuxで作成していますが、OSに依存する部分が少ないため他のUnix系OSでも動作させるようにすることは難しくはありません。またプレゼンテーション画面を表示する側のPCは、X Window Systemのサーバが動作していればOSを問わないので、MacやWindowsでも利用できるでしょう。

  • このエントリーをはてなブックマークに追加

Prompterの動作イメージ
Prompterの動作イメージ

はじめに

 デュアルディスプレイを備えたノート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で利用可能な機能で、外部ディスプレイにプレゼンテーションスライドを出力し、手元の画面には現在のスライドと次のスライド、ノート(アンチョコ)、タイマーなどを表示するものです(次図参照)。

Keynoteの発表者ディスプレイ機能
Keynoteの発表者ディスプレイ機能

 この機能、時として非常に役に立つのですが、いかんせん、デュアルヘッドのビデオカードを内蔵しているノートPCでないと使えません。

 そこで、PCを2台利用して同じような機能を実現することを考えました。次図のように、PCをネットワークで接続し、X Window Systemのリモート画面にプレゼンテーションスライドを飛ばすことで同様の機能を実現します。投影用のPCではXサーバが動作していればよく、OSを問いません。

Prompterの活用例
Prompterの活用例

 なおデュアルディスプレイのハードウェアを備えたノート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の起動
$ prompter note.txt [RET]

 prompterコマンドはいくつかのオプションを取ることができて、リモート画面の指定、全画面表示の切り替え、次画面表示の切り替えなどを指定できます。通常の利用で気にしなければならないのは、リモート画面の指定くらいでしょうか。

Prompterのオプション
-r--remote=REMOTE_DISPLAYREMOTE_DISPLAYにスライドを表示します。
-f--fullscreen[=on/off]スライドの全画面表示モードを選択します。
-c--currentslide[=on/off]発表者画面に現在のスライドを表示するか否かを選択します。
-n--nextslide[=on/off]発表者画面に次のスライドを表示するか否かを選択します。
-?または-h--help使い方を表示します。

スライドの表示と投影用PC設定上の注意

 Prompterの操作は簡単です。スペースバーや矢印キーを活用して、スライドを前後させるだけです。

 なお、スライド画面を表示させる方のPCには、重要な注意点があります。まずXサーバが動作していること。これがなければ話になりません。さらに他のPCからの接続を許可していることも必要です。閉じたネットワークや、クロスケーブルで直結しているような状況であればxhost +としてしまうのが簡単でしょう。

 まれに、xhostxauth以外の仕組みで接続を制限している場合もあるようなので、そのようなときにはケースバイケースで対応してみてください。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
Prompterプログラムの解説(1/3)

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

飯尾 淳(イイオ ジュン)

1970年生まれ。株式会社三菱総合研究所 情報通信技術研究本部 情報技術研究グループ 主任研究員。専門は、画像処理とユーザインタフェース……のはずが、なぜか最近はOSS普及振興の手伝いで多忙な毎日を過ごしている。著書に「Linuxによる画像処理プログラミング」、「リブレソフトウェアの利用と開発~I...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/389 2006/05/24 00:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング