commit 79a6e367149207f35644112d9f02e99c8e341d31
Author: みぞ@CrazyBeatCoder <mizo0203@mizo0203.com>
Date:   Fri Nov 24 16:55:32 2017 +0900

    Refactoring TwitterTimelineTalker

diff --git a/src/com/mizo0203/twitter/timeline/talker/Talker.java b/src/com/mizo0203/twitter/timeline/talker/Talker.java
index 8382b0e..e27775c 100644
--- a/src/com/mizo0203/twitter/timeline/talker/Talker.java
+++ b/src/com/mizo0203/twitter/timeline/talker/Talker.java
@@ -49,7 +49,15 @@ public class Talker {
   }
 
   public static enum YukkuriVoice {
+
+    /**
+     * ゆっくりボイス - 霊夢
+     */
     REIMU("f1"), //
+
+    /**
+     * ゆっくりボイス - 魔理沙
+     */
     MARISA("f2"), //
     ;
 
diff --git a/src/com/mizo0203/twitter/timeline/talker/TwitterTimelineTalker.java b/src/com/mizo0203/twitter/timeline/talker/TwitterTimelineTalker.java
index 6329acc..7594d0a 100644
--- a/src/com/mizo0203/twitter/timeline/talker/TwitterTimelineTalker.java
+++ b/src/com/mizo0203/twitter/timeline/talker/TwitterTimelineTalker.java
@@ -1,5 +1,6 @@
 package com.mizo0203.twitter.timeline.talker;
 
+import java.util.Locale;
 import twitter4j.StallWarning;
 import twitter4j.Status;
 import twitter4j.StatusDeletionNotice;
@@ -10,42 +11,47 @@ import twitter4j.conf.Configuration;
 
 public class TwitterTimelineTalker {
 
-  private boolean mVoice_f1 = true;
+  /**
+   * ISO 639 言語コード - 日本語 (ja)
+   */
+  public static final String LANG_JA = Locale.JAPAN.getLanguage();
+
+  private Talker.YukkuriVoice mYukkuriVoice = Talker.YukkuriVoice.REIMU;
   private final TwitterStream mTwitterStream;
   private final Talker mTalker;
 
   public TwitterTimelineTalker(Configuration configuration, Talker talker) {
     mTwitterStream = new TwitterStreamFactory(configuration).getInstance();
-    mTwitterStream.addListener(new MyStatusListener());
+    mTwitterStream.addListener(new OnStatusEvent());
     mTalker = talker;
   }
 
   public void start() {
+    // OnStatusEvent に Twitter タイムラインが通知される
     mTwitterStream.user();
   }
 
-  private class MyStatusListener implements StatusListener {
+  private class OnStatusEvent implements StatusListener {
 
     public void onStatus(final Status status) {
-      if (!"ja".equalsIgnoreCase(status.getLang())) {
+      if (!LANG_JA.equalsIgnoreCase(status.getLang())) {
         return;
       }
+
       final StringBuffer buffer = new StringBuffer();
       buffer.append(status.getUser().getName());
       buffer.append("さんから、");
       buffer.append(status.getText());
       System.out.println(buffer);
 
-      // System.out.println("@" + status.getUser().getScreenName() + " | "
-      // + status.getText() + " 【 https://twitter.com/" +
-      // status.getUser().getScreenName() + "/status/" + status.getId() +
-      // " 】");
-      // こんな感じでstatusについている名前とかを色々表示させるとさらに欲しい情報にたどり着けると思います
+      mTalker.talkAsync(UrlUtil.convURLEmpty(buffer).replaceAll("\n", "。"), mYukkuriVoice);
 
-
-      mTalker.talkAsync(UrlUtil.convURLEmpty(buffer).replaceAll("\n", "。"),
-          (mVoice_f1 ? Talker.YukkuriVoice.REIMU : Talker.YukkuriVoice.MARISA));
-      mVoice_f1 = !mVoice_f1;
+      // 読み上げは、霊夢と魔理沙が交互に行なう
+      if (mYukkuriVoice == Talker.YukkuriVoice.REIMU) {
+        mYukkuriVoice = Talker.YukkuriVoice.MARISA;
+      } else {
+        mYukkuriVoice = Talker.YukkuriVoice.REIMU;
+      }
 
     }
 
