Automatorの自動処理や正規表現などMacで簡単なプラグラム習得まとめ

AI時代のシンギュラリティーが起こってからでは遅い、自動処理の基本である自動化処理や正規表現を身につけて、10年以内に訪れると言われているAI時代到来に備えようと思いまとめました。AIを作るという高いハードルを目指さなくても手元のPCやMacのでどうにか、まずは手頃にAutomatorを使って簡単な自動処理ができないかの試行錯誤ノートです。

Automatorについて

Macを利用する上で自動化処理をどうするかはAutomatorがその分野であろうと予感はしていたものの実際に触る時間がなく放置していた。今回の投稿を機会に初めてさわったのだが、なぜ今まで使わなかったのだろうかと後悔するところから始まった、それほどの優れものだ。

Automator公式ガイドへ

automator

Automatorでできそうな自動化処理

まずは、普段の作業でAutomatorを使った自動化処理にはどんなものがあるのか。

  • 新規フォルダをつくるとファイル名が日付になる
  • 新規ファイル名に日付をつける(参考
  • FTP送信後、Mailで作業完了メール(参考
  • 時間指定でメール送信(参考
  • 決まったタグ、文字列を一気に変換

実際に作った自動化処理

  • 客から受けたDocxXelxデータを、Zipxファイルにリネームし解凍後、mediaファイルをデスクトップに取り出し、元ファイルを削除(後述:「docxから画像取り出し」)
  • ファイル、フォルダ先頭に日付を入れる(後述:「画像を480px、960pxにリサイズ」)
  • iCloudの特定フォルダに保存すると、Mac外付けHDDに自動保存される

Automatorのアイコン変更方法

アプリを作ったからにはReadmeやオリジナルアイコンだって作りたい。その方法。

  1. 事前に500px正方形のアイコンを作っておく
  2. プレビューで開いてコピー
  3. appファイルの「情報を見る」選択
  4. アイコンをクリックしペースト

スポンサードリンク

Automatorの作例

手前味噌ですが、いくつか便利なAutomatorアプリをつくったのでダウンロードして試してみてください。特に、リサイズや日付自動付けはとても便利です。

⚙️フォルダアクション

「特定のフォルダにデータを入れた時、自動的に別のフォルダに移動」というアクションを作った。iCloudに共有フォルダを作り、そこにiPhoneやiPadなどのモバイル端末から保存すると自動的にMac接続の外付けHDD側に保存される。この自動処理がないと、毎回わざわざフォルダ移動のルーチンを人間がやらされることになる。こういう時こそ自動処理の出番だろう。

アクションの説明

  • iCloudの特定フォルダにデータが保存されると、Macの外付けHDDに自動移動
  • 移動が終わると、移動先のフォルダを表示
Automatorのフォルダアクション
Automatorの画面

この単純なアクションだけでとても作業が楽になった。

⚙️docxから画像取り出し

OfficeのWordExelファイルから画像だけを取り出すシンプルなアプリをAutomatorで作ってみました。ささっと写真を抽出したいときに使えます。

docxから画像取り出し
docxから画像取り出し
xlsxから画像取り出し
xlsxから画像取り出し

アプリ説明

  • OfficeのWord(docx)、Exel(xlsx)ファイルから画像だけを取り出すシンプルな2つのアプリです。
  • アプリはデスクトップでもアプリケーションフォルダでも好きな場所に保存してください。
  • 抽出された画像データはデスクトップに「media」フォルダにまとめられます。
  • ⚠️解凍アプリ「Stuffit Expander」が必須です。(16.2以降のバージョンではzipxを正しく解凍できないようです。正常な動作のためにはver16以前の Stuffit Expander をご利用ください
Automatorアプリ「docxから画像取り出し」(MacOS)
Zipファイルを解凍してご利用を

⚙️大きな画像を480px、960pxにリサイズ

これはFinder上で画像ファイルを右クリックでサービスを選ぶだけで画像がリサイズされる簡単なアプリ(Finderサービス)です。一つの画像だけではなく、一度に複数の画像を選ぶこともできます。わざわざPhotoshopを立ち上げる紛らわしさがなく、簡単シンプルに画像サイズ変更ができ便利です。

インストール方法

  • 下記ボタンからダウンロードしたZipデータを解凍すると、2つのアプリになります。
  • 一つづつダブルクリックし、表示されたメッセージより「インストール」を選んでください

使用方法

  1. Finderで画像を選択(1つでも複数でもOK)。
  2. ファイルタイプは「プレビュー」で選べるピクセル画像(JPG、PNG、GIF、たぶんPSDでも)ならOKです。
  3. 右クリック > サービス > 「画像を480pxに」or「画像を960pxに」を選択
  4. オリジナル画像と同じ階層に「元のファイル名_480px.jpg」とリネーム保存され、元ファイルは消えません
Automatorアプリ「画像をリサイズ」のダウンロード
Zipファイルを解凍してご利用を
ショートカット化したい場合

こうしたAutomatorをショートカット(例: control + shift + ⌘ + 9)登録して一発で起動できればとても楽ちんだ。下の章で後述してるのでご参考に。

⚙️ファイル名に日付を追加

ファイル整理するうえで、データ名に日付をつけることってよくありますよね。今日は何日で、それを連番にするとこうで、それをファイル名の冒頭に入力…こんな作業こそAutomator向けの仕事ですから人間がすることは金輪際ありません! 複数選択にも対応してるので一気に変換できます。

インストール方法

  • 下記ボタンからダウンロードしたZipデータを解凍。
  • ダブルクリックし表示されたメッセージより「インストール」選択。

使用方法

  1. Finderで任意のファイルを選択(1つでも複数でもOK)。
  2. 右クリック > サービス > 「ファイルに日付を追加」を選択。
  3. これで日付がつきます。
Automatorアプリ「ファイル名に日付を追加」のダウンロード
Zipファイルを解凍してご利用を

⚙️WordPressにログイン(⚠️失敗作)

下記の一連の動作を自動化する。できるなら音声コマンドで実行。

うまく動かない

MacOSによってはWpログイン画面でリターンキーを押すor押さないなど挙動に違いがあり、うまく動かない。条件分岐を使えばできるかもしれないが、今のところ使わずにいます。

動作

  1. サファリの新規ウィンドウを開く
  2. アドレスバーにログインURLを入力し移動
  3. IDとパスワードを入力しリターン

音声コントロールのバグ

音声コントロールにはfnキーのショートカットが使えないなど、次のようなバグがある。

  • fnキーのショートカットが使えない(「システム環境設定 > キーボード > キーボード > キーを押して〇〇(例:現在は「入力ソース変更」を選び外国語を選択できるようにした)」あるいは「「システム環境設定 > キーボード > キーボード > 音声入力 > ショートカット > fnを2回押す」の二つで設定できるが干渉していないか?バグの原因か? )
  • オーバーレイ番号が強制表示されてしまう

作成方法とポイント

  • Automatorで作成し実行テストができた。
  • IDとパスワードの入力はAppleScriptのコードが必要。
  • 音声入力コマンドはアクセスビリティー(Fnキー2度打ちで起動⚠️新バージョンではできないので注意)を利用した補助的なもので、Siriライクな操作は現時点でできない。これは次期MacOSバージョンでは実装され強化される見通しなので、待ち。
  • 現時点、Siriで起動できないので、システム設定「起動項目」や、アプリ化で様子見

音声コントロールと音声入力の違い

  • 音声コントロール(優先度高い)
    音声でOSをコントロールすること。
    「システム環境設定 > アクセスビリティ > 音声コントロール」で設定。
    音声入力側がOFFであっても、こちらが優先され、音声入力できる。
  • 音声入力(優先度低い)
    音声でテキストを入力すること。
    「システム環境設定 > キーボード > 音声入力」で設定。
    音声コントロール側が有効の場合、こちらのON・OFFは無視される。

Fnキーが使えないバグ
Fnキー2度打ちで音声コマンド有効化は、MacOS ver12(2022.7現在)では利用できず、常にマイクが表示される。

簡単な音声コマンドON・OFF切り替え
fnキー2回がなぜか使えないので、次のようにsiriに頼むのが簡単だ。
👉「hey Siri, 音声コマンドをONにして」
👉「hey Siri, 音声コマンドをOFFにして」

⚙️SDカードをHDに日付フォルダで保存

GoProで撮影した動画データを、その都度HDに日付をつけて保存するのはとても面倒。なのでAutomator化したもの。Volumeフォルダへの「フォルダアクション」化に挑戦したが、テスト動作では成功するが、単独ではうまく動作しない。なので、アプリアクションとクイックアクションの2つ作った。

動作

  1. SDカード名は「GoPro」とすること
  2. その中の100GOPROを探し、HDにコピー
  3. フォルダ名を任意のコース名にするアラート
  4. そのフォルダ名の先頭に日付追加
  5. フォルダを表示
  6. SDカードをアンマウントし、取り出せるように
  7. 終了通知
どれを選択中でもSDカードを探しに行く

クイックアクションは、一番初めの入力を無効としている。有効にするとSDカードのルートフォルダもコピー対象に含めてしまい、リネーム時にエラーとなる。SDカード内だけを探すようにしたいが、方法が不明だったので、先頭の入力を無効とした。なので、何を選んでもSDカード内の100GOPROをコピーする。

Automatorのショートカット登録

頻繁に使う画像のリサイズ等、キーボードショートカットですぐに命令を発動できればとても楽だ。ショートカット登録の方法は以下の通り。

  1. MacOSの「システム環境設定」アプリを開く
  2. キーボード」を選択
  3. ショートカット」タブを選択
  4. 左の一覧から「サービス」を選択
  5. Automatorで作ったアプリを探す
  6. ショートカットキーを登録(例: control + shift + ⌘ + 9)

ショートカットの一例

ショートカットは他と重複されることが心配だ。下記のように「Shift + Option + ⌘」の3ボタン使用で問題なかったので愛用している。

命令ショートカット
画像を980pxにリサイズShift + Option + ⌘ + 9
画像を480pxにリサイズShift + Option + ⌘ + 6
ファイル名に日付を追加Shift + Option + ⌘ + 0
魚拓Option + ⌘ + 2

iPhoneショートカットapp

ややこしいのだがiPhoneに「ショートカット」という名のApple標準の自動処理アプリがある。これもとても便利なので、特に便利なものをここに紹介します。

画像合成

正規表現(メタ文字)

正規表現について基本的な説明表です。(⚠️Windowsでは「¥」ですがMacでは「/」である点とか、色々編集が未完成でしが、今後発見し次第追加したり修正していきます)

よくつかう使用例

「¥10,000」を「10,000円」に変更したい

  • 検索:¥([0-9,]+)
  • 置換:$1円
正規表現
検索画面での正規表現の使用例

〇〇➡️「〇〇」とは

  • 検索:^(.+?)$
  • 置換:「$1」とは
目的正規表現入力例
行頭^この記号は「キャレット」と呼び、テキスト中不可視となっているが、正規表現では^で表される、
改行/rこの記号は「キャレット」と呼び、テキスト中不可視となっているが、正規表現では^で表される、

ワイルドカード

検索でよく使われるワイルドカード(流動的な文字関数という意味かな)と呼ばれる関数です。

コード説明
?1文字
*文字数関係なし
記号意味
.任意の1文字
*直前の文字の0回以上の繰り返し*1
+直前の文字の1回以上の繰り返し*1
?直前の文字は省略可能*1
*?直前の文字の0回以上の繰り返し*2
+?直前の文字の1回以上の繰り返し*2
??直前の文字は省略可能*2
[ ~ ][ ]の中のどれか1文字*5
[^ ~ ][ ]の中に無い1文字*5
( ~ | … )~か…かどっちか
{n}直前の文字のn回の繰り返し
{min,max}直前の文字のmin以上max以下の繰り返し(min、maxは省略可能)*1
{min,max}?直前の文字のmin以上max以下の繰り返し(min、maxは省略可能)*2
\wアルファベット、数字、アンダスコh( _ )のhれかの1文字
\Wアルファベット、数字、アンダスコア以外の1文字
\d数字1文字
\D数字以外の1文字
\s半角スペース、タブ、改行のどれか1文字
\S半角スペース、タブ、改行以外の1文字
\n改行
\tタブ
\\\記号
( ~ )( )内を1文字扱い

位置系

記号意味
^行の先頭
$行の末尾
\<単語の先頭
\>単語の末尾
\b単語の先頭か末尾
\B単語の先頭、末尾以外
\Aファイルの先頭
\zファイルの末尾
\G直前の一致文字列の末尾

置換文字列で使える正規表現

記号意味
\0一致した文字列全体
\1 \2 … \9それぞれ検索文字列の1~9番hの ( ) に一hした文字列*4
\l次の1文字を小文字にする
\L ~ \E挟まれた文字列を小文字にする
\u次の1文字を大文字にする
\U ~ \E挟まれた文字列を大文字にする
\n改行
\tタブ
\\\記号

*1 最長一致と呼ばれ、条件に合う一番長い部分に一致します。
*2 最短一致と呼ばれ、条件に合う一番短い部分に一致します。
*3 「位置系」の記号は「特定の文字列」ではなく「特定の位置」に一致します。
*4 ( ) の順番は ( が現れる順番です。
*5 [ ] 内で正規表現は使えません

文字系

特殊記号意味例の意味
.任意の1文字h.thot とか hit とか hat
*直前の文字の0回以上の繰り返しhe*lphlp とか help とか heeelp
?直前の文字は省略可能he?lphlp または help
[ ~ ][ ]の中のどれか1文字[新嬉楽]しい新しい または 嬉しい または 楽しい
[a-c]aからcまでの1文字問題[a-c]問題a または 問題b または 問題c
( ~ )( )内を1文字扱い(おら)*。おら。 とか おらおらおらおらおら。

高度な例

検索文字列置換文字列意味
<H1>.*?</H1> <H1>で始まり</H1>で終わる文字列を検索
inter(national|net) internationalinternet を検索
^はろー。$ はろー。 という行を検索
\<inter\w*\> inter で始まる単語を検索
<H1>(.*?)</H1><H1>\u\1</H1><H1>〜</H1> の中身を大文字に変換

参考:http://gimite.net/help/devas-ja/all_regex.html

この記事を書いた人

mojigumi

「もじぐみ」の代表、コウです。
専門は企画・出版・編集・印刷、Webデザインと管理。最近はブログ、動画、3DCG、AR、LINEスタンプ等のコンテンツ配信にも力をいれ、自分自身もランニングアートでコンテンツ化に努めています。