2021-m7: Gnuplot と chokidar のインストール(macOS) : BYOD PC のセッティング

はじめに

第二学年の情報処理で gnuplot を用いてグラフを描画しました。 第二学年では gnuplot の中でコマンドを入力してグラフを作成していましたが、第三学年ではファイルを用いたグラフ作成方法を学習します。 その際、ファイル更新に同期してグラフが再作成される仕組みを導入します。

gnuplot のインストール

第二学年では gnuplot の eps ターミナルを利用していましたが、第三学年からは 基本的に pdf ターミナルを利用します(PDF の方が LaTeX のコンパイルが速いことと、Finder で直接中身が見えるためです)。

とりあえず通常の手順で gnuplot をインストールします。 Brewfile に以下を追加し、brew bundle -vを実行してください。 gnuplot は依存関係が深くかなり大量のパッケージがインストールされます。

brew "gnuplot"

chokidar のインストール

次に、ファイル保存を監視する chokidar をインストールします。 chokidar は node.js で動作するアプリなので、まず node.js と yarn をインストールします。 yarn を入れれば node.js は依存関係でインストールされるので、yarn のみをインストール指示すればよいです。 最近は、yarn で nodejs が自動で入らないらしいので、以下の2行を入れてください。

brew "nodejs"
brew "yarn"

その後、node.js の global に chokidar-cli をインストールします。

yarn global add chokidar-cli

ここで、chokidar とコマンドを打って説明書きが出れば成功です。

Gnuplot の自動実行テスト

Gnuplot の自動実行テストをやってみます。 最初にテスト用のフォルダを作成し、code で開きます。 場所はどこでもよいですが、ここでは ~/Documents/gnuplotTest とでもしておきます。

mkdir -p ~/Documents/gnuplotTest
code ~/Documents/gnuplotTest

次に、gnuplot でグラフを作成するシェルスクリプトを作成します。 まず空のファイルを作成し、実行属性を付けます。

touch gnuplotTest.sh
chmod +x gnuplotTest.sh

ここで、この gnuplotTest.sh を監視し、変更があったらシェルスクリプトを実行するように設定します。 最初の引数が監視するファイル名(ワイルドカードも利用可能)となり、-c の後ろが実行するコマンドになります。 カレントディレクトリのシェルスクリプトなので、「./」を付けるのを忘れないでください。

chokidar gnuplotTest.sh -c "./gnuplotTest.sh"
Watching "gnuplotTest.sh" ..

コマンドを実行すると Watching と出て、監視していることがわかります。 この状態で gnuplotTest.sh に以下のスクリプトを記載する。

#!/bin/sh

FNAME=${0%.sh}
PDF=${FNAME}.pdf

gnuplot <<EOF
set term pdf color
set output "$PDF"

plot sin(x) t 'f(x)'
quit
EOF
open $PDF

ここで、スクリプトを簡単に説明します。 FNAME には $0 で示されるスクリプト自身のファイル名から「.sh」を取り除いた文字列が入ります。 PDF はこの名前に .pdf をつけた名前が入ります。 今回の場合は、gnuplotTest.pdf という名前になります。 gnuplot の後ろに書かれた <<EOF はヒアドキュメントと呼ばれる機能です。 次の行から EOF までの行が gnuplot への入力となります。 gnuplot 内では、PDF ターミナルを設定し、そのファイル名を先ほど設定した $PDF 変数に設定します。 ここでは sin(x) のグラフを f(x) というタイトルで描画しています。 gnuplot の描画が終わると、macOS の open コマンドで作成された pdf ファイルが開かれます。

このシェルスクリプトを保存した瞬間、先ほど実行した chokidar がファイルの変更を認識します。 その結果、chokidar がシェルスクリプトを自動実行します。 コピーミスがなければ、自動的にプレビューで PDF ファイルが表示されるはずです。 この時のスクリーンショットを以下に示しました。

試しに、sin(x) の部分を別の関数に書き換えて保存してください。 保存した瞬間にグラフが自動的に変更することが確認できます。 なお、chokidar を止めるには、「control-c」を押してください。

chokidar による自動実行

これより後は授業で実施するので、ここまでとする。


hkob.hatenablog.com