サポンテ 勉強ノート

サポンテの勉強ノート・読書メモなどを晒します。

CotEditor をストップウォッチとして使う

はじめに

 時間を計測するストップウォッチですが、計測するということは即ちどこかに記録するということで、いっそそのままテキストデータになっていると嬉しい、のではないか。

 ということで、CotEditor から実行できるスクリプトとしてストップウォッチがわりに使えるものを作ってみました。

使い方

  1. CotEditor で新規ドキュメントを開きます。
  2. はじめに、ストップウォッチをスタートさせるスクリプトを実行します。
  3. 次に、ラップタイムを記録するスクリプトを実行します。

実行結果

  1. スタートのスクリプトを実行すると、CotEditor で編集中のドキュメントの末尾に「00:00.000」と出力します。
  2. ラップタイムのスクリプトを実行すると、スタートからのラップタイムを、同じ形式の文字列で出力します。やはりドキュメントの末尾です。

f:id:saponte:20210320103632p:plain
実行結果例

ショートカット

 それぞれのスクリプトにショートカットを割り当てたい場合は、下記のスクリプトを保存する際、ファイル名に特別な記号を付与してください。

 例えば、スタートを [Command] + [Control] + [S] にしたい場合のファイル名の例は「StopWatch_Start.@^s.php」です。「@」が [Command] に、「^」が [Control] に該当します。他のモディファイアキーは CotEditor の「ヘルプ」メニューから、「CotEditorスクリプトガイド」→「スクリプトについて」を開いていただき、「CotEditorスクリプトのファイル名規則」を参照してください。

副作用

 スタートのスクリプトを実行した時に、ユーザの「書類」フォルダの下に、テキストファイルを一つ作成します。内容はスタートした時刻文字列です。ラップのスクリプトは、このファイルを読んで差分時間をラップタイムとして出力しています。このファイルは不要になったら消してください。ファイル名は(スクリプト内に書かれていますが)「com.hatenablog.saponote.StopWatch.txt」です。

スクリプト

 以下の PHP スクリプトを、上記のように好みのファイル名で保存していただき、実行権を与えて、CotEditor のスクリプトフォルダに格納してください。

 実行権を忘れないでくださいね。

StopWatch_Start.php

#!/usr/bin/php -q
<?php
// %%%{CotEditorXOutput=AppendToAllText}%%%

echo "00:00.000\n";
file_put_contents($_SERVER['HOME'] . '/Documents/com.hatenablog.saponote.StopWatch.txt', microtime(true), 0);

StopWatch_Lap.php

#!/usr/bin/php -q
<?php
// %%%{CotEditorXOutput=AppendToAllText}%%%

$start_time = file_get_contents($_SERVER['HOME'] . '/Documents/com.hatenablog.saponote.StopWatch.txt', false);
$lap_time = microtime(true) - $start_time;

list($sec, $millisec) = explode('.', $lap_time . '');
$m = floor($sec / 60);
$s = $sec % 60;

echo str_pad($m, 2, 0, STR_PAD_LEFT) . ':' .
     str_pad($s, 2, 0, STR_PAD_LEFT) . '.' .
     substr($millisec, 0, 3) . "\n";

おわりに

 タイムキーパー的な仕事をしている人には役に立ちそうな気がしますが...そのような仕事をしていて、CotEditor を使っていて、スクリプトにも明るい人...使う人、いるのでしょうか...。

 動作を確認したサポンテの Mac では PHP のバージョンは 7.3.11 でした。