Webアプリケーション作成(コーディング・テスト、デバッグ、仕上げ)、全員発表する
発表課題: オープンデータの取得と利用
使用言語:processing もしくは Java
発表時間:5分程度
課題:
オープンデータの取得と利用
- オープンデータの材料選び
- オープンデータの取得 (URL)
- オープンデータの利用 (processing もしくは Java)
- オープンデータ応用のWEB公開 (Google sitesに埋め込み)
ヒント:
これまで演習したプログラムの組み合わせが必要です。
nextbus, java参考例:
import java.util.Calendar; class busapp{ public static void main(String args[]){ String[] data = { "00:00", "8:30", "9:10", "10:00", "11:00", "12:15", "14:15", "15:15", "16:15", "17:15", "18:15", "19:15", "20:15", "23:59" }; Calendar calendar = Calendar.getInstance(); //現在(実行時点)時刻でCalendarのインスタンス生成 int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY); // 0..23 int minute = calendar.get(Calendar.MINUTE); // 0..59 int cnt = 0; for (String value: data) { String[] hhmm = value.split(":"); int hh = Integer.parseInt(hhmm[0]); int mm = Integer.parseInt(hhmm[1]); if (hh > hourOfDay || hh == hourOfDay && mm > minute) { System.out.println(hh + ":" + mm + ">" + hourOfDay + ":" + minute); System.out.println("\n"); if (++cnt >= 3) break; } } } }
nextbus, java実行例:
$ javac api-json-nextbus-sample.java $ java api-json-nextbus-sample 16:15 17:15 18:15
Processing で作る場合、下記のバスの絵も入れて、よりリアルなアプリができます。
3台のバスを描く(自分で定義した関数を使って)
int h=60; // ボディの高さ、幅の基準 int d=30; // 車輪の直径の基準 void setup() { size(400, 400); noLoop(); // 繰り返さない } void draw() { drawBus(200, 200); //中央のバス drawBus(100, 100); //左上のバス drawBus(300, 300); //右下のバス } void drawBus(int x, int y) { rectMode(CENTER); rect(x, y, h*2, h); // ボディ ellipse(x-35, y+h/2, d, d); // 後輪・外側 ellipse(x+35, y+h/2, d, d); // 前輪・外側 ellipse(x-35, y+h/2, d-10, d-10); // 後輪・内側 ellipse(x+35, y+h/2, d-10, d-10); // 前輪・内側 rectMode(CORNER); rect(x+45, y-20, h/4, h/3); // 窓・前 rect(x-5, y-20, h/2, h/3); // 窓・中 rect(x-50, y-20, h/2, h/3); // 窓・後 }