ブラウザのリクエスト送信情報やサーバーの環境変数を表示する「ENV Man」を開発し、MITライセンスで公開しました。

確認くんとの違い

同じようなウェブサービスとして 確認くん があります。

確認くんはとても便利で、普通に使うぶんには特に不便はないのですが、例えば Ruby のプログラムからのリクエストがどういう風に送られているかを知りたいときに API でアクセスして情報取得できたら便利かなと思って、「API 機能付きの確認くん」的なこのプロダクトを作りました。

「ブラウザからアクセスして情報を確認する」といった確認くんと同じような使い方ももちろん可能ですが、 JSON と XML (とその他)の形式での出力に対応していますので、JSON 形式で取得して必要な値だけ利用する、みたいな使い方をすると便利かなと思っています。

たとえば、下記のようなコードでアクセス元のユーザーエージェントが取得できます。

$ ruby -ropen-uri -rjson -e "puts JSON.parse(open('https://envman.herokuapp.com/json').read)['HTTP_USER_AGENT']"
Ruby

`Ruby` がレスポンスです。ユーザーエージェントが `Ruby` であることがわかります。

これだけだと別に便利でもなんでもないんだけど、「ユーザーエージェント名に任意の文字列を指定したけど、ちゃんと想定通り設定されているか確認したい」「プロキシを通したけど、ちゃんとプロキシを経由しているか IP アドレスを確認したい」みたいな場合に、プログラム側で動作確認までできると便利かな思っています。

っというか、私自身がそのような API が欲しかったので、自分で作りました。
(一応、探してみた限りではそういったサービスはなさそうでしたが、すでにあったら悲しい…。)

記事が少々長くなってきたので、以下に ENV Man の特長をまとめます。

ENV Man の特長

API として使える

すでに書いた通りですが、 API として利用できます。出力形式は JSONXML の他にプレーンテキストプレーンな HTML に対応しています。JSON や XML はプログラムから利用する場合に便利に、プレーンテキストとプレーンな HTML はファイルとしてローカルストレージに保存して、あとで見る場合に便利かなと思っています。

レスポンシブデザイン対応

レスポンシブデザインに対応していますので、スマホからも見やすいです。

MIT ライセンス

MIT ライセンスなので、無料で使えて、自由に改変できます。商用利用も OK です。(商用で利用したい人なんて多分いないでしょうけど。) fork して独自の改造を加えたり、自分で用意したサーバーに設置したり(ENV Man は Ruby + Sinatra で開発していますので、 Sinatra が動作するサーバーの準備が必要です。)、後述の「Deploy to Heroku」ボタンから必要なときだけ Heroku で動かすのもいいかなと思います。( https://envman.herokuapp.com を API として使ってもらってももちろん OK です。)

Deploy to Heroku に対応

上に書いた通りですが、「Deploy to Heroku」ボタンから簡単に Heroku で動かすことが可能です。

「Deploy to Heroku」ボタン を押したあとに Heroku に設定する項目はアプリケーションの名前だけです。(アプリケーション名は任意なので、それすら設定しなくても OK 。)

Github のリポジトリページ の「Deploy to Heroku」ボタンをクリックすると Heroku のページが表示されるので、

「App Name」を入れて(任意なので入れなくても OK 。入れないと適当な英数字が設定される。)、「Deploy for Free」ボタンを押すと「ENV Man」のインストールが始まり、数秒後(十数秒後かも)には Heroku 上に自分だけの「ENV Man」ができあがります。

まとめ

ブラウザのリクエスト送信情報やサーバーの環境変数を表示する「ENV Man」を作って公開した話でした。

不具合など発見されましたら dounokouno[at]gmail.com までご連絡ください。

また、良いカスタマイズができましたら、Pull Request をお送りいただければ幸いです。

Env Man について

2015年6月7日 追記

MOONGIFT 様でご紹介いただきました!

ENVマン·Webブラウザで素早く環境変数を確認しよう MOONGIFT

参考書籍

APIデザインの極意 Java/NetBeansアーキテクト探究ノート
APIデザインの極意 Java/NetBeansアーキテクト探究ノート