LoginSignup
1
1

More than 5 years have passed since last update.

paiza.IO 上に書いたソースコードおよび実行結果をJSONで取得する

Last updated at Posted at 2017-08-16

TL;DR

現在の paiza.IO の仕様上、直接 RAW でソースコードは取得できませんが、 JSON 形式でソースコードと実行結果を API 経由で取得できるので、そこから必要な部分を取り出します。

API のリクエスト URL のフォーマット

https://paiza.io/api/projects/<YourPaizaGistID>.json

https://paiza.io/projects/XUafcAYRnL6l2YTYDTVbew

対象の paiza.IO コードの URL が上記の場合、API のリクエスト URL は以下のようになる。

https://paiza.io/api/projects/XUafcAYRnL6l2YTYDTVbew.json

返される JSON のサンプル(取得できる結果)

sample.json
{
    "id": 535660,
    "parent_id": null,
    "uid": "xxxxxxxxxxxxxxxxxxxxxx",
    "share": "public",
    "runner_id": "xxxxxxxxxxxxxxxxxxxxxx",
    "status": "completed",
    "language": "php",
    "input": null,
    "build_time_limit": null,
    "time_limit": null,
    "memory_limit": null,
    "build_stdout": null,
    "build_stderr": null,
    "build_exit_code": 0,
    "build_time": null,
    "build_memory": 25012000,
    "build_result": null,
    "stdout": "<ここに実行した際の出力結果>",
    "stderr": "",
    "exit_code": 0,
    "time": "0.37",
    "memory": 25012000,
    "connections": 2,
    "result": "<実行結果。成功はsuccess>",
    "live": null,
    "output_type": null,
    "schedule": null,
    "title": "<paiza.IO上のタイトル>",
    "saved_at": "2017-08-16T15:38:02.000Z",
    "run_at": "2017-08-16T15:37:33.000Z",
    "created_at": "2017-08-16T15:14:24.000Z",
    "updated_at": "2017-08-16T15:38:02.000Z",
    "is_owner": false,
    "network": true,
    "source_files": [
        {
            "id": 671527,
            "project_id": 535660,
            "filename": "<コードのファイル名>",
            "body": "<ここにエスケープされたソースコード>",
            "created_at": "2017-08-16T15:14:43.000Z",
            "updated_at": "2017-08-16T15:26:58.000Z",
            "position": null,
            "annotations": null
        }
    ],
    "external_projects": [],
    "favorite": false,
    "featured": false,
    "user": {
        "id": xxxxxx,
        "email": "<登録メールアドレス>",
        "use_password": false,
        "provider": "github",
        "username": "<ユーザ名>",
        "gender": null,
        "timezone": null,
        "image_url": "https:\/\/avatars0.githubusercontent.com\/u\/11840938?v=3",
        "created_at": "2017-06-09T17:41:40.000Z",
        "updated_at": "2017-08-14T11:31:39.000Z",
        "policy_id": 1,
        "locale": "ja-jp"
    }
}

所感と利用用途

ノマドな開発の一貫として、ノートやタブレットから TeamViewer を使って自宅の Windows や OSX にアクセスできるようにしており、それなりに便利なのですが、ブラウザさえあれば開発できるような環境を作りたいな、という願望の模索をしています。

理想で言えば、関数やクラスなどの小さい単位の開発は gist+paiza.IO で行い、テストをパスしたら自動的にメインに統合するような仕組みです。

paiza.IO は GitHub の gist と連携できるので、個人だけであれば、ほぼ実現できているのですが、最近オープンソースなものに関しては、もっとコラボレーションできたらいいなと感じてきました。

しかし、他の人が fork (コピー)したコードは paiza.IO 上ではマージすることができません。そのため、レビューされた結果やコードはコピペするか、お互いに git コマンドを駆使する必要があるのですが、もっと手軽にコラボしたいのです。

そこで、gist 上にテストコードとソースコードをアップして paiza.IO 上で実行結果を確認(動作確認)できたら、ソースコードを本番に適用するなりできる方法はないかなと、 paiza.IO の運営に問い合わせたところ、API を使ってはどうかとアドバイスをもらったので、ちょっと調べた結果を記事にしてみました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1