esa APIで公式release noteから所感を抽出する所感ジェネレーターを作成する

esa運営のrelease noteはテンプレートに「所感」を含んでおり、基本的にrelease noteに「所感」がついています。
これ、味わい深くて親しみ深い内容なのでここだけを抽出してみようと思いました。
そう、所感ジェネレーターを作ることを決心しました。

## <i class="fa fa-check-circle" style="font-size:1em;"></i> 前提
* esaのAPIの仕様は以下で確認すること
    * <i class="fa fa-external-link" style="font-size:1em;"></i> [esa API v1](https://docs.esa.io/posts/102)
* esaのAPI Clint Library(Ruby)
    * <i class="fa fa-external-link" style="font-size:1em;"></i> [esa - ruby](https://github.com/esaio/esa-ruby)
* 環境変数の利用
    * dotenv gemを利用
        * <i class="fa fa-external-link-square" style="font-size:1em;"></i> [dotenv gem で環境変数をスマートに管理](http://qiita.com/tbpgr/items/b7126c3d2d8f0329b11c)

## <i class="fa fa-code" style="font-size:1em;"></i> プログラム
* .env

```
ESA_API_TOKEN=your api token
TEAM=docs
```

* esa-shokan.rb

```ruby
require 'dotenv'
require 'esa'
Dotenv.load

client = Esa::Client.new(access_token: ENV['ESA_API_TOKEN'], current_team: ENV['TEAM'])
page_unit = 100
query = "category:release_note"
post_count = client.posts(per_page: page_unit, q: query).body['total_count']
results = (1..((post_count / page_unit) + 1)).each_with_object([]) do |i, results|
  memo = client.posts(per_page: post_count, page: i, q: query).body["posts"].each_with_object([]) do |e, memo|
    memo << { 
      body_md: e["body_md"].match(/所感\s(.+)\-\-\-/m){|e|e[1]},
      created_at: e["created_at"]
    }
  end
  results << memo
end

puts "# 所感"
puts results.flatten.sort_by{ |e|e[:created_at]}.delete_if{ |e|e[:body_md].nil? }.map{ |e|"## #{e[:created_at]}\n#{e[:body_md]}\n" }.join("\n")
```

## <i class="fa fa-file-text" style="font-size:1em;"></i> 出力
最初の一件はtemplateです。
また、出力量が多いので中間を省略してます。
ｷﾆﾅﾙ方は実際にスクリプトを実行してみてください。

```markdown
# 所感
## 2014-11-02T14:43:11+09:00




## 2014-11-21T04:02:43+09:00


- スマートフォン環境のデザインが、まだかなり手抜きになってしまっているのですが、βリリース後、スマホで使いたいという声をいただくことがより増えたので、優先度上げます :iphone: :sweat_drops:

- お雑煮が食べれるというバーが新オフィスの近くにあり、おいしかった。お雑煮おいしいので、お正月以外も食べていいと思う。 



## 2014-11-22T01:35:11+09:00


-  自宅から渋谷方面まで、片道13kmくらいを自転車で通ったりするのを最近はじめた :bicyclist: : :sweat_drops:
- 大崎→目黒間の坂（大崎ヒルクライム）がつらい。膝が笑う
- 翌日はだいたい体中がバキバキになり、足腰は産まれたての仔馬のようになる :horse:
- 1日100km以上も走る人たちは、一体何がどうなっているのか( ˘ω˘) 
- 自転車楽しい。頭がスッキリするし、移動しながら運動もついでにできるのがよい :bicyclist: 



## 2014-11-22T18:36:53+09:00


しばらく地味な作業をがんばりたい気持ち



## 2014-11-30T18:31:41+09:00

Amazonでjowboneと豆乳を注文したら、豆乳だけ届いて配達完了のステータスになっていたのでAmazonに問い合わせました。入れ忘れらしいです...



## 2014-12-05T02:52:59+09:00


- 法人化したので、税務署に届けを出してきました。
- ああいうところに持っていく書類は、必ず控えも要るんやで。2部要るんやで。言われてみればそうだけど、知らなかったで。




## 2014-12-09T02:53:22+09:00


自転車を3階まで担いで上がって下ろした途端に、腰がピキってなりました
ぎっくり腰ってほどではないけど、イタイ (:３っ)∋



## 2014-12-09T02:54:06+09:00


[Tシャツを作って買える tmix](http://tmix.jp/) でおなじみのSpicelife の皆さんとランチで :sushi: をご一緒させてもらって、esaTシャツや esaパーカーをいただきました。
ありがとう、かわええ、ありがとうございます(\\( ⁰⊖⁰)/)

![image.jpg](https://img.esa.io/uploads/production/pictures/105/1613/image/653a5c233b94dc3d9977f2e5f7de7ab3.jpg)


tmixで売っているesaグッズはこちらです( ˘ω˘)

- [esa.io トライブレンドプルパーカー | オリジナルTシャツtmix](http://tmix.jp/design/detail/1337045)
- [esa.io オーバルネックレディースTシャツ | オリジナルTシャツtmix](http://tmix.jp/design/detail/1336712)
- [esa.io スタンダードトレーナー | オリジナルTシャツtmix](http://tmix.jp/design/detail/1336683)
- [esa.io ジップアップライトパーカー | オリジナルTシャツtmix](http://tmix.jp/design/detail/1336605)
- [esa.io フーデッドライトパーカー | オリジナルTシャツtmix](http://tmix.jp/design/detail/1336507)
- [esa.io Tシャツ | オリジナルTシャツtmix](http://tmix.jp/design/detail/1335991)



## 2014-12-13T02:49:39+09:00

- [ｳｨｯｽﾘｽﾄ](http://www.amazon.co.jp/registry/wishlist/WNWEGOU2X5FS/ref=cm_sw_r_tw_ws_AHyIub0N1YZ69) 続々届いてます (\\( ⁰⊖⁰)/)
    - ありがとうございます！ありがとうございます！！



## 2014-12-20T21:16:55+09:00

豆苗を水につけておいて放置してたら、いつの間にか大きく育ってて怖いです


# !!! 中略 !!!

## 2015-11-14T21:19:37+09:00


 :fr: 



## 2015-11-15T19:36:48+09:00


![diff.png (24.3 kB)](https://img.esa.io/uploads/production/attachments/105/2015/11/15/2/6bb90eac-cd1f-44a1-9629-50955f1e0f11.png)


11/28 (土)に[esaとDocBaseのサービス開発のDiffの話 - DevLOVE関西](https://devlove-kansai.doorkeeper.jp/events/33527) というイベントで話してきます。大阪です！

> DocBaseとesaといった2つのドキュメント共有サービスがあります。

> DocBase「チームに必要な情報すべてを、全員の手に」
> esa「情報を、育てたい。」
> 似たようなサービスの両者ですが、コンセプトの違いにあるように、その思想、目指す世界、開発のやり方な> どをDiffを取ってみると様々な違いが見えてきます。

> 今回はそのように2つのサービス開発のDiffを取ることで、サービス開発をしている、これからサービス開発を> 行っていこうとしている現場の前進に役立てばと考えました。

> こんな方はぜひお越しください

> 1：「DocBase」「esa」の開発の進め方、やり方に興味がある方
> 2：サービス開発の参考にしたい方
> 3：これからサービス開発をしたい方

> 少しでも興味をお持ちいただければ、ご参加ください！

esaとして関西でお話させていただくのは今回が初めてで、DocBaseさんとのお話も楽しみです！
まだ空きがあるようなのでお早めに =͟͟͞͞ (\\( ⁰⊖⁰)/)




## 2015-12-03T20:02:18+09:00

風邪気味なので室温と湿度を高めにしています :mask: 


```

## <i class="fa fa-image" style="font-size:1em;"></i> Preview
![shokan.gif](https://qiita-image-store.s3.amazonaws.com/0/43480/2b068ab8-c048-dc9f-a60d-cde1afbad275.gif)

## <i class="fa fa-book" style="font-size:1em;"></i> 外部資料
* <i class="fa fa-external-link" style="font-size:1em;"></i> [esa API v1](https://docs.esa.io/posts/102)
* <i class="fa fa-external-link" style="font-size:1em;"></i> [esa - ruby](https://github.com/esaio/esa-ruby)