Help us understand the problem. What is going on with this article?

AppleScriptでかゆいところに手をのばす!

More than 5 years have passed since last update.

新卒1年目エンジニアの川村です。
普段、Ruby on Railsでひいひい言っている私ですが、今回は普段馴染みのないApple Scriptについて書きたいと思います。

AppleScriptとはなんぞや?

AppleScriptとは、文字通りアップルが開発したMac OS用のオブジェクト指向のスクリプト言語です。

つまり、AppleScriptとはMac OSや市販のソフトウェアに対し直接命令をし、自動で意図した処理を行ってくれる言語です。

日々行うルーティン作業や、決まりきった作業、環境設定などありましたらAppleScriptでその処理を記述し、ぱぱっとそのスクリプトを実行してしまった方が楽です。

具体的に、AppleScriptでは以下のようなことができます。
・バッチ処理
・アプリケーションのアクションを自動操作
・ファイル変換およびファイル操作
・所定時刻のタスク実行
・データベースと他のアプリケーションの間の情報転送
・複数のアプリケーションのアクションを連結して一連の関連タスクを実行させることにより自動化ワークフローを作成
・Xcodeでのアプリケーション開発にAppleScriptを利用可能

開発環境

まず、AppleScriptを使う上でとりわけ何かをダウンロードする必要はありません。基本的に全てはじめから皆さんのMacに必要なツールは揃っています。

AppleScriptエディタ

AppleScript専用の簡易エディタです。小さなスクリプトであれば、AppleScriptエディタのみでこと足ります。

Automator

AppleScriptを活用するツールで高度なワークフローを簡単に作り実行できる。

Xcode

こちらはダウンロードが必要ですね。XcodeでもAppleScriptを使用することが出来ます。本格的なアプリをAppleScriptで作成する場合はXcodeを使ってみると良いと思います。

早速書いてみる

まず、AppleScriptの記法の特徴としてすごくリッチです!プログラミングというよりかは中学英語の簡単な英作文を書いている感覚に近いです。

高級言語の分、若干動作が遅いそうです。

というわけで、まずChromeを立ち上げてFacebookにアクセスするスクリプトを書きたいと思います。

tell application "Google Chrome" #Chromeに声をかける。
  activate #Chromeを起こす。
  open location "http://www.facebook.com/home.php" #ChromeにFBにアクセスして頂く。
end tell

終りです笑

このスクリプトを以下の形式で保存します。
今回は「アプリケーション」形式で保存しました。

「アプリケーション」形式で保存すると、以下のようなアプリが作成されます。

このアプリを実行すると、Chromeが立ち上がりFacebookにアクセスします。

バッチ処理をAppleScriptのみで行う。

今回は、バッチで処理もやってみました。
指定した時間に仕事をサボる誘惑をしてくるアラートがでて、その誘いにのるとYoutubeに飛んでしまうという末恐ろしいアプリです。笑

on idle #on idle/end idleで囲う事でその処理を常駐させることができます。
  set nowTime to the hours of the (current date) # 現在日時の時間の部分を取得
  if nowTime is 11 then
    display dialog "You need a rest, don` t you?" buttons {"No, I don`t.", "Yes, I do"}
    set tmp to result #クリックのデータを取得
    set btn to button returned of tmp # 取得したクリックデータからユニークの値を取得(今回はボタンの文字列)
    if btn = "Yes, I do." then
      tell application "Google Chrome"
        activate
        open location "https://www.youtube.com"
      end tell
    end if
  else if nowTime is 19 then
    display dialog "You must be tired, aren`t you?" buttons {"No, I`m not.", "Yes, I am"}
    set tmp to result
    set btn to button returned of tmp
    if btn = "Yes, I do." then
      tell application "Google Chrome"
        activate
        open location ""http://www.facebook.com/home.php"
      end tell
    end if
  end if
  return 3600 #1時間ごとに実行
end idle

1時間ごとにスクリプトが実行され、11時の誘惑に乗るとYoutubeに、19時の誘惑に乗るとFacebookにアクセスします。

1つ、注意点として、コードの修正などをした際に再度実行させたいという場合は、1度スクリプトのプロセスを切ってから実行することをオススメします。でないと、ちゃんと実行されないので。

まとめ

初めてAppleScriptを触ってみたのですが、とても簡単ですぐ実行もできるので楽しかったです。
まだペーペーのエンジニアに自分がいうのもあれですが、これならあまりプログラミングに馴染みのない方でも簡単にプログラミングを組めると思います。

日々、同じ作業で消耗している方、ぜひAppleScriptで効率化を図ってみてはいかがでしょうか?

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away