開発時期:2024年
開発者:AmpiTa Project
開発言語:C#言語(Visual Studio 2022)
背景・概要
研修会や講演会、発表会、学会などでは時間管理が重要になります。
そのような場面で使う事ができる時間管理システムです。
予定されたプログラムを確実に、遅延なく終わらせるという使命がある運営側にとっては重い責任でもあります。
発表者側も、与えられた時間をオーバーしてはいけない、特に学会ではルールに従って進めることも演者の評価になるため、発表時間は気になるところです。
運営も演者も互いに見る事ができるツールを目指して開発しました。
残時間表示(プレゼンタイマー)
ステージに登壇して発表した経験をお持ちの方であれば想像がつくかもしれません。演者に持ち時間の残りを知らせるタイマーです。
座長席では時間管理用に使われます。質疑応答を中断させる判断もタイマーを見て行われます。
タイムテーブル案内表示
学会やセミナーなどは日程表どおりに進行されなければ発表や聴講の機会を奪われる人が現れます。時間厳守です。現在の時刻では何をすべきか、次のセッションはいつから始まるのかといったことを表示できます。
ポッドキャストやYouTubeの生配信でも時間厳守で進行されるべき場合があります。話し手やスタッフが見る段取り表のようなものを表示できます。
無償提供中
本ソフトウェアはVectorさんの協力の下で無償配布しています。ダウンロードご希望の方はVectorさんのウェブサイトをご参照ください。
Vector:Presentation Time Keeper (PTK)
関連:抄録文字数カウント(ウェブ)
演題登録する際にある文字制限について、原稿を作成しながら手軽に確認できるウェブサイトがあります。
インストールやID登録など不要です。ウェブを開いて、テキストを貼り付ければカウントされます。
もちろん無料です。
機能説明[基礎編]
ソフトウェア入手
インストール方法
- PTKの配布パッケージ(フォルダ)を丸ごとパソコンやUSBフラッシュメモリにコピー
- PTK.exeをダブルクリックして起動
*.インストーラーなどはないポータブルアプリケーションです。直接起動してください。
*.DLLファイルなどPTK.exeと同じフォルダに在るファイル群も動作に必要になります。
アンインストール方法
- インストール時に保存されたフォルダを丸ごと削除
機能説明[カウントダウンタイマー編]
機能概要
設定された時間を1秒ずつ減らしながら進んでいく減産式の時計です。時間は1秒から、1秒単位で設定できます。表示は60分以上でも『分:秒』となります。
予定時間を超過したことを知らせる機能や、指定した時間(残秒数)に知らせる予鈴機能が備わっています。文字色やベル音は任意で調整できます。
起動
- PTK.exeをダブルクリックして起動
- カウントダウンタイマーの画面が開く
カウントダウンスタート
- 三角印のスタートボタンを押す
- 表示のカウントダウンが始まる
タイマー停止
- 縦二本線のストップ(ポーズ)ボタンを押す
- 表示のカウントダウンが停止する
タイマー設定
- 『総計測時間』枠に在る『Hour』(時間)、『Min』(分)、『Sec』(秒)欄を調整
- a) 入力欄に数値を直接入力
- b) Up/Downボタンで数値を操作
- 『Write to View』(表示器に反映)ボタンを押す
- 時計表示欄に設定値が代入される
*.タイマー動作中に設定値を調整することはできますが、設定値をタイマーに反映する操作はできません。反映させる場合にはタイマーを停止して再スタートするか、『Reset & New Start』(再スタート)ボタンを押下してください。
リストから総計測時間設定
- 『総計測時間』枠に在るドロップダウンリストを開く
- 任意の時間を選ぶ
- 隣にある『転記』ボタンを押す
- Hour, Min, Sec 欄に対応した数字が入力される
総計測時間設定をゼロにリセット
- 『総計測時間』枠に在る『0h0m0s』ボタンを押す
- 設定値がゼロにリセットされる
総計測時間設定を記憶
- 『総計測時間』枠に在る機能選択ドロップダウンリストを開く
- 『設定値を記憶』を選択する
- 隣にある『機能』ボタンを押す
- Hour, Min, Sec 欄に表示中の値が記憶される
*.これは総計測時間枠内での処理です。表示器に反映するためには『Write to View』ボタンを押してください。
総計測時間設定記憶を呼出
- 『総計測時間』枠に在る機能選択ドロップダウンリストを開く
- 『設定値を呼出』を選択する
- 隣にある『機能』ボタンを押す
- Hour, Min, Sec 欄に呼び出された内容が転記される
*.この機能を実施する前に前項の記憶する操作が必要です。
表示器(タイマー)文字色の変更
- 『Viewer』枠に在る表示器標準文字色の設定欄にある『Red』(赤)、『Green』(緑)、『Blue』(青)の3つの欄を調整する
- a) 入力欄に数値を直接入力
- b) Up/Downボタンで数値を操作
- 隣にある色見本が変化する
- 表示器の文字色が変化する
*.既に超過や予鈴により色が変化している場合にはそちらが優先的に適用されるため、色見本だけが変化する場合があります。
*.設定値は0~255の間で調整可能です。
タイマー文字サイズの変更
- 『Viewer』枠に在る表示器文字サイズの設定欄にある『Main』欄を調整する
- a) 入力欄に数値を直接入力
- b) Up/Downボタンで数値を操作
- 設定値に応じて表示器の文字サイズが変化する
フォームサイズの変更
- アプリ画面の端にマウスカーソルを合わせ、両矢印を表示させる
- マウスの左ボタンを押して、保持する
- マウス左ボタンを押したまま、マウスを動かして画面サイズを変える
- 画面サイズが変わる
- 文字サイズは画面の拡大/縮小に合わせて変化
- 操作ボタン類は左下を基準に拡大縮小せず定位置
- 画面サイズ変更により文字サイズが変動した場合、表示器文字サイズ調整欄の数値が変動(フォントサイズ反映)
超過設定(1)表示器文字色
- 『超過』枠に在る表示器標準文字色の設定欄にある『Red』(赤)、『Green』(緑)、『Blue』(青)の3つの欄を調整する
- a) 入力欄に数値を直接入力
- b) Up/Downボタンで数値を操作
- 隣にある色見本が変化する
超過設定(2)テキスト表示
- 『超過』枠に在る『文字』の左側にあるチェックボックスを操作する
- チェックボックスオンで本機能有効
- チェックボックスオフで本機能無効
- 超過後に文字での警告を表示する周期を、秒数設定欄で調整する
- a) 入力欄に数値を直接入力
- b) Up/Downボタンで数値を操作
- 警告表示に使用する文字(テキスト)を、自由記載欄に記入する
超過設定(3)ベル(ブザー音)
- 『超過』枠に在る『ベル』の左側にあるチェックボックスを操作する
- チェックボックスオンで本機能有効
- チェックボックスオフで本機能無効
- 超過後にベル(ブザー音)で警告する周期を、秒数設定欄で調整する
- a) 入力欄に数値を直接入力
- b) Up/Downボタンで数値を操作
- ベル(ブザー音)の音階を周波数(Hz)で、音の長さをミリ秒(mSec)で調整する
- a) 入力欄に数値を直接入力
- b) Up/Downボタンで数値を操作
予鈴(1)On/Off
- 『予鈴』枠に在るラジオボタンを操作する
- 『ON』にチェックで本機能有効
- 『Off』にチェックで本機能無効
予鈴(2)時期
- 『予鈴』枠に在る時期(残時間)の分秒を調整する
- a) 入力欄に数値を直接入力
- b) Up/Downボタンで数値を操作
予鈴(3)表示器文字色
- 『予鈴』枠に在る表示器文字色設定欄にある『Red』(赤)、『Green』(緑)、『Blue』(青)の3つの欄を調整する
- a) 入力欄に数値を直接入力
- b) Up/Downボタンで数値を操作
- 隣にある色見本が変化する
*.予鈴1~3は時間順に並ぶ必要はありません。
*.予鈴の時期は時計表示に合わせる必要はありません。例えばMinを3分、Secを120秒と入力した場合は5分00秒に予鈴が発動します。
予鈴(4)ベル音(ブザー音)
- ベル(ブザー音)の音階を周波数(Hz)で、音の長さをミリ秒(mSec)で調整する
- a) 入力欄に数値を直接入力
- b) Up/Downボタンで数値を操作
スレーブモニター(サブ画面)
- 操作ボタンの『SLAVE』を押す
- 表示器のクローンが表示される
スレーブモニタータイマー文字サイズの変更
- 『Viewer』枠に在る表示器文字サイズの設定欄にある『Slave』欄を調整する
- a) 入力欄に数値を直接入力
- b) Up/Downボタンで数値を操作
- a) 入力欄に数値を直接入力
- 設定値に応じて表示器の文字サイズが変化する
スレーブモニターフォームサイズの変更
- アプリ画面の端にマウスカーソルを合わせ、両矢印を表示させる
- マウスの左ボタンを押して、保持する
- マウス左ボタンを押したまま、マウスを動かして画面サイズを変える
- 画面サイズが変わる
- 文字サイズは画面の拡大/縮小に合わせて変化
- 操作ボタン類は左下を基準に拡大縮小せず定位置
- 画面サイズ変更により文字サイズが変動した場合、表示器文字サイズ調整欄の数値が変動(フォントサイズ反映)
機能説明[タイムテーブル編]
機能概要
学会やセミナーなどは日程表どおりに進行されなければ発表や聴講の機会を奪われる人が現れます。時間厳守です。現在の時刻では何をすべきか、次のセッションはいつから始まるのかといったことを表示できます。
ポッドキャストやYouTubeの生配信でも時間厳守で進行されるべき場合があります。話し手やスタッフが見る段取り表のようなものを表示できます。
起動
- PTK.exeをダブルクリックして起動
- カウントダウンタイマーの画面が開く
- 『TABLE』ボタンを押す
- タイムテーブルの画面が開く

Excelファイル作成
- 最左列(A列)に時刻を入力
- 2列目(B列)以降は任意のデータを入力
- Excelファイル(.xlsx)を任意の場所に保存する
*.Excelファイルの指定様式はありません。参考用のExcelファイルを用意しています。
*.A列に入力した時刻に沿ってタイムテーブルが動作します。
*.B列に入力したデータは大きな文字で表示されます。下図の『BPA優秀演題発表11』や『BPA10-6』のセッション記号や演題番号がそれに該当します。
*.C列に入力したデータは少し大きめの文字で表示されます。下図の『手術室関連業務部門』や『医療的ケア児の患家BCP(business continuity plan)策定支援と療養住環境』のセッション名や演題名がそれに該当します。
*.D列に入力したデータは標準文字サイズで表示されます。下図の『座長:佐生喬、定亮志』や『西謙一』の座長名や演者名がそれに該当します。
*.E列以降のデータは拡大表示されません。一覧表(データグリッドビュー)にのみ表示されます。
Excelファイルインポート
- Excelをインポートボタンを押す
- ファイルを選択するダイアログが開く
- 任意のExcelファイルを選択する
- 一覧表(データグリッドビュー)にインポートされたデータが反映される
日付の調整
- カレンダーから日付を選択する
- 隣にある日付調整ボタンを押す
- リストの中で最も古い日付をカレンダーの日付に置き換え、以降は最古日付を基準に自動調整
*.時刻は変更されません。時刻を調整したい場合はExcelファイルでご調整ください。
データ直接編集
- 設定タブ側にあるリスト画面をクリックし、データを直接入力する
- 『DataGrid直接編集の内容を確定』ボタンを押す
- 編集内容がデータベースに反映される

*.データベースに反映されるまでの間もリストには表示され続けますが、タイムテーブルとしてのポップアップ表示には反映されません。
データベース抹消
- ドロップダウンリストから『一覧クリア(抹消)を選択する
- 隣にある機能ボタンを押す
- 確認画面(ポップアップ)が表示されるので同意する
- データベースの内容が抹消される

*.データベースのファイルが空になる操作です。
*.データベース構築に用いたExcelファイルなどは消えません。
自動案内スタート
- 『Start Viewer』ボタンを押す
- 時刻に合わせてタイムテーブルの適当な項目を表示する
開発技術
フォームサイズ連動のフォントサイズ変動
本アプリではフォームのサイズを拡大・縮小するとフォントサイズも拡大・縮小する機能を備えています。
まず起動時にフォームの縦横サイズと、フォントサイズを取得しておきます。
private void Form1_Load(object sender, EventArgs e)
{
dbl_Default_Width = this.Width;
dbl_Default_Height = this.Height;
int_Font_Size = (int)UD_FontSize.Value;
}
フォームサイズが変化したことを『SizeChanged』で検出します。
変化後のフォームの幅(this.Width)を起動時のフォームのサイズで除算して幅の拡大率・縮小率を算出します。同様に高さ(Height)も算出します。
変動率が少ない方を基準(掛け率)にフォントサイズ調整します。
private void Form1_SizeChanged(object sender, EventArgs e)
{
dbl_Scale_Factor_Width = this.Width / dbl_Default_Width;
dbl_Scale_Factor_Height = this.Height / dbl_Default_Height;
if (dbl_Scale_Factor_Width < dbl_Scale_Factor_Height)
{ dbl_Scale_Factor = dbl_Scale_Factor_Width; }
else
{ dbl_Scale_Factor = dbl_Scale_Factor_Height; }
UD_FontSize.Value = Convert.ToInt32(int_Font_Size * dbl_Scale_Factor);
}
ブザーを鳴らす
ブザーを鳴らす処理は『Console.Beep』を使っています。音階は周波数(Hz)、音の長さはミリ秒(mSec)で調整します。
所感としては750ミリ秒以上ないと警告音としては聴き取りづらいかなと思います。
周波数は1,000~2,000Hzあたりが耳には届いて、不快感が少ないかなと思います。5,000Hzあたりになると不快に感じる人が居るかもしれないので、目的によっては効果的な警告音だと思います。
private Task Bell_A_Async() { return Task.Run(() => Bell_A()); }
private void Bell_A()
{
Console.Beep((int)Sound_Hz.Value, (int)Sound_PlayTime.Value);
}
アプリ終了時ウェブサイト表示
このアプリを閉じる時、自動的に関係先のウェブサイトが開きます。ユーザーには何のメリットもありませんが、フリーウェアとしての小さなあがきのようなものです。
方法は、最初にインターネット接続の有無を確認し、接続が確立されていれば指定したURLを開くという指示です。
async void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
{
System.Diagnostics.Process.Start("https://www.ampita.jp");
}
}
おわりに
学会の発表者が用意することはありませんが、運営側としては必要になるタイマーを自作しました。最初に制作したのは2015年です。あるイベントで演者に付箋を渡して時間管理している様子を見て、スマート化できないかなと思ったのがきっかけです。
筆者は素人なのでスタイリッシュな画面構成や挙動はできませんが、実務には耐えうるソフトになったかなと思います。
プロのラジオDJは専用システムを使っていると思いますが、セミプロやアマチュアの生放送・生配信をしている話し手さんにご活用頂ければと思っています。