今回ははじめての試みですが、Macでの時短ネタです。
MacにはAutomatorというアプリケーションが標準でインストールされています。このAutomatorは、プログラミング不要で簡単な自動化を行うことができるツールです。Automatorを使用することで、手動で行っていた繰り返し作業などを自動化することができ、作業効率を向上させることができます。
Windowsで言うところのPower Automate for desktop みたいな機能ですね。
今回は、このAutomatorを使ってcsvファイルの文字コードをShift_JISに変換するに挑戦します。
やりたいこと
ある銀行の総合振込をする際に、指定フォーマットのcsvファイルを読み込ませるのですが、このファイルの文字コードはShift_JISである必要があります。
ところが、Google スプレッドシートからダウンロードされるcsvファイルは、文字コードがUTF-8であるため、csvファイルの文字コードをShift_JISに変換する必要があります。
これまでは、ダウンロードしたcsvファイルをテキストエディタで開き、手動で文字コードを変換して保存してきました。わずか数秒で終わる作業ですが、これが地味に面倒で意志力を消費します。
そこで、MacのAutomatorを使用することで、簡単にShift_JISに文字コードを変換することができないかと挑戦してみました。
参考にしたサイトとつまづき
“Mac Automator 文字コード 変換” みたいなキーワードで調べたところ以下の記事を発見しました。
しかし、この記事そのままではエラーが出てしまいうまくいきませんでした。
エラーになったポイントはシェルスクリプトの
/usr/local/bin/nkf -s --overwrite "$f"
という部分で、理由はMacのCPUがM1などのAppleシリコンになって、homebrewやnkfのインストール先が変わってしまったからのようでした。
パスを変更してファイルの文字コードをShift_JISに変換に成功
ここからは実際の手順を紹介していきます。
MacにHomebrewをインストール
Homebrewは、MacにおいてCLI(コマンドラインインターフェイス)からソフトウェアのパッケージ管理を行うためのツールです。はじめての方は、まずHomebrewをインストールする必要があります。「Homebrewをインストールする方法」に関しては、検索すると沢山の記事が出てきますので、ぜひそちらを参考に。
nkfをインストール
続いて、nkfという日本語の文字コード変換を行うためのツールをインストールします。nkfを使用することで、UTF-8やShift_JISなどの日本語の文字コードを相互に変換することができます。
Homebrewが無事インストールされていれば、ターミナルから以下のコマンドを実行してnkfをインストールできます。
brew install nkf
nkfがインストールされたかは、引き続きターミナルで以下のコマンドを実行すればわかります。
nkf --version
Automatorでクイックアクションを作成する
Automatorを開き、クイックアクションを新たに作成します。
左側のライブラリの一覧からユーティリティ > シェルスクリプトを実行を選択
ワークフローが受け取る現在の項目をファイルまたはフォルダを選択
シェルを /bin/bash 入力の引き渡し方法を引数としてを選択
デフォルトで表示されているスクリプトを削除して以下のコードを貼り付けます。
for f in "$@"
do
/opt/homebrew/bin/nkf -s --overwrite "$f"
done
先程紹介した記事と違う部分は、AppleシリコンのMacになってHomebrewのインストール先が/optに変わっており、それにともないnkfのインストール先も/opt/homebrew/binとなっている点です。
nkfのオプション
今回はShift_JISに変換したかったため -s オプションを指定しました。また –overwriteは元のファイルを上書き保存するオプションです。
nkfには、以下のようなオプションがあります。
- -e: 出力文字コードをEUC-JPに指定する。
- -s: 出力文字コードをShift_JISに指定する。
- -j: 出力文字コードをISO-2022-JPに指定する。
- -w: 出力文字コードをUTF-8に指定する。
- -Lu: ファイルの改行コードをUnix形式(LF)に変換する。
- -Lw: ファイルの改行コードをWindows形式(CRLF)に変換する。
- -r: 半角カタカナを全角カタカナに変換する。
- -Z: 全角スペースを半角スペースに変換する。
nkfのオプションなど基本操作は以下の記事を参考にさせていただきました。
nkfでファイル一括UTF8に変更
【 nkf 】コマンド――文字コードと改行コードを変換する
おわりに
地味な時短ですが、これでスプレッドシートからダウンロードしたcsvファイルを右クリックでShift_JISに一発変換できるようになりました。
またAutomatorでのシェルスクリプトの使い方やnkfに関して学ぶきっかけになって個人的には満足です。