「Cloud Foundry 百日行」第41日目は,軽量 JSON パーサーである「jq」をブラウザ上で実行できる jqplay です。
ブラウザ上で簡単にjsonから必要な情報を抜き出すことができるため、例えば長大なjsonを整形したいが、パスワード等の秘匿情報が入っているので、他者が管理するサービスは使いたくないような場合などに、お持ちのCloud Foundry環境へPushして頂くと便利です。
基本情報
-
公式サイト
https://jqplay.org/ -
その他参考情報
jq コマンドを使う日常のご紹介
手順の概要は以下の通りです。
- 1) ソースコードの取得
- 2) アプリの起動
- 3) 動作確認
1. ソースコードの取得
$ git clone https://github.com/jingweno/jqplay.git
$ cd jqplay/
jqplay$ ls
assets bower.json Gruntfile.js LICENSE.md package.json public script tasks
bin Godeps jq main.go Procfile README.md server
README.md を確認すると、 GO と Node の環境が必要だよ、と書いてあるので、今回は heroku-buildpack-multi を使ってデプロイを行っていきます。
2. アプリの起動
デプロイ用ファイルの作成
デプロイのために manifest.yml と .buildpacks (heroku-buildpack-multi用の設定ファイル) を作成します。
まずは manifest.yml 。
buildpack:
には、 heroku-buildpack-multi を指定します。
command:
には、 jqplay が用意する構築用スクリプトから必要な処理を抜き出して指定しています。
また、アプリの起動に時間がかかる場合があるため、 timeout:
を最大の180秒に設定しておきます。
jqplay$ vi manifest.yml
---
applications:
- name: jqplay-100
buildpack: https://github.com/ddollar/heroku-buildpack-multi.git
command: ./script/bootstrap;grunt build;./bin/jqplay
timeout: 180
次に、 .buildpacks に、GO と Node の buildpack を設定します。
jqplay$ vi .buildpacks
https://github.com/cloudfoundry/nodejs-buildpack.git
https://github.com/cloudfoundry/go-buildpack.git
アプリのプッシュ
ファイルの作成が完了したら、アプリをデプロイします。
jqplay$ cf push
:
1 of 1 instances running
App started
OK
App jqplay-100 was started using this command `./script/bootstrap;grunt build;./bin/jqplay`
Showing health and status for app jqplay-100 in org horiu-jn / space 100nichi as horiu-jn...
OK
requested state: started
instances: 1/1
usage: 512M x 1 instances
urls: jqplay-100.10.244.0.34.xip.io
last uploaded: Wed Jul 22 07:48:52 UTC 2015
stack: cflinuxfs2
buildpack: https://github.com/ddollar/heroku-buildpack-multi.git
state since cpu memory disk details
#0 running 2015-07-22 04:50:54 PM 0.0% 5.7M of 512M 0 of 1G
成功しました。
3. 動作確認
ブラウザからアプリにアクセスします。
動作確認のため、
“Filter” フィールドに
.color[1]
“Jason” フィールドに
{
"color":[
{"red":156,"green":167,"red":22,"name":"sky blue"},
{"red":231,"green":225,"red":143,"name":"cream"},
{"red":99,"green":124,"red":53,"name":"olive"}
]
}
を設定すると、 “Result” フィールドに cream のレコードだけ表示されます。
今回使用したソフトウェア
- cf-release (v211)
https://github.com/cloudfoundry/cf-release/tree/v211
( https://github.com/cloudfoundry/cf-release/tree/2121dc6405e0f036efa4dba963f7f49b07e76ffa ) - bosh-lite
https://github.com/cloudfoundry/bosh-lite/tree/552dc6869600c5350eb7ffb4fb9c9c5e79e3889d - CF CLI (cf version 6.12.0-8c65bbd-2015-06-30T00:10:31+00:00)
https://github.com/cloudfoundry/cli/releases/tag/v6.12.0 - heroku-buildpack-multi
https://github.com/ddollar/heroku-buildpack-multi/tree/c41ef671cc9c8ff7d5cc7ad412654fbf9cffbce5 - nodejs-buildpack (v1.3.4)
https://github.com/cloudfoundry/nodejs-buildpack/tree/v1.3.4
( https://github.com/cloudfoundry/nodejs-buildpack/tree/19b6bc8c15aac2b159a14fc7d9928247447bf8f6 ) - go-buildpack (v1.3.1)
https://github.com/cloudfoundry/go-buildpack/tree/v1.3.1
( https://github.com/cloudfoundry/go-buildpack/commit/fbba393139373ec787818c461760158496f66acf ) - jqplay
https://github.com/jingweno/jqplay/tree/29419b0d2f948bac427abbc2ed13fec4949f3134
投稿者:NTTソフトウェア株式会社 堀内 純