QiitaAPIでサービスを作ろうとしたら浅はかな考え過ぎた話

浅はかすぎた自分への戒めと懺悔の記録です。

# TL;DR

* QiitaAPIを利用して過去記事を検索できるサービスを作ろうとした。
* 機能を作ってるうちに目的を達成できないと気づく。
* ひとりでやると周りが見えなくなるから、セルフアウトプットするか二人以上でやったほうがよい。
* じゃないと手段が目的になってしまう。

# まえがき：Qiitaというサービス

日本のエンジニアが50%以上利用していると言われているサービス。当然、エンジニアが日々新しい記事を投稿しています。
とても素晴らしい記事から個人のメモまで多種多様なものがあります。僕も毎日お世話になってます。
でも・・・思ったんです。

**投稿記事、もっといろんな角度から探せるといいのにな。**

軽く調べるとQiitaはWebAPIが用意されているではありませんか！
こりゃやるしかない。やったるでしかし！

# 序盤：早速、作ってみようと思いました。ノリノリで。

```
とりあえず、API仕様を軽く読んで見る。
ふむふむ、わかりやすい。Jsonで返ってくるんだな。ふむふむ。
であれば、サクッと作れそうだぞ、ふむふむ。

あとは、どういう角度で情報を抽出しようかな・・・。
```

はじめはこんなノリでした。
隠れた名投稿を発掘する、のようなものはいっぱいありました。
やりたいなー。**でもデータ分析はよくわかんね。**
で、いいねがついてようとついていなくとも、類似するタグや内容のものを検索できればよいな、と。
**それをストックとかしておけたら素敵やん！**
そんなサービスないし、いけるでこれは！
となり作り始めたんです。
それはまあ、ノリノリで。ほんとにノリノリで。


話変わるんですけど、作り始めって楽しいですよね。
**何をするも自由！**って感じ？
過去のしがらみが一切ない世界。とても好きです。

簡単に考えた仕様は以下のような感じでした。

* 開発はRuby on Rails 5で。
* APIで取得した情報をDBに保存。検索可能。
* 取得はバッチで定期実行。
* Qiitaユーザといい感じで連動できればなおよし。

これだけです。
今ならわかりますよ。

**浅はかすぎるやろ、お前。**

って。書きながら笑えてきました。やっぱ書くのやめようかな。

いや、これは自分自身への戒めである。

# 中盤：データ取得と表示を作ってから上がるテンション

とりあえず、QiitaAPIでデータを適当に取得して、それを表示させるところを作りました。
順調順調♪って感じでね。ええ、ノリノリですから。
作りながら、いろいろ思いつくんですよね。
**あれもほしい。これもほしい。**
って。わかりますかね？わかりますよね？
作る仕様はどんどん増えてくわけです。**碌な検証もしてないくせに。**
一人でやってるわけですから、趣味で。誰も暴走を止めてくれないんです。

大体思いついたものは、

* いいね数フィルタほしいな。
* コメント数とか数でフィルタできるやつは全部備えておけばいいよね。
* タグを条件で並べ替えできてもいいな。

みたいなね。
どんなデータがどういう形でとれるかを実装しながら把握していくうちに思いついたものです。
この時点でもまだノリノリでした。
**うひょー、いっそがしいぜー！**
くらいテンションアゲアゲでした。恥ずかしい。死にたい。

ある程度実装したところでデータがいっぱいほしくなったので、APIについて深掘りしていきました。
しかし・・・。

# 終盤：あかん、これあかんやつや。下がるテンション。

APIをね、深掘りしてたんですよ。そしたらね。

**過去遡れる件数にはどうやら限りがありそうでした。**

あれ、ちょっとまって。あれ？もしかして、あれ？
**全部みれなきゃ意味ねーじゃん。。。**
雲行きが怪しくなってきたぞ、これ。どうすんだ、これ。

とりあえず考えます。こういうときは楽観的なところが結構幸いします。

* まあ、取れるところから取るでいっか。
* そこまでむかしのやつとか見ねえし。
* つーか、古い情報は価値が下がってるやろ。

はい、ふざけてる。めっちゃふざけてる。
普段、技術系より経験に基づく思考フレームワークとか仕事術みたいな記事ばかり読んでる人間の言葉とは思えないです。**自分で自分がアンビリバボー。**

このときの自分は、とりあえずそれでいけると思ってたんですけど。新たに気づいたことがありました。

**あ、いいねとかコメントって更新されていくのか。**

あーーーー、はずかしい。死にたい死にたい。
そりゃそうやろ。ちょっと考えたらわかるやん！

で、記事の情報を随時更新していかないといけないと気づいたんです。この時点で。
**10年以上もやってるのに！**
信じられないです。もうすぐ30になるのにまだ小学生みたいな浅はかさです。

取れるところから取り始めたとしても、更新対象はどんどんふえていくわけです。
新しい情報をとってきて、更新して、消えた記事は削除して、あれしてこれして。。。

**あかん、全然現実的やないで。。**

もうテンションの下がり具合が半端じゃない。びっくりするぐらい。
そして折れる心。諦めの精神。
大体、更新された情報をWebAPIでワンクッションおいて検索しようとするのが間違いでした。
そう、間違いだったのです。

そして、振り返った結果、この記事を書こうと決めました。

# 教訓：客観性はとても大事

今回、このような事態になった一番の原因は、

**すべて主観（脳内）でしか考えていなかったこと**

だと思います。
WebAPIがあって、WebフレームワークとDBがあればやりたいことはできるな、うん。
とかそんなフィーリングでものごとを進めたからです。

たとえそれが、自分でしか見ないものだとしても整理も兼ねてアウトプットするべきでした。
そうすれば、自分で自分の考えを客観的にみることができたと思います。
そしてできれば時間を開けたほうがよいと思います。作った直後は、
**俺、天才！**
みたいなテンションだからです。同じテンション、脳リソースの状態でみても同じ意見しか出てこないので、一度メモリをリセットしてから見るべきです。

それでも、やはり同一人格が見れば変わらない可能性が高いので、ニーズがありそうな人に
**これ、どう思う？**
って聞いてみるのもありだと思います。ぼかすなり、世間話程度に聞いてみるなりでいいと思います。
いろんな意見がでると思いますし、人に聞くときに**俺、天才やろ？**みたいな聞き方しなければ問題ないと思います。

もう一つ、アウトプットする大きな理由は、
**目的を忘れないため**
です。脳内にしかない状態だと、次からくる新しい情報に更新されない情報が消されていきます。
普段の仕事でもよく見かける現象です。For whatが軽視されて、How toを調べたり検証したりする時間が増える現象でもあります。

普段、**目的を忘れるな。**とか偉そうにいってすいません。
**開発エンジニアは手段が目的になりがちやからね。**
とかディスってすいません。

僕は開発しない、いわゆる上流の人間なんでこんなこと言ってました。

**今日から僕も仲間です。よろしくお願いします。**

やはり、人の気持ちを知るには同じことしてみないとだめですね。

**明日からみんなに優しくできそうです。**

最後まで読んでいただきありがとうございました！