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

はじめに

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

エディタのインストール

ファイルを編集するためにテキストエディタが必要となる。このあたりは趣味の問題なので、自分の好きなものをインストールして欲しい。いくつか候補をあげるので、好きなものを選んで欲しい。

1. CotEditor

比較的軽いエディタ。コードの色付けなどはしてくれないが、ちょっとしたファイルを編集するのは簡単。ファイルの文字コードや改行コードの変更がメニューで変更できる。App Store でインストールするか、以下のコマンドでインストールできる。

mas install 1024640650

2. Xcode

すでにインストールされているエディタ。授業の後半でプログラムを作成する時にはこれを利用する。

3. Visual Studio Code

Microsoft 社が作成した軽量エディタ。パッケージ形式で色々と拡張できる。インストールしただけでは日本語が表示されないので、その方法だけ説明しておく。

brew cask install visual-studio-code

起動するとこんな感じで全て英語で表示されている。

f:id:hkob:20200418193948p:plain
Visual Studio Code 起動画面

左側の拡張機能(赤丸の部分)をクリックし、検索窓に「japanese」を入れて出てきた「Japanese Language Pack for ...」で「Install」をクリックする。

f:id:hkob:20200418194132p:plain
拡張機能の追加

再起動を求められるので確認すると、日本語の画面となって立ち上がる。拡張機能はたくさんあるので、自分で必要なものをインストールして欲しい。

f:id:hkob:20200418194434p:plain
日本語化終了

gnuplot のインストール

第二学年では gnuplot の eps ターミナルを利用していたが、第三学年からは 基本的に pdf ターミナルを利用する。ただし、現在の Homebrew でインストールされる pango ライブラリを gnuplot で利用すると問題が発生することが知られている(Gnuplot PDF Terminal Exhibits Font Issues on Mac)。

とりあえず通常の手順で gnuplot をインストール後に、pango パッケージのみを差し替える。

brew install gnuplot

gnuplot の依存関係で 1.4.4 の pango がインストールされる。以下の手順でpango を削除した後で、古い pango (1.4.3)をインストールする。

brew uninstall --ignore-dependencies pango
brew install iltommi/brews/pango

chokidar のインストール

ファイル保存を監視する chokidar をインストールする。chokidar は node.js で動作するアプリなので、まず node.js と yarn をインストールする。yarn を入れれば node.js は依存関係でインストールされるので、yarn のみをインストール指示すればよい。

brew install yarn

これまでパスのトラブルでローカルにインストールしていたが、global にインストールしてもちゃんとパスが設定されることがわかったので、global にインストールすることにした。かなりインストールは簡単になる。 次に chokidar をインストールする。chokidar は自分のホームの下にフォルダを作成し、そこにインストールすることにする。最初にそのフォルダを作成し、移動する。ここで、~ は自分のホームフォルダを示す記号である。

# mkdir -p ~/chokidar # この処理は必要なくなった
# cd ~/chokidar # この処理は必要なくなった

node.js の global に chokidar-cli をインストールする。 このフォルダに chokidar をインストールする。

yarn global add chokidar-cli

node.js の方でパスを設定してくれるので、シンボリックリンクを貼る必要はなくなった。 chokidar コマンドは ~/chokidar/node_modules/.bin にインストールされる。どこからでも使えるように、/usr/local/bin からシンボリックリンクを貼ることにする。

# cd /usr/local/bin # この処理も必要なくなった
# ln -s ~/chokidar/node_modules/.bin/chokidar # この処理も必要なくなった

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

なお、すでにローカルにインストールしてしまった学生は chokidar のフォルダを消すと同時に以下のようにして、シンボリックリンクも消してください。

rm /usr/local/bin/chokidar

Gnuplot の自動実行テスト

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

mkdir -p ~/Documents/gnuplotTest
cd ~/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 がファイルの変更を確認し、シェルスクリプトを自動実行する。タイプミスがなければ、自動的にプレビューで PDF ファイルが表示される。この時のスクリーンショットを以下に示す。試しに、sin(x) の部分を別の関数に書き換えて保存してみて欲しい。保存した瞬間にグラフが自動的に変更することが確認できる。なお、chokidar を止めるには、「control-c」を押せばよい。

f:id:hkob:20200418211659p:plain
chokidar による自動実行

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

hkob.hatenablog.com