CGIを使ってフォームに入力した値を計算する
作成した背景
自分はギターが好きなのだが、BPM毎にディレイタイムの計算をするのが面倒くさいので雑に設定をしていた。
しかし、ある程度は正確に刻みたいと思いディレイタイムを計算するプログラムを作ることにした。
実行結果
こちらからどうぞ!
仕様
HTMLのテキストボックスに入力したBPMをPOSTして、ディレイタイムの計算結果を出力する。
工数
Python: 2h
php: 1h
※ほとんど調査とテストに時間を使っており、実装はあまり掛かっていない。
実装
共通内容
入力フォームとなるHTMLは共通するのでここに記述する。
<html>
<head>
<meta charset="utf-8">
<title>BPMからディレイタイムを計算する</title>
</head>
<body>
<h1>BPMからディレイタイムを計算する</h1>
<p>
BPMを入力して計算ボタンを押すとディレイタイムが表示されます。<br>
付点8分音符のディレイを作りたいときにお使いください。
</p>
<form action="./cgi-bin/delaytimecalc.php" method="POST">
<input type="text" name="bpm" value="" /> BPM<br>
<input type="submit" name="submit" value="計算する"/>
</form>
</body>
</html>
Python
XREAにアップロードしたがなぜか実行できなかった。
現在、XREAの公式サイトに問い合わせ中ではあるが、解決したら加筆する。
参考情報
XREAの仕様
ファイルやディレクトリのパーミッションの設定は問題ない気がする。
拡張子を.pyではなく.cgiにせよというブログもあったのだがどれが合っているのか判断できない。
公式サービスに直接問い合わせてみる。
PHP
こちらはXREAにアップロードして実行できたので代替案として現在稼働させている。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>付点8分音符のディレイタイム</title>
</head>
<body>
<p>
<?php
print "BPMが" .$_POST['bpm']. "のときエフェクターのディレイタイムを下記の様に設定してください。";
?>
</p>
<table border="1.0">
<tr>
<th>音符</th>
<th>ディレイタイム</th>
</tr>
<tr>
<td>付点8分音符</td>
<td>
<?php
$delaytime = 60 / intval($_POST['bpm']) * 0.75 * 1000;
print $delaytime . " ms";
?>
</td>
</tr>
</table>
</body>
</html>
感想
今後
FLASKなどを使ってWebサービスを組んでみたい。
疑問点と課題
XREAでも使えるという記事もあったが、サーバをレンタルするサービスでないと使えないという逆の意見もあった。
原始的にはPythonだけでも組めそうではあるが、ライブラリを使えた方が楽そうではある。
レンタルサーバに最初から組み込まれているライブラリならば使えるが、入ってはいないライブラリは自由に使えないのでは?という疑問点から、サーバーを借りるサービスを使った方がいいのでは?という気持ちを持っている。
ただ、XREAでライブラリもインストールできるという意見とそうでない意見で分かれているので、どこが境界線なのか?
自分はどの程度で要件的には満たせそうなのか今後も探ってみたいとは思う。
ただ、現状はよく分かっていないのが正直なところ・・・。
実は公式サービスでは謳ってはいないが、仕組みを利用すればできるとかそういう裏技的なことなのだろうかなど。
※この手の問題は今後、特に敷き詰めたことをしようと考えているので解決したい。ITエンジニアはもうやらんけど経験としてね。