N E K O M A T A Y A

ストップウォッチ(google gadget対応版)



プログラム名称 Stop Watch(javascript版)


えいと、
以前作ったストップウオッチを javascript に移植してみました。

前の版は、Tcl/Tk で書かれていましたので「実行系をインストールすれば、Mac/Win/Unix(要 X) を問わずに動作する。」と言う趣向でしたが、今回は、javascript対応ブラウザさえあれば、「何もインストールしなくてもオッケー」です。

で、ほとんど仕様は変わっておりませんので以下のドキュメントは、かなりつかい回しでございます。

スクリプト本体は、呼び出し側のhtmlと分離する形で書きましたので、気が向いた方は自分のおスキなデザインに簡単に変更可能です。
「いらないボタンとか取っ払っちゃったすっきりしたヤツ」を作るとか、「ラップメモリ100個のヤツ」とか ガシガシ作ってお楽しみください。


でまぁ、何のへんてつも無いストップウォッチなので特に使い方が難しいなんて事は全然ありません。でもってヘルプ機能はありません。(いいわけ・・・)

追記

最近、googleデスクトップとかgoogleホームページとかを 使い始めました。
同じページ内でストップウオッチを表示したいので、xml を書き足してgoogle gadget(ぐーぐるがじぇっと)に対応させてみました。
ねこまたやのWEBサーバ上でも店開きしています。が、個人用のガジェットのままで運営してゆくつもりです。サービスの継続性は保証できません。 サービスが途絶えてこまる方は、このアーカイブの関連ファイルをカスタマイズして、ご自身のサービスを立ち上げてご使用ください。

なんかの気の迷いでこのサービスをWEBで公開される方へ 特に止めだてはしませんが、ご一報いただけるとよろしいかと思います。



では、インストールと使い方の説明をします。



● インストール
と、言っても javascriptでございますから、特にインストール手順はございません。
ダウンロードしたアーカイブから nasSW.js と StopWatch.html をお好みの場所に置いて(もちろんwwwサーバ上でオッケー)

StopWatch.html をブラウザで読み込んでご使用ください。

スクリプト本体は、nasSW.js です。
スクリプトに手を加えない場合は、呼び出し側のHTML と同じフォルダに置いてください。

google gadget(ぐーぐるがじぇっと)としてご使用になりたい方は、webサーバに必要なファイルを置いて、同じ階層にある"StopWatch.xml"を書き換えてご使用ください。
Contentタグのhrefプロパティの値を、あなたの運用するサービスのアドレスに置き換えて、 そのxmlをgoogleデスクトップまたはホームページの「ガジェットの追加」メニューから指定すると そのサーバから読み込んで動作する様になります。


● ウィンドウ説明

起動すると下のような画面が出ます。



ボタンと各表示領域の説明をします。

[ready](または run run-lap stop)
ステータス表示エリア
ストップウォッチの計測状態を表示します。
状態は redy(stop)/run/run-lap の三つの状態があります。

[a]bout
このプログラムについて

[l]og
操作ログを表示します。

[m]ode
モード変更ボタン
時計表示とストップウォッチモードを切り換えます。
スタート・ストップ ラップ・リセット等の動作を
行うと時計表示は終了してストップウォッチモードに
なります。

[24FPS] (初期状態)
計測レート変更ボタン 計測単位(フレームレート)を変更できます
ボタンをクリックするたびに計測モードが変わります。
以下の値が選択できます。

24FPS 24分の1秒表示 時間表示形式は 時:分:秒+駒
30NDF 30分の1秒表示 時間表示形式は 時:分:秒:駒
30DF 29.97分の1秒表示 (** NTSC方式 ドロップフレームカウント)
時間表示形式は 時:分:秒;駒
25FPS 25分の1秒表示 時間表示形式は 時:分:秒-駒
RT 100分の1秒表示 時間表示形式は 時:分:秒.駒


[||_____________|]
ランニング インジケータ
計測中はここの表示が走ります
片道一秒で縦線が左から右へ走ります。

[時刻 または タイムコード]
計測タイムコード表示エリア
メイン表示です。計測中の時間が表示されます。
サンプルは、ラップ/リセット スイッチを兼ねています。
起動時は、時計表示になっています。
停止中はリセットです。リセット時に計測内容をラップメモリに送って記録します。

時計表示のときはコンピュータの内蔵時計の時刻を表示します。
時計表示は、デフォルトで12時間(午前・午後)形式です。
24時間表示に切り換え可能です。

[Start/Stop]
スタート・ストップボタン
このボタンで計測を開始・停止します


[Clear-Lap]
ラップクリアボタン
画面下側のラップ表示エリアをクリアします。

[Lap/Reset]
ラップ・リセットボタン
このボタンは、計測中はラップを取ります
停止中はリセットボタンになります。

[画面では空欄]
ラップ表示エリア
計測ラップを表示します。
標準で4個の表示エリアがあります。
増減可能です。
変更したい人は、後で説明する
チューニングしよう を参照してください。




● 使ってみましょう

では、試しに使ってみましょう

START/STOP ボタンを押してみて下さい。

時計表示 が ストップウォッチ表示 になって計測を開始します。

(状態は stop から run に変わります)


もう一度 START/STOP ボタンを押すと止まります。

(状態は stop)


さらに START/STOP ボタンを押すと続きを計測します。

(状態は run)


LAP/RESET ボタンを押して下さい

計測中に LAP/RESET ボタンを押すとラップ表示で止まります。
また、記録したラップは、ラップ表示エリアに送られて記録されます。

(この状態を run-lap(ラン-ラップ)と呼びます。)

run-lap 状態では、計測が続いています。

右上にランニングインジケータがあって、これが走っている間は
計測中であることが分かります。


さらにラップボタンを押して下さい。

新しいラップタイムが表示され ラップエリアの表示は一つ下に送られて
さらに計測が続きます。

状態は、run-lap のままです。

ラップは、4個まで表示できます。4個を超えると古いものが消えます。
(カスタマイズすると増やしたり減らしたりできます)


ラップ表示は、必要がなくなったら消去できます。

Clear-Lap ボタンを押して下さい。

run-lap 状態から抜けるには、Start/Stop ボタンを押して下さい。
通常計測状態(run)に戻ります。


計測レートボタンで計測レートを変更できます。

計測レートボタンを押すごとにモードが下のように変わります。

24FPS → 30NDF → 30DF → 25FPS → RT → 24FPS → 30NDF →(以降ループ)

ループになっていますので、必要回数ボタンを押してモードを選んで下さい。

計測中にもモードを変更できます。(特に禁止していません)


** 内部的には実時間を計測して各レートに合わせた出力を行っているため、
一回の計測に各レートが混在できます(あまり(全然?)意味はないぞ) ただし
多分混乱するだけなのでやらない方がよいでしょう。レートを間違えて
計測を始めたときなどは役に立ちます。(・・・とほほ。)


モード変更ボタンを押してみて下さい

モード変更ボタンを押すと時計表示とストップウォッチ表示が切り替わります
計測中でも時計表示を選択できます。(計測は続行します)
停止・計測等の操作をすると自動的にストップウォッチ表示に切り替わります。


計測結果を別ウインドウに表示することができます。

計測記録の欲しい方は、
Logボタンをクリックして操作ログを表示できます。
たくさん計測して、平均を取る時などは便利かもしれません。



● マウスとキーボードの操作

マウスボタンは
ウィンドウ内のでフォームオブジェクト以外の場所に
マウスカーソルが入っているときは、

左ボタンが Start/Stop
右ボタンが Lap/Reset

の役割をします。
通常は、マウスだけで計測・ラップ・リセットの動作ができます。

ご使用のブラウザによっては、この機能は使えない場合があります。

キーボードショートカットは
ドキュメントにフォーカスが入っているときは、キーボードの
以下のキーでそれぞれの機能使えます。

スペース Start/Stop
エンター(リターン) Lap/Reset
1 100分の1秒計測
2 24フレーム毎秒計測
3 30フレーム毎秒計測
4 ドロップフレーム計測
5 25フレーム毎秒計測
M 時計表示・ストップウォッチ切り換え
エスケープ ラップエリア消去
A プログラムについて
L 操作ログの表示

つまり、キーボードだけですべての操作ができます。

ご使用のブラウザによっては、この機能は使えない場合があります。
また、日本語入力がオンになっていると操作が効かない場合があります。



● チューニングしよう

スクリプトは、htmlから呼び出す形で作ってあります。
付属のテンプレートを書き直したり。スタイルシートを指定して
お好きなデザインのストップウオッチが作れます。
また、以下のオプションは、比較的簡単に調整できます。
起動時の状態を自分の環境に合わせて変更して、使いやすくして下さい。


**** htmlを書き直しますので、テキストエディタかスクリプトの扱えるHTMLエディタを用意して下さい。

** やる前に一応バックアップを取っておいた方がいいと思うよ
**…分かってるって?

何も装飾を加えていないHTMLファイル"SWbase.html"を
テンプレートとして同梱してあります。
これをベースに書き換えるのが良いかと思います。

ブラウザで開くと以下のようにみえます。



テキストエディタまたは、HTMLエディタ等で開いて下さい。


1. 初期状態の計測モードを変える

開いたスクリプトから以下の行を検索して内容を書き換えます
<!--初期 計測フレームレートです。-->
<input type="hidden" name="RATE" value="24FPS">

設定できる値は以下の通りです、アルファベットは大文字のみで、
リストにない値を与えると100分の1秒になります。

24FPS 1秒あたり24フレーム
25FPS 1秒あたり15フレーム
30NDF 1秒あたり30フレーム(ノンドロップ)
30DF 1秒あたり30フレーム(ドロップ)
RT 100分の1秒(=デフォルト)
(数字) 1~100までの任意の数字(整数のみ)


数字のみで指定するとそのフレームレートになります。
100よりも大きなの数値を指定すると100分の1秒になります。


2. 初期状態を時計ではなくストップウォッチにする

開いたスクリプトから以下の行を検索して内容を書き換えます

<!-- オープン時点の表示モード ストップウオッチ(watch)か時計(clock)か -->
<input type="hidden" name="MODE" value="clock">

<input type="hidden" name="MODE" value="watch">


3. 時計を24時間表示にする

開いたスクリプトから以下の行を検索して内容を書き換えます

<!-- 時計の表示モードです。12時制か24時制を指定します。-->
input type="hidden" name="ClockOption" value="12">

input type="hidden" name="ClockOption" value="24">


4. ラップ表示を増やす(減らす)

開いたスクリプトから以下の行を検索して内容を書き換えます


<!--ラップの最大数です。ラップ欄と数を合わせておいて下さい。-->
<input type="hidden" name="MaxLap" value="4">

数字を変えた場合は、フォーム内のラップを受け取るテキストオブジェクトも
あわせて数を変えてください。
サンプルでは、フォームの下側に以下のように入っています。

<!--ラップ欄-->
<input type="text" size="12" name="lap0">
<input type="text" size="12" name="lap1">
<input type="text" size="12" name="lap2">
<input type="text" size="12" name="lap3">

lap0 からはじまって 1 2 3 … (ラップの総数)-1番まであらかじめ作っておいてください。


5.画面の色・デザインをを変える

HTMLファイルなので、お好きな編集ソフトでお好きなデザインに変更してください。
動作のために、以下の条件は変更しないでください。

フォームの名前
nas_SW

値を 読み取る/表示する オブジェクトの名前
ClockOption
MODE
MaxLap
RATE
status
nas_Ri_base
nas_Ri
nas_RATE
nas_display
lap0 … 設定したラップメモリの数だけ

上にあげた名前のオブジェクトが、必ず呼び出し側にあるようにしておいてください。
デザイン上消したい場合は、その名前のオブジェクトを
<input type="hidden" name="○○">
という風に隠しオブジェクトにしてください。

(本体スクリプトを改造する場合は、そのかぎりではありません。不要なオブジェクトは取っ払って下さい。)


さあお好きな変更ができたら、ファイルを保存して起動してみましょう。
うまくできたかな?


てなかんじです。

ただのストップウォッチです。
市販のストップウォッチとの差は、24コマモードや、30コマモード等の
フレーム計測モードがあるくらいです。



一コマ以下の時間単位は切り捨てです(当然ですが・・)


ドロップフレームのカウントは、NTSCの規格に準拠しています。
フレーム総数は、29.97 fps で計測して、0分 10分 20分 30分 40分 50分 以外の
毎正分冒頭の 0秒0フレームと 0秒1フレームをドロップカウントする方式です。
モチロンお気づきかと思いますが、これができたからといって、
ストップウオッチとしては、何のメリットもありません。
ちょっと、変な感じにしたかったので付けてみたのです。ああ、無意味

お好きな計測モードで ばんばん計測してください。


============= ふろく ===================== プログラム仕様

プログラム名
簡易ストップウォッチ Stop Watch(javascript版)

ファイル名
nasSW.js
使用言語
javascript
動作条件
javascriptを内蔵したHTMLエージェント

プログラムの用途
時間計測
最小計測単位
1/100 秒

表示系列
切り替え可能
100分の1秒
24コマ毎秒(ムービー)
30コマ毎秒(ノンドロップ 30fps)
30コマ毎秒(NTSC準拠 ドロップ 29.97fps)
25コマ毎秒(PAL)
ユーザ指定により1から100(任意)

計測仕様
システム毎の最小時間単位を記録して計測
選択された表示系列にしたがってタイムコードを形成して
出力。

その他の仕様
ラップ保持機能つき 標準4ラップ(増減可能)
時計表示機能付
操作ログを表示可能





重要なご注意:
このストップウォッチは、簡易使用に留めて下さい。
プログラムの動作仕様上、OSのイベント管理に支配されますので、

計測結果の厳密な保証はできません。

さらに javascriptは、リアルタイム性が低いのでわりと簡単に
イベントが遅延して困った状態になります。

通常のデスクトップで使用する際は、計測誤差は許容範囲に
納まりますが…
ま、あまり期待はできないのです。

バグは、あらかた取ったと思いますが…きっとまだあります。
発見してくださった方は、どうぞお知らせください。
直せる限りは 修正します。

バグというわけではありませんが、今回のgoogle gadget対応を機会に
textを読みだし専用 に buttonをマウス操作のみに制限しました。
ちょっぴり使いやすくなったかしらん?
あと、微妙にショートカット変更

みなさまの感想をお待ちしております。


2007/01/10 Nekomataya/kiyo


著作権について
本プログラムの著作権は、私「ねこまたや(屋号)」がこれを有します。
私は、このプログラムの使用に際しては一切の制限を行いません。
何人であれ、このプログラムをダウンロードしたかたは自由に、
再配布・使用・販売・改造等を行う事ができるものとします。
私はこのプログラムおよびプログラムの生成したデータを使用したことによって
起きるいかなる、事故・損害または、他の不利益に対しても責任を負いません。

Nekomataya/kiyo 2007
2001 01 10 Stop Watch(google gadget対応版) ねこまたや