Chromeでのブラウジングを快適にするTips

今回は、`Google Chrome`というブラウザでのブラウジングを快適にする様々な小技を提案していきたいと思います。

ここで、ブラウザとは、インターネットを閲覧するアプリのこと。ブラウジングは、インターネットの閲覧のことと考えていただければと思います。


ただし、あくまで提案ですので、完璧に便利なものとは言いがたいです。

よって、簡単なハックで、便利にできるかもしれません。もっと良い方法を思いついた方は是非コメントのほうをよろしくお願いします。


##起動オプション

`Chrome`には、起動オプションというものがあります。私は、以下のようにしてコマンドラインから起動するのですが、エイリアスというショートカットを利用して、様々な起動オプションを付けて起動することにしています。

```
open -a Google\ Chrome
```

```
open -a Google\ Chrome --args --incognito --disable-javascript --disable-java --disable-plugins --disable-background-mode
```

```~/.zshrc
alias g="open -a Google\ Chrome --args --incognito --disable-javascript --disable-java --disable-plugins --disable-background-mode"
```

これで、`g`コマンドで`Chrome`を起動オプション付きで起動出来ます。以下、おすすめオプションの解説です。ちなみに、Macユーザーの場合は、 `--args`を追加しましょう。

| オプション |  内容| おすすめ度 |
|-----------|------------|------------|
| --incognito| シークレットモードで起動する|★★★|
|--purge-memory-button|Chromeのタスクマネージャにメモリ解放ボタンが追加されるらしい。しかし、すでに廃止している可能性。|★|
|--disable-background-mode|バックグラウンドモードを無効にする|★★★|
|--disable-javascript|JavaScriptを無効にする|★★|
|--disable-java|Javaを無効にする|★★★|
|--disable-plugins|プラグインを無効にする|★|
|--gpu-startup-dialog|GPUプロセスが起動するときにダイアログを表示|★|

[起動オプション - Google Chrome まとめWiki](http://chrome.half-moon.org/43.html)

##基本機能
プロセスを監視、終了するにはタスクマネージャーを起動します。Windowsの場合は、 `Shift`+ `Esc`です。Macの場合は、メニューバーの `ウィンドウ`から起動出来ます。また、アドレス:`chrome://memory-redirect/`なども便利です。



アドレス : `about://plugins/`にて、必要ないなら全て無効にできます。


[Google Chromeの「about :コマンド｣一覧 | 気ままな宇宙人](http://toomva.blog60.fc2.com/blog-entry-244.html)


##Feedly

最近、RSSリーダーの`Google Reader`の終了に伴って、[Feedly](http://www.feedly.com/)が人気です。ここで、登録が面倒という人もいるのではないでしょうか。よって、現在開いているRSSのURLページを簡単に登録する方法を紹介します。

ちなみに、RSSというのは、個別サイトの更新を配信する仕組みで、RSSリーダーというのは、たくさんのRSSをまとめて配信するような仕組み。RSSクライアントは、RSSリーダーの配信を分かりやすく、かつ見やすいようなインターフェイスを提供するものと考えていただければと思います。


一例として、現在開いているページのURLを取得し、そこに、`Feedly Add…`用のURLを付け足しブラウザで開きます。必要なものとして、 [currentwebpage](https://github.com/hetima/currentwebpage)を使います。

```
git clone https://github.com/hetima/currentwebpage.git ~/Downloads/currentwebpage
 
cd ~/Downloads/currentwebpage
 
xcodebuild
 
cd ~/Downloads/currentwebpage/build/Release
 
./currentwebpage
 
sudo cp currentwebpage /usr/local/bin

exec $SHELL
```

```~/.zshrc
function feedly(){
url=`currentwebpage -u`
open -a Google\ Chrome "http://www.feedly.com/home#subscription/feed/$url"
}
```

```
source ~/.zshrc
```

これで、`Feedly`コマンドで現在開いているRSSページを[Feedly](http://www.feedly.com/)に簡単登録出来ます。


##Chromeでのブラウジング

ブラウザには、様々な機能がありますが、ブラウザの主な用途に、Webサイトの閲覧があります。私も日頃の情報収集の結果として集まった記事は、GUIブラウザで閲覧します。ブラウザは、 `Google Chrome`というものを使っています。


しかし、基本的には動画すら見ないため、基本機能をオフにしていることが多いです。例えば、私の場合、動画を再生するときには、`Terminal`からコマンドを打ち込み `Flash Player`を有効にしなければなりません。


このように、私は、ちょっとだけブラウザの使い方が独特な気がします。よって、今回は、私の日々のブラウザの使い方を記事にしてみたいと思います。


###ChromeでURLを開く
まず、私は、気になった記事は、Twitterに共有し、一気に開きます。 `TweetVim`なんか便利です。また、テキストにあるものを開いても良いと思います。私の場合、URLは、テキストに保存し、Dropboxなどで共有することがあります。


```bash:chrome_open_url
#!/bin/bash
line=`cat $1 | wc -l | tr -d ' '`
a=`expr $line + 1`
 
for (( i=1; i<$a; i++ )); do
url=`sed -n ${i}p $1`;
echo $url;
open -a Google\ Chrome "$url";
done
 
exit 0
```

```
$ cat url.txt
http://www.google.co.jp/
http://mba-hack.blogspot.jp/
 
$ chrome_open_url url.txt
```

###Chromeで閲覧する

Terminalの透過度をMAXにして、Terminalからブラウザを操作して記事を読んでいきます。ここで、単純操作は、 `AppleScript`を利用します。



以下のスクリプトは、Chromeで現在開いているアクティブなタブを、上下にスクロールするために使用するものです。基本的には、`$ osascript chrome_scroll.scpt next`のように使います。


```applescript:chrome_scroll.scpt
-- chrome.scpt: control Google Chrome
-- Author     : ramusara<ramusara@gmail.com>
on run argv
  tell application "Google Chrome"
    tell active tab of window 1
      if ("next" = item 1 of argv) then
        execute javascript "var x = document.documentElement.scrollLeft || document.body.scrollLeft; var y = document.documentElement.scrollTop || document.body.scrollTop; y += 100; window.scroll(x, y);"
      else if ("previous" = item 1 of argv) then
        execute javascript "var x = document.documentElement.scrollLeft || document.body.scrollLeft; var y = document.documentElement.scrollTop || document.body.scrollTop; y -= 100; window.scroll(x, y);"
      end if
    end tell
  end tell
end run
```

[Google Chromeで閲覧中のページをEmacsからスクロールする
](http://d.hatena.ne.jp/ramusara/20110211/1297418503)

次は、Chromeで現在開いているアクティブなタブを閉じるスクリプトです。`$ osascript chrome_tab.scpt`のように使います。

```applescript:chrome_tab.scpt
tell application "Google Chrome"
　close active tab of window 1
end tell
```

[Google-Chrome AppleScript Dictionary](http://www.mugginsoft.com/html/kosmictask/ASDictionaryDocs/Google/Google-Chrome/OS-X-10.7/Google-Chrome-19.0.1084.56/html/)


あとは、実行権限を与え、パスの通った場所にコピーしましょう。

```bash:
chmod +x *.scpt
 
echo $PATH
 
sudo cp *.scpt /usr/local/bin

exec $SHELL
```

主に、Vimを開いている時に読むことが多いので、キーでも設定しておきましょう。ここでは、一応再利用を予定し、プラグイン化しておきます。


```~/.vim/plugin/chrome_browsing
command! -bar ChromeScrollDown silent !which chrome_scroll.scpt | xargs -J i osascript i next
 
command! -bar ChromeScrollUp silent !which chrome_scroll.scpt | xargs -J i osascript i previous
 
command! -bar ChromeTabClose silent !which chrome_tab.scpt | xargs osascript
```

```~/.vimrc
nnoremap <silent> <Leader>j :ChromeScrollDown<CR>
nnoremap <silent> <Leader>k :ChromeScrollUp<CR>
nnoremap <silent> <Leader>q :ChromeTabClose<CR>
```

これで、例えば、Vim上で `<Leader>` + `j`を押すと、Chromeで開いているアクティブなタブが下にスクロールします。おすすめのキーバインドがあれば、是非教えて下さい。

`submode.vim`とか便利かもです。

```~/dotfiles/.vimrc.bundle
NeoBundle 'kana/vim-submode'
```

```
vim +NeoBundleInstall! +qall
```

```~/.vimrc
call submode#enter_with('cscroll', 'n', '', '<Leader>j', ':ChromeScrollDown<CR>')
call submode#enter_with('cscroll', 'n', '', '<Leader>k', ':ChromeScrollUp<CR>')
call submode#map('cscroll', 'n', '', 'j', ':ChromeScrollDown<CR>')
call submode#map('cscroll', 'n', '', 'k', ':ChromeScrollUp<CR>')
```

[submode.vim とその設定例なんかを紹介 - 永遠に未完成](http://d.hatena.ne.jp/thinca/20130131/1359567419)

[submode.vimをより便利に使う](http://bool-fool.hatenablog.com/entry/2013/02/08/005936)


また、ブラウザ操作は、基本、`vimshell`上で行うと、良いかと思います。


##ヒント

###osascript -e

ちなみに、コマンドから直接、AppleScriptを実行したい場合は、以下のように -eオプションを付けます。例えば、以下は、Chromeで開いているアクティブなタブで範囲指定している部分のテキストをコピー＆ペーストするコマンドです。

```applescript:
osascript -e 'tell application "Google Chrome" to get copy selection of active tab of window 1' && pbpaste
```

上記をVimコマンドで実行したい場合は、以下のようになります。

```applescript:
:r! osascript -e 'tell application "Google Chrome" to get copy selection of active tab of window 1' ; pbpaste
```

[Google Chrome meets AppleScript](http://laclefyoshi.blogspot.jp/2010/10/google-chrome-ver.html)

###xargs -J


xargsは、 `-J`オプションを使うことで、引数を任意の位置に配置できます。

```bash:
$ ls
url.txt
 
$ tr : '\n' <<<$PATH | grep "local/bin" | head -n 1 | xargs -J % sudo cp url.txt %
```

ここでは、`%`が引数になります。ちなみに、上のコマンドは、パスの通った場所にファイルをコピーするコマンドです。

###iTerm2


iTerm2では、スクリーンの透過度を設定出来ます。例えば、透過度をMAXにしたプロファイルを作成しておき、それをショートカットキーに登録します。

このようにすることで、ショートカットキーで、手軽に透過度をMAXにできます。


また、 `Command` + `u`で透過度なしにできます。


例えば、何かを書きながら、記事を参照したい場合などには便利です。




###URLとタイトル


現在、Chromeで開いているページのURLとタイトルを取得したければ、 currentwebpageを利用するなり、`AppleScript`を利用するなりしてください。

```applescript:chrome_url_title
tell application "Google Chrome"
　set pageURI to get URL of active tab of window 1
　set pageTitle to get title of active tab of window 1
return pageTitle & space & pageURI
end tell
```

```
$ open -a Google\ Chrome
 
$ osascript chrome_url_title | pbcopy && pbpaste
```

上のコマンドは、現在Chromeで開いているページのタイトルとURLをコピー＆ペーストするコマンドです。

`AppleScript`は、実行権限を与え、パスの通った場所にでもコピーして、以下を実行しましょう。すると、以下のコマンドで簡単に呼び出せます。

```bash:
which chrome_url_title | xargs osascript
```


###何が嬉しいのか
Terminalからブラウザを操作して、何が嬉しいのかというと、一番は、メモリやCPUの節約ができるからでしょうか。色々なプラグインやアドオンを使わなくて済みます。


特に、Macで使う Chromeはメモリをかなり消費します。よって、私の場合は、起動時にプロセスを制限し、各種機能、プラグインを無効化して使っています。また、アドオン(拡張機能)もあまりインストールしていません。


しかし、特に不便はありません。なぜなら、 気になった記事があれば、Terminalからでも、コマンド一発でコメント付きのTwitter共有をすることもできますし、他のSNS共有も同じです。


そんなこともあり、Terminalからのブラウザ操作は、意外とおすすめだったりします。

##プロセスを制限する起動オプション

```bash:
open -a Google\ Chrome --args --renderer-process-limit=2
```

##Twitterへの共有

```~/.zshrc
alias tt='vim +TweetVimSay'
```