Processing에서 역 스파아토 WebAPI를 사용해 보는 이야기.

발 연구소 Advent Calendar 2016 , 25일째의 오늘은.
  • 처리
  • 처리

  • Processing은 비주얼 디자인에 주목을 둔 초학자용 프로그래밍 언어 + 개발 환경입니다만, Java의 클래스(Swing라든지!)를 호출할 수 있거나 WebAPI를 호출하는 기능도 준비되어 있습니다.

    그래서 이번에는 Processing에서 역 스파아와 WebAPI를 호출하는 샘플을 작성해 보았습니다.

    간단한 API를 호출해 보세요.



    먼저 Processing(Wikipedia) 에 있던 /dataversion 를 호출해 보겠습니다.

    HTTP 요청의 송출·응답의 취득은 processing.data.loadJSONObject() 로 할 수 있습니다. 취득한 JSON 오브젝트의 요소를 getJSONObject() 로 추적해, 값을 getString() 로 취득한다고 하는 흐름이 됩니다.
    void setup() {
      size(200, 200);
    }
    void draw() {
      background(255);
      fill(0);
    
      String api_url = "http://api.ekispert.jp/v1/json/dataversion?key=<アクセスキーを入力>";
    
      JSONObject res = loadJSONObject(api_url);
      String api_version    = res.getJSONObject("ResultSet").getString("apiVersion");
      String engine_version = res.getJSONObject("ResultSet").getString("engineVersion");
    
      text("API Version   : " + api_version,    10, 50);
      text("Engine Version: " + engine_version, 10, 60);
    }
    

    실행 결과는 다음과 같습니다.

    첫날 기사

    경로 검색 결과를 얻으십시오.



    좀 더 실용적인 사용법을 해보고 싶기 때문에 과 같은 느낌으로 /search/course/plain 에 의한 4일째 기사 을 Processing 에서 호출해 보겠습니다.

    소스 코드는 다음과 같습니다. JavaScript라고 JSON.parse() 로 취득한 오브젝트로부터 요소명으로 추적하는 것만으로 좋았습니다만, Processing의 경우는 조금 귀찮은 느낌이군요....
    단일의 요소의 경우와 배열로 돌아오는 요소의 취득을..
    void setup() {
      size(200, 200);
    }
    void draw() {
      background(255);
      fill(0);
    
      String api_url = "http://api.ekispert.jp/v1/json/search/course/plain?key=<アクセスキーを入力>&from=22828&to=22671";
    
      JSONObject res = loadJSONObject(api_url);
      JSONObject course = res.getJSONObject("ResultSet").getJSONArray("Course").getJSONObject(0);
      JSONArray  point = course.getJSONObject("Route").getJSONArray("Point");
    
      String from = point.getJSONObject(0).getJSONObject("Station").getString("Name");
      String to   = point.getJSONObject(1).getJSONObject("Station").getString("Name");
    
      String line = course.getJSONObject("Route").getJSONArray("Line").getJSONObject(0).getString("Name");
      String price = course.getJSONArray("Price").getJSONObject(0).getString("Oneway");
    
      int y = 30;
      text("□ " + from, 10, y); y += 15;
      text("│ " + line, 10, y); y += 15;
      text("│ " + price + "円", 10, y); y += 15;
      text("□ " + to,   10, y);
    }
    

    실행 결과는 다음과 같습니다. 무사히 검색 결과를 얻을 수 있습니다.

    평균 대기 시간 탐색

    요약



    Processing에서 역 스파아토 WebAPI를 이용하는 샘플을 소개해 보았습니다. WebAPI의 형태로 기능을 제공하고 있기 때문에 다양한 툴과의 제휴가 비교적 용이합니다(의외와 JSON의 퍼스 방법이 다른 느낌이지만...).
    그 밖에도 WebAPI를 이용할 수 있는 환경·툴이 있으면 시험해 보고 싶습니다.

    결론



    올해부터 시작해 보았다 입니다만, 무사히 완주할 수 있었습니다.
    이것도 기사를 투고해 주셨습니다 발 연구소 Advent Calendar 2016 씨, h마루야마 씨, valitoh 씨, t_류스케 . 정말 고마워요.

    내년도 Advent Calendar를 개최할 수 있으면 좋겠다고 생각하므로, 아무쪼록 잘 부탁드리겠습니다.

    좋은 웹페이지 즐겨찾기