3.サーバーサイドのデータをグラフ化する
RecordSetのインスタンスを作成出来てしまえば、グラフ化までの手数は少なくて済みます。
また、連載の第2回で紹介したJSONを利用したサーバーサイドとの連携でも、JSONデータからRecordSetへの変換処理は比較的簡単に行うことができました。
このように、Curlの中でデータを定義した場合だけではなく、サーバーサイドのデータをグラフ化することも比較的容易に行えるのが分かります。
|| サーバからのJsonデータの受信 {let empJsonValue: JsonValue = {JsonValue-parse {url "http://localhost:8080/curl_server/emp.json"} } } || Jsonデータを保管するレコード:customers {let employees: RecordSet = {RecordSet {RecordFields {RecordField "empno", caption = "empno", domain = int} , {RecordField "ename", caption = "ename", domain = String} , {RecordField "job", caption = "job", domain = String} , {RecordField "mgr", caption = "mgr", domain = int} , {RecordField "hiredate", caption = "hiredate", domain = double} , {RecordField "sal", caption = "sal", domain = double} , {RecordField "deptno", caption = "deptno", domain = int} } } } || Jsonデータをcustomersに追加する {define-proc public {add-rec empno:int , ename: String , job: String , mgr: int , hiredate: double , sal: double , deptno: int }: void let new-rec: Record = {employees.new-record} {new-rec.set "empno", empno} {new-rec.set "ename", ename} {new-rec.set "job", job} {new-rec.set "mgr", mgr} {new-rec.set "hiredate", hiredate} {new-rec.set "sal", sal} {new-rec.set "deptno", deptno} {employees.append new-rec} } {for emp: JsonObject in empJsonValue do let empno: int = 0 let ename: String = {String} let job: String = {String} let mgr: int = 0 let hiredate: double = 0 let sal: double = 0 let deptno: int = 0 set empno = {emp.get "empno"} set ename = {emp.get "ename"} set job = {emp.get "job"} set mgr = {emp.get "mgr"} set hiredate = {emp.get "hiredate"} set sal = {emp.get "sal"} set deptno = {emp.get "deptno"} {add-rec empno, ename, job, mgr, hiredate, sal, deptno} }
4.まとめ
Curlでは、CSVファイルにアクセスするためのURLが分かっていれば、容易にグラフ化を行うことができます。Strutsでできたアプリケーションであっても、CSVファイルをダウンロードするURLが分かっていれば同様に可能です。また、サーバーサイドのデータをグラフ化することも容易に行えます。既存アプリのビューとしてCurlを利用するのも面白いのではないでしょうか。
次回は、JavaとCurlの文法などの比較を行います。