private Drawable parseDrawable() {
    String token = this.scanner.next();
    Drawable drawable = null;
    if ("Circle".equals(token)) {
      // Circleの場合
      int x = this.scanner.nextInt(); 
      int y = this.scanner.nextInt();
      int r = this.scanner.nextInt(); 
      drawable = new Circle(x, y, r); 
    } else if ("Rectangle".equals(token)) {
      // Rectangleの場合
      int x0 = this.scanner.nextInt(); 
      int y0 = this.scanner.nextInt(); 
      int x1 = this.scanner.nextInt(); 
      int y1 = this.scanner.nextInt(); 
      drawable = new Rectangle(x0, y0, x1, y1);
    } else if ("Line".equals(token)) {
      // Lineの場合
      int x0 = this.scanner.nextInt(); 
      int y0 = this.scanner.nextInt(); 
      int x1 = this.scanner.nextInt(); 
      int y1 = this.scanner.nextInt(); 
      drawable = new Line(x0, y0, x1, y1); 
    } else {
      // 図形の種類を増やす時はここに追加
    }
    if (drawable instanceof ColoredShape) {
      // 色の読み込み
      if (this.scanner.hasNext("color")) {
        this.scanner.next();
        Color color = new Color(this.scanner.nextInt(), true);
        ((ColoredShape)drawable).setColor(color);
      } 
      // 影の読み込み
      if (this.scanner.hasNext("dropShadow")) {
        this.scanner.next();
        boolean dropShadow = this.scanner.nextBoolean();
        ((ColoredShape)drawable).setDropShadow(dropShadow);
      }
    }
    return drawable;
  }