読者です 読者をやめる 読者になる 読者になる

WolframAlpha APIを叩いてみる

以前書いた、記事をさらに掘り下げます。
matatsuna.hatenablog.com

WolframAlphaって知ってますか?

https://upload.wikimedia.org/wikipedia/en/thumb/2/2b/WolframAlpha-logo.svg/1280px-WolframAlpha-logo.svg.png
www.wolframalpha.com
wikiには以下のように書いてあります。

Wolfram Alpha(WolframAlphaともWolfram|Alphaとも表記される)はウルフラム・リサーチが開発した質問応答システム。事実についての質問に対して、構造化されたデータを使って計算し、直接答えを返すオンラインサービスである。(wiki)

わからない....

簡単に言うと、どんな計算でも計算してくれる最強のサービスです。
mathematicaを知ってる方も多いと思いますが、それを使って成り立ってます(開発者が一緒)。
よく微分積分や行列などの計算の確認に使ってます。

そんな最強の電卓をslackのbotに返答させたら超最強だ!と思って実装しました。

APIキーを取得する

Wolfram|Alpha: For Developers--API, Customizable Widgetsへ行って、Get startedをクリックし、Sign upから必要な情報を入れてアカウントを作る。
My Appsのタブに行き、右側のGet an AppIDをクリック
f:id:matatsuna:20160928174946p:plain
名前と目的を入れて Get AppID
f:id:matatsuna:20160928175140p:plain
そうすると[6桁の英数字-10桁の英数字]のAPPIDが作られます。

アクセスしてみる

サンプルクエリ通りに、アクセス!
http://products.wolframalpha.com/api/documentation.html#4

http://api.wolframalpha.com/v2/query?input=pi&appid=XXXX

ところが、APIキーを取得してすぐだと、badリクエストになる恐れがあります。その場合は、時間をおいてください。5時間ぐらい開ければ動きました。

クエリの細かいのはドキュメントみてください。

slack botpythonで書いていて、正規表現で全角はドコモのAPIに投げて、半角を今回投げる対象としました。

([ -~。-゚]+)

この正規表現を使いました。
[正規表現] 半角文字のみ取得 と 全角文字のみ取得 - 続くかな・・・

あとは、srcを上から順にとって、リンクをレスポンスとして返しました。
slackは自動で写真を展開してくれるのでいい具合になりました。
f:id:matatsuna:20160929001317p:plain
ただ、時間がたつとリンクが切れて表示されなくなってしまうのが少し、残念です。
f:id:matatsuna:20160929001322p:plain

最後に

getしてxmlを展開するだけで使えるので使い道はたくさんあるかなと思いました。
しかも、調べてみると、計算だけじゃなくて、物理や化学、統計、辞書などの超高機能なので使いたいです。
次はwidgetやってみたいな~