           review + "\n" +
           chart_url
 
-
+  robot.brain.on "loaded", ->
+    for user, data of robot.brain.data.goals
+      if data.goal
+        goal = data.goal
+        data.goals = data.goals or []
+        data.goals.push goal
+        delete robot.brain.data.goals[user].goal
+      unless data.achieved_goals
+        robot.brain.data.goals[user].achieved_goals = []
+
+  goalsToString = (goals, achieved_goals) ->
+    goals_text = (_.map goals, (goal, i) ->
+      "#{i+1} : #{goal}"
+    ).join "\n"
+
+    achieved_goals_text = (_.map achieved_goals, (goal) ->
+      "☑ : #{goal}"
+    ).join "\n"
+
+    goals_text + "\n" + achieved_goals_text
 
   getRate = (achieved, attempted) ->
     Math.round achieved / attempted * 100


    unless data and data.goals.length > 0 and
        moment(data.expiration).isAfter moment()
      msg.send "#{user}さんの今日の目標は設定されておりません。"
      return

    goals = data.goals or []
    goals_text = (_.map goals, (goal, i) ->
      "#{i+1} : #{goal}"
    ).join "\n"
    msg.send "#{user}さんの今日の目標：\n" +
      goals_text

  robot.respond /.*目標達成.*/i, (msg) ->
    user = msg.envelope.user.name

      }
    robot.brain.data.goals[user].goals =
      robot.brain.data.goals[user].goals or []
    robot.brain.data.goals[user].achieved_goals =
      robot.brain.data.goals[user].achieved_goals or []

    _.extend robot.brain.data.goals[user], {
      expiration: expiration.format()
