Ruby | お気に入りのユーザーの記事をすべてストックする Qiita::NekosogiStocker gem を作成した #qiita #ruby

# お気に入りのユーザーの記事をすべてストックする Qiita::NekosogiStocker gem を作成した #qiita #ruby
## <i class="fa fa-cubes" style="font-size:1em;"></i> 概要
お気に入りのユーザーの記事をすべてストックする Qiita::NekosogiStocker gem を作成します
## <i class="fa fa-flag-checkered" style="font-size:1em;"></i> 目的
* お気に入りのユーザーができた。過去の投稿も含めてこの人の記事ならすべてストックしておきたい
* 手動でストックするのが面倒

## <i class="fa fa-info-circle" style="font-size:1em;"></i> 前提
* Qiita Web API の Ruby Wrapper である qiita-rb を内部利用します [^1]

## <i class="fa fa-terminal" style="font-size:1em;"></i> コマンド
コマンド名： `nekosoqiita`
※根こそぎとキータをつなげて 「ねこそきーた」

|sub command|args|memo|
|:--|:--|:--|
|help|なし|ヘルプを表示します|
|help|コマンド名|指定コマンドのヘルプを表示します|
|version|--|バージョンを表示します|
|stock|qiita_user_id|qiita_user_id の記事をすべてストックします。<br>標準出力にストックした記事のタイトル、URLを ltsv 形式で出力します|

## :deciduous_tree: 環境

|key|value|
|:--|:--|
|access_token|Qiita の認証情報|

環境変数 access_token に Qiita のアクセストークンを設定するか、
実行時のディレクトリに .env ファイルを作成し、 access_token を設定してください。
dotenv については脚注参照。 [^2]

~~~
access_token=your_qiita_access_token
~~~

## <i class="fa fa-file-text-o" style="font-size:1em;"></i> 使用方法

* 実行前に Qiita を Web から確認。ストック数を観ておいてください。  
  実行前の時点で伊藤直也さんの記事を1件もストックしていません。

![before.png](https://qiita-image-store.s3.amazonaws.com/0/43480/6232f96d-cd6d-465a-0b9c-9671899b63b9.png)

* 実行

~~~bash
# 伊藤直也 さんの記事を根こそぎストックしてみます
$ nekosoqiita stock naoya@github
title: Yak shaving in Yosemite	url: http://qiita.com/naoya@github/items/8793fe9227f2b144b1ff
title: Go の変数初期化に伴う条件分岐をもっと良い感じに書きたいと思ったが諦めるしかないようです	url: http://qiita.com/naoya@github/items/fbfb853a910a8b3ae0fd
title: Chef で aws の t1.micro に swap を作るレシピ	url: http://qiita.com/naoya@github/items/2059e3755962e907315e
title: iTerm2 で emacs で C-tab で other-window	url: http://qiita.com/naoya@github/items/bfb250aa76107a036127
~~~

ストックした記事を LTSV ファイル形式で標準出力するので、 read later として管理するための元データにするなど
ご活用ください。
出力形式を LTSV にしたので、あえてサンプル実行対象として 伊藤直也 さんを選んだり・・・。 [^3][^4]

* 実行後に Qiita を Web から確認

全ての記事のストックが増えています

![after1.png](https://qiita-image-store.s3.amazonaws.com/0/43480/898afca9-8627-a41a-bf17-c173c34d1b35.png)

実際に私のユーザーでストックできているか確認します

![after2.png](https://qiita-image-store.s3.amazonaws.com/0/43480/71446e5c-2917-c65c-815a-c8b5ef1bbf0e.png)

## :memo: 戯れ言
伊藤直也さんの 記事名って、英語の用語の前後に半角スペースを入れてますね。
自分も、 ブログ・ナレッジマネジメントツール・ Twitter などに情報を発信する際は、
半角スペースを入れるようにしてます。

* 見やすさへの配慮
* 単語選択や単語ジャンプのなどエディタの支援を受けやすくなる

などが理由です。
他にも理由があるのかな？

## :link: 参照
* <i class="fa fa-github-square" style="font-size:1em;"></i> [qiita_nekosogi_stocker GitHub](https://github.com/tbpgr/qiita_nekosogi_stocker)
* <i class="fa fa-external-link" style="font-size:1em;"></i> [qiita_nekosogi_stocker RubyGems](http://rubygems.org/gems/qiita_nekosogi_stocker)

## :books: 脚注
[^1]: <i class="fa fa-github-square" style="font-size:1em;"></i> [qiita-rb](https://github.com/increments/qiita-rb)
[^2]: <i class="fa fa-github-square" style="font-size:1em;"></i> [dotenv](https://github.com/bkeepers/dotenv)
[^3]: <i class="fa fa-external-link" style="font-size:1em;"></i> [ltsv official](http://ltsv.org/)
[^4]: <i class="fa fa-external-link" style="font-size:1em;"></i> [LTSV FAQ - LTSV って何? どういうところが良いの? | naoyaのはてなダイアリー](http://d.hatena.ne.jp/naoya/20130209/1360381374)