StackOverflow内の返答を検索出来るアプリ「how2」



「なんぞこれ!? 凄すぎやろ!!」と思った開発補助ツールの紹介です。

IT関連の仕事をしている人や、プログラミングをしている人なら、お世話になることが多いWebサービスの1つに"Stack Overflow"が挙げられるではないでしょうか。

エラーメッセージをそのままコピペしてgoogleで検索すると、英語のページになりますがStack Overflowのページに辿り着くことがほとんどです。そして、だいたいその手の質問が投稿されていて、解決方法が載っていたり。

利用人数も膨大で、質問をすると本当に数秒で世界中から返事が返ってきたりします(返答は英語)。まさに世界1のプログラミングのリファレンスと言えるのではないでしょうか。
( アクセス数は世界で57番目だそうです *Alexa - 2016/2/23 )

そんなStack Overflowの膨大なリソースを便利に検索出来るアプリケーションが「how2」です。

* how2のデモGIF

このhow2はnode.js製でnpmのパッケージとして提供されており、コマンドライン上で起動。コマンドを打つとStack Overflowで検索を行い検索結果を返してくれます。

実際に使ってみた個人的な感想ですが、便利度は200%と言ったところです。

それでは導入して検証してみましょう。

how2の導入 〜 使い方

how2はインストールから使い方まで簡単に出来ます。
( node.jsのインストールは事前に済ませておいてください )

# how2のインストール *環境によっては先頭に'sudo'をつけてください
$ npm install -g how2

尚、今回の検証にnode.jsのv 5.7を使用しました。


使い方もかなりシンプル。例えば、”rubyでphpのfile_get_contents()"はどう使う?"っという感じで検索してみましょう!

# 使い方 ( how2 -l 言語 調べたい内容 スペース空きも可能です )
$ how2 -l ruby file_get_contents

### 結果 ###

image - Ruby file_get_contents equivalent

Edited to retrieve from external URL:

PHP:


   $image = file_get_contents("http://www.example.com/file.png");

Ruby:


   require 'net/http'
   image = Net::HTTP.get_response(URI.parse("http://www.example.com/file.png")).body

"how2 -l ruby file_get_contents" と打つと上記のような結果が返ってきました。この結果はStackOverflow以外のサイトから引っ張ってきたようです。検索の仕方によりますが、サンプルコードも載せられていることがほとんどです。

続いてはjavascriptの人気dateライブラリ"moment.js"のことについて検索してみます。" moment.jsでmysql timeに変換するには?"という感じで問い合わせてみました。

# 検索内容
$ how2 -l js moment mysql

##

javascript - How to insert moment JS time into MySQL

This result happens because you are using the toISOString() (http://momentjs.com/docs/#/displaying/as-iso-string/) method and it is not a valid format to insert into your DATETIME column. The correct format probably is YYYY-MM-DD HH:MM:SS(I think it depends on MySQL configuration, but this is the default) as the docs (http://dev.mysql.com/doc/refman/5.6/en/datetime.html) points out.

So you should try using moment's format() (http://momentjs.com/docs/#/displaying/format/) method like this:


   myDate =  moment(data.myTime.format('YYYY/MM/DD HH:mm:ss')).format("YYYY-MM-DD HH:mm:ss");

In fact, I don't know what data.myTime is, but if its a moment object too, you can change the first format() method and remove the second one.

こちらはStackOverflowの検索結果がサンプルコードと共に返ってきました。StackOverflowからなので、コメントも添えられています。また、返答は1つだけと言うことは少ないので"Enter キー"を押すと更に紐付いた他の回答も表示。"ESCキー"でhow2が終了します。

1つ注意点なのですが、あまり曖昧な検索だと"You are doing to many requests to Google. You need to wait a bit before trying again."というメッセージが返ってきて検索結果が返っこないこともあります。


Summary

以上でhow2の紹介は終わりです。

実際に導入して試してみれば、その素晴らしさがわかると思います。how2はコマンドライン上で動くので、特にiTerm2 + Vim + tmux等の多窓環境で開発をしている人には最強のツールと言えるのではないのでしょうか。気になったかたはゼヒ×2チェックしてください。

GitHub: santinic/how2

 

この記事のカテゴリ
プログラミング

この記事に付けられているタグ