Automatorのショートカット機能を使って爆速のGoogleコピペ検索を設定する

# はじめに
エンジニアは一般の人の50倍くらい毎日ググっている気がします。
その中でもよくやるのがエラーメッセージなどのテキストをそのままコピペしてググるやつ*1で

1. 検索したいテキストにカーソルを合わせてコピーする
2. chrome最前面に持ってくる
3. chromeの検索窓に貼り付ける
4. enterキーを叩く

の操作をします。
これ毎日やってると結構な時間の無駄だと思いませんか？ 

そこで今回はMacデフォルトのAutomatorを使って上記のステップをこんな風に
![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.amazonaws.com/0/71154/d44f7fbb-db94-3a39-0ad1-988054021c7a.gif)


ショートカット一発の:bomb:**爆速** :bomb: にできる方法をご紹介します。

*1 勿論落ち着いてじっくりスタックトレースは読んだ上でググりましょう笑

# 動作環境
* MacOS X Mojave 10.14
* Automator 2.9 (444.38)

# やり方

1. まずAutomatorを開いて、新規作成>書類の種類はクイックアクションを選択します

    ![スクリーンショット_2018_11_26_23_12.png](https://qiita-image-store.s3.amazonaws.com/0/71154/7d311f9e-60dd-4ade-cd72-3fe20d1269eb.png)

2. するとクイックアクションで選択できる様々なサービスが出てくるので、シェルで検索して　「シェルスクリプトを実行」をダブルクリックしてください。シェルスクリプトを貼り付けられるテキストフィールドが表示されます。
    ![スクリーンショット_2018_11_26_23_14.png](https://qiita-image-store.s3.amazonaws.com/0/71154/c24d58c4-ae19-0833-e8fd-4246e22e42bd.png)

3. シェルのセレクトボックスは「/bin/bash」を選択しテキストフィールドにおもむろに以下のshellを貼り付けます

    ```sh
open "http://www.google.com/search?q=$(ruby -rcgi -e 'print CGI.escape $<.read.chomp')"
    ```

    これが一体何をしているか気になったギークな方は[補足](https://qiita.com/kazuooooo/items/eefd88a2a852a5daf08d#automator%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%8C%E4%BD%95%E3%82%92%E3%82%84%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B)をご覧ください

4. 貼り付けできたらクイックアクションを保存します。名前はなんでも良いです。今回は「extreme_google_it」にしておきました。

    ![スクリーンショット_2018_11_26_23_29.png](https://qiita-image-store.s3.amazonaws.com/0/71154/cc138348-f865-d6d4-53fc-a6734f2ff1e0.png)

5. 続いてショートカットを割り当てます。「システム環境設定」 → 「キーボード」を選択します。

    ![スクリーンショット_2018_11_26_23_33.png](https://qiita-image-store.s3.amazonaws.com/0/71154/b9f91443-2f9f-d393-4f38-6970d7d78dfd.png)

6. ショートカットタブを選択して先ほど作成したクイックアクションを選択し、ショートカットを割り当てます。今回はopt + command + shift + Gを割り当てました。

( :warning: アクティブな(最前面に来ている)アプリが同じショートカットを持っている場合はそちらが優先されます。普段自分が使っていないショートカットキーを設定しておき、よく使っているアプリでもしそのキーが設定されていれば、disableにしておくと快適に使えます）

![スクリーンショット_2018_11_26_23_41.png](https://qiita-image-store.s3.amazonaws.com/0/71154/86ea833a-e045-6ba1-126f-abc7e4619229.png)

お疲れ様でした！これで設定完了です！
動作するか確認してみましょう！

こういった毎日繰り返し行う操作や仕事はどんどん効率化して、本質的な頭を使う作業に時間と集中力を使えるようにしたいですね :bomb: 

# 補足
## Automatorシェルスクリプトが何をやっているか？
せっかくなので、今回使ったshellが何をしているかも勉強しておきましょう。 

```sh
open "http://www.google.com/search?q=$(ruby -rcgi -e 'print CGI.escape $<.read.chomp')"
```

まず、openコマンドはfinderで開きたい時なんかによく使うコマンドですが、urlを指定するとデフォルトのブラウザでurlを開きます。
ex) qiita

```
open "https://qiita.com"
```

さらに今回はurl内でrubyのコードを実行しています

```shell
ruby -rcgi -e 'print CGI.escape $<.read.chomp'
```

オプションはそれぞれ

* -r: 指定したライブラリを読み込み。今回はcgi
* -e: コマンドラインからスクリプトを実行

なので実行しているrubyのコードを丁寧に書くとこのような形になります。。

```ruby
# cgiを読み込み -rcgi
require 'cgi'
# カーソルを合わせているテキストを標準入力として取得
cursor_text = $<.read.chomp
# エスケープ
cursor_text_escaped = CGI.escape(cursor_text)
# 出力
print cursor_text_escaped
```

## シェルにgコマンドを定義して検索できるようにする
Automator程ではないですが、シェルにもgoogle検索用のコマンドを作っておくと何かと便利です。

bash.rc/zsh.rcなど

```sh
# google it!
function g() { open /Applications/Google\ Chrome.app/ "http://www.google.com/search?q= $1"; }
```

自分はfish shellなのでこんな感じ

```shell
# google it!(英語)
function g
  open /Applications/Google\ Chrome.app/ "http://www.google.com/search?q=$argv&hl=en&lr=lang_en";
end

# google it!(日本語)
function gj
  open /Applications/Google\ Chrome.app/ "http://www.google.com/search?q=$argv";
end
```

これでこんな感じで使えるようになります。

```
$ g {何か検索したいキーワード}
```

## 参考
https://docs.ruby-lang.org/ja/latest/class/Kernel.html#V_--3C