2015年1月19日月曜日

paiza.IO の API を使ってみた


paiza.IO はオンラインコンパイラーの1つです。

特徴としては、
  • 多彩な言語
  • 複数ファイルに対応
  • Github(Gist)連携
  • Twitter から実行
  • ブログパーツ
  • API
といったところでしょうか。

今回は、iutest のテスト環境として使えないかの実験として API を使ってみました。

API 仕様
API の仕様は以下の URL から確認できます。
http://api.paiza.io/docs/swagger/#!/runners/
※ 公式トップからのリンクだと https で接続するのですが、それだと正しく表示されないので注意

API は3つ。
create
コードを送って、コンパイル・実行をします。
create の返答はセッションIDとステータスになります。
実行結果などを取得するには、取得したセッションIDを使って別の API から取得します。

get_status
実行状況を確認する API です。create で返ってきたセッションIDをパラメータに GET します。
GET すると、セッションIDとステータスが返ってきます。

get_detail
ステータスが "completed" になったら、get_detail API で詳細結果を取得します。
こちらもセッションIDをパラメータに GET します。

ビルドおよび実行時の標準出力やエラーの内容、実行時間や使用メモリ量などが返ってきます。

API を試してみる
API仕様のページで「Try it out!」のボタンを押すと、APIを実際に試すことができます。
http://api.paiza.io/docs/swagger/#!/runners/

まずは、runners/create を開いて source_code に適当なコードを書きます。
他のパラメータはデフォルトのままで OK です。

「Try it out!」ボタンを押すと、下のように結果が表示されます。


次に、runners/get_status を開きます。
id のところに create の返答の id のところにある文字列をコピペします。

「Try it out!」ボタンを押すと、下のように結果が表示されます。


ステータスが completed になったら、runners/get_details を開きます。
get_status と同様に id を入力します。


「Try it out!」ボタンを押すと、下のように結果が表示されます。


簡単ですねぇ^^

iutest を使えるようにしてみる
Wandbox と同様に iutest が実行できるようにしてみました。
https://github.com/srz-zumix/iutest/tree/master/tools/paiza.io

で、早速サンプルを実行してみたのですが、
source_code: Too long

ざんねーーん…orz
2万行超のコードでも余裕で実行できる Wandbox の素晴らしさを再確認しました(T^T)

困ったこと
残念な結果に終わりました。
とりあえず、ここまでやってみて困ったことをまとめておきます。

  • でかいコードが実行できない
    実験した結果では、100,000 byte まで実行可能でした。
    iutest のソースコードは 720,334 byte あるので余裕でオーバーしてます。。。
  • コンパイルオプションが指定できない
  • 複数ファイルに対応しているが API からは使えない

まとめ
使ってみた感想としては、API を使って CI 環境の一部として使うのは難しそうだと感じた。
(他の言語、環境によっては十分かもしれないが)
ただ、WEB ページからの実行は便利だと思いました。Twitter のツイートでも実行できるし、公式の謳い文句にあるように勉強会のときには使えるのかも。

iutest としては、次は ideone を試してみようと思ってます。

0 件のコメント:

コメントを投稿