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); // 窓・後
}