Twitter APIを使ってみる

# 概要
## 一言でいうと
Twitter APIを使ってみるまでの記録。

## 数行でいうと
1. Twitterの開発者アカウントを作る
2. アプリ登録する
3. Node.jsでタイムラインを取得/ツイートしてみる

## 言い訳
英語を読む/解釈するのはこの記録の役割ではないので、読者にお任せします。
2件申請して2件とも即時使用開始をした実績を書き残しているので、仮に間違いに気がついても気がつかないフリをした方が目的達成のためには良いかも知れません。
(その間違いが、同意した規約等に反する場合は困ったものですが...)

# 詳細
## 1. Twitterの開発者アカウントを作る
### 手順
Twitterにログインし、そのホーム画面右側ペインの下に開発者用サイトへのリンクがあり、これで移動する
![image.png](https://qiita-image-store.s3.amazonaws.com/0/95118/4dcf0e8b-d04e-b575-6243-8aac800bfe73.png)

以下から直接でも可能だが、ログインはした方がいいかな。
https://developer.twitter.com/

「Apply」をクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/95118/932ccc2f-9fe1-fd40-0127-7022ebe8c9e9.png)

「Apply for a developer account」をクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/95118/c069e1e3-44b5-1050-350e-4c13e58d47e3.png)

ログイン済みである前提なので、アカウントは選ばれているはずで、「Continue」クリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/95118/ca8b5669-7a98-5e5c-adf6-b792246c7b8c.png)

ここでは本稿の目的通りだと「I am requesting access for my own personal use」かと思います。
プロジェクト名(たぶん何でも良いと思います)と国を選択し、「Continue」をクリック。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/95118/fcd01fbd-f371-73df-3ea8-7883b0c08418.png)

翻訳は他の方もしているので割愛するとして、ユースケースを選択する。1〜4で要求されている説明を英語で記入する。最後の設問もNoかと。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/95118/312402f4-bc60-2c96-604d-7aaee9919c04.png)

よく読んで、2つチェックを入れて「Submit application」
![image.png](https://qiita-image-store.s3.amazonaws.com/0/95118/a1b545e6-27dd-4367-bc11-3bac378497e0.png)

メールが送信されてくるので「Confirm your email」をクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/95118/b07af7f8-f1cb-40c0-36f7-96354a8e72e4.png)

登録はここまで。

### 能書き？(って言葉の意味的には自分で言うことじゃないけど...)
他の方の記録を見ると、承認されるまでに時間がかかったり、場合によっては英作文をもう一度やる羽目になったという記録が残されているのが散見されたが、2件やって2件ともすぐに次のアプリ登録が実施できたので、何かが変わったのかも知れません。
私が何かを間違って、もしかすると規約等に照らすと不正に？バイパスしてしまっているという可能性も無くは無いです。ですが、正しかったか、流暢だったか、そのレベル感は別にして、説明はごちゃごちゃと書きました。経験上、テクニカルなことで英語で説明するときには、流暢にスパッと言い表すような英語を練るよりも、短い端的な説明でも良いので、単純な英語文を何行も並べて説明して、読み手に全体像を描かせることで問題無いです。練った英文が間違って伝わることがあっても、短文でも相手に描かせた全体像は間違いが少ないし、返ってくる質問がシンプルです。

## 2. アプリ登録する

### 手順
「Create an app」をクリック。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/95118/1a8034ea-280f-f8f6-c002-bd37584c91f2.png)

あれ？さっき押したのと同じ名前？？って思うかも知れないが、気にせずクリック。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/95118/746f2406-1436-2983-5a0f-a7acfd88d989.png)

アプリケーション名を入力してアプリの説明を記入(ここは概要レベル)、使用する予定のWebサイトのURLを記入する。
話は脱線するが、お名前.comあたりで、1円/年のドメインを取れば何かと良いと思う。他はすっ飛ばして、一番最後の中の人が読む用の文章を、これまたごちゃごちゃと書き込む。英語に自信が無い方も前述の要領で。そして「Create」をクリック。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/95118/e289cd02-174d-c4f1-5d41-1948fa00c806.png)

入力した内容が詳細として表示される。隣のタブを開くため「Keys and tokens」をクリック。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/95118/bd19c745-f7f8-9fdf-9710-083a69d11898.png)

「Create」をクリックして生成させる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/95118/15958b6f-35b8-e3af-9b74-780273f221ce.png)

これで4つのキーがそろうのでこれをメモする。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/95118/6cd73376-49f7-191c-df8b-c3664c347be9.png)

## 3. Node.jsでタイムラインを取得/ツイートしてみる
たぶん、twurlコマンドあたりを使ったり、curlとかでも出来るかも知れません。pipとかgemとかpearとかmavenとか頼るものは何でもお好きなものを選んで頂いて構いませんが、ここではさっきまで手元でNode.jsを動かしたのでnpm installを実行しちゃいました。

### 手順

使ったのはこれ。
https://www.npmjs.com/package/twitter

```
npm install --save twitter
```

Readmeに記載されている通り、以下で動きます。

```js

var Twitter = require('twitter');
 
var client = new Twitter({
  consumer_key: '',
  consumer_secret: '',
  access_token_key: '',
  access_token_secret: ''
});
 
var params = {screen_name: 'nodejs'};
client.get('statuses/user_timeline', params, function(error, tweets, response) {
  if (!error) {
    console.log(tweets);
  }
});
```

必要なのは、4つの認証のためのキーですが、微妙に名称が違いますが、画面の上から順にコピー&ペーストで大丈夫です。

ツイートするには、以下のように。

```js
client.post('statuses/update', {status: 'ツイートも出来るかな？'}, function(error, tweet, response){
	if (!error) {
		console.log(tweet);
	} else {
		console.log('error');
	}
});
```

# まとめ
特に承認に時間がかかったりはせず、英作文の時間以外は時間はほとんどかからずTwitterAPIが使用可能になりました。