diff --git a/pom.xml b/pom.xml
index 4a617ce..31ae2c5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
   info.istlab.IoTP
   IoTP
   jar
-  0.43
+  0.50
   IoTP
   http://maven.apache.org
 
diff --git a/src/main/java/info/istlab/IoTP/FileReadWriter.java b/src/main/java/info/istlab/IoTP/FileReadWriter.java
new file mode 100755
index 0000000..b79f92a
--- /dev/null
+++ b/src/main/java/info/istlab/IoTP/FileReadWriter.java
@@ -0,0 +1,186 @@
+package info.istlab.IoTP;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+
+public class FileReadWriter {
+
+	public static ArrayList getLinesListFromResource(String path){
+		ClassLoader cl = FileReadWriter.class.getClassLoader();
+
+		if (cl == null) {
+			System.err.println("Resource not found: " + path);
+			return null;
+		} else {
+			InputStream ris = cl.getResourceAsStream(path);
+			return getLinesListFromInputStream(ris, path);
+		}
+	}
+	public static ArrayList getLinesListFromInputStream(InputStream is, String name){
+		ArrayList list = new ArrayList();
+		try {
+			BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName("utf-8")));
+			String line = null;
+			while ((line = br.readLine()) != null) {
+				list.add(line);
+			}
+			br.close();
+		} catch (IOException err) {
+			System.out.println("ReadError: "+name);
+		}
+		return list;
+	}
+
+	public static ArrayList getLinesList(String fn, boolean createIfNotExist){
+		File f = new File(fn);
+		if (createIfNotExist){
+			if (!f.exists()){
+				try {
+					if (f.createNewFile()){
+						System.out.println("New file "+fn+" Created.");
+					}
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+		return getLinesList(fn);
+	}
+
+	public static ArrayList getLinesList(String fn){
+		try {
+			return getLinesListFromInputStream(new FileInputStream(fn), fn);
+		} catch (FileNotFoundException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+	public static String[] getLines(String fn) {
+
+		ArrayList list = getLinesList(fn);
+		return (String[]) list.toArray(new String[list.size()]);
+	}
+
+	public static String getLinesAsString(String fn){
+		ArrayList list = getLinesList(fn);
+		StringBuffer sb = new StringBuffer();
+		for(String s: list){
+			sb.append(s+"\n");
+		}
+		return sb.toString();
+	}
+
+	public static String[] getLinesFromResource(String path){
+		ArrayList list = getLinesListFromResource(path);
+		return (String[]) list.toArray(new String[list.size()]);
+	}
+
+	public static void putLines(String fn, String data[]) {
+		try {
+			FileWriter filewriter = new FileWriter(fn, false);
+			for (int i = 0; i < data.length; i++) {
+				filewriter.write(data[i]/*System.getProperty("line.separator")*/);
+			}
+			filewriter.close();
+		} catch (IOException e) {
+			System.out.println("WriteError:" + fn);
+		}
+	}
+	
+	public static void putLines(String fn, ArrayList data) {
+//		System.out.println(fn);
+		try {
+			FileWriter filewriter = new FileWriter(fn, false);
+			for (String d : data) {
+				d = d + "\r\n";
+				filewriter.write(d);
+			}
+			filewriter.close();
+		} catch (IOException e) {
+			System.out.println("WriteError:" + fn);
+		}
+	}
+	public static void putLinesWithLineNum(String fn, ArrayList data){
+		try {
+			FileWriter filewriter = new FileWriter(fn, false);
+			int lineNum = 0;
+			for (String d : data) {
+				filewriter.write(lineNum+""+d+"\r\n");
+				lineNum++;
+			}
+			filewriter.close();
+		} catch (IOException e) {
+			System.out.println("WriteError:" + fn);
+		}
+	}
+	
+	public static void putStringToFile(String fn, String out) {
+//		System.out.println(fn);
+		try {
+			FileWriter filewriter = new FileWriter(fn, false);
+			filewriter.write(out);
+			filewriter.close();
+		} catch (IOException e) {
+			System.out.println("WriteError:" + fn);
+		}
+	}
+
+	public static String[] split(String delim, String text) {
+		int index = -1;
+		ArrayList list = new ArrayList();
+		while ((index = text.indexOf(delim)) != -1) {
+			list.add(text.substring(0, index));
+			text = text.substring(index + delim.length());
+		}
+		list.add(text);
+		String[] ret = (String[]) list.toArray(new String[list.size()]);
+		return ret;
+	}
+	
+	public static void writeBytesToFile(String filepath, byte[] ba){
+		OutputStream fos = null;
+		DataOutputStream dos = null;
+		try{
+			fos = new FileOutputStream(filepath);
+			dos = new DataOutputStream(fos);
+			dos.write(ba);
+			dos.close();
+			fos.close();
+		}catch(IOException iex){
+			iex.printStackTrace(System.out);
+		}
+	}
+	
+	public static byte[] readBytesFromFile(String path){
+		BufferedInputStream in;
+		ByteArrayOutputStream varyBuf = new ByteArrayOutputStream();
+		final int LS = 1024;
+		int b;
+		try {
+			in = new BufferedInputStream(new FileInputStream(path));
+			byte buf[] = new byte[LS];
+			while((b = in.read(buf, 0, buf.length)) != -1 ) {
+				varyBuf.write(buf,0,b) ;
+			}
+			varyBuf.close();
+		} catch (FileNotFoundException e) {
+			e.printStackTrace();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return varyBuf.toByteArray();
+	}
+}
diff --git a/src/main/java/info/istlab/IoTP/Launcher.java b/src/main/java/info/istlab/IoTP/Launcher.java
index e93aa06..99e70dc 100644
--- a/src/main/java/info/istlab/IoTP/Launcher.java
+++ b/src/main/java/info/istlab/IoTP/Launcher.java
@@ -31,7 +31,7 @@
 public class Launcher extends JFrame implements MouseInputListener, KeyListener, Runnable {
 
     public static Launcher theapp;
-    public static String version = "0.43";
+    public static String version = "0.50";
     static int reboot_msec = 2000;
     // JPanel mainP;
     File root;
@@ -331,6 +331,7 @@
         TreePath tp = tree.getSelectionModel().getSelectionPath();
         if (tp == null)
             return;
+        System.out.println(tp.getLastPathComponent().getClass());
         File node = (File) tp.getLastPathComponent();
         // フォルダなら開かない
         if (node.isDirectory())
diff --git a/src/main/java/info/istlab/IoTP/MyFile.java b/src/main/java/info/istlab/IoTP/MyFile.java
index b569847..b9540f1 100644
--- a/src/main/java/info/istlab/IoTP/MyFile.java
+++ b/src/main/java/info/istlab/IoTP/MyFile.java
@@ -14,6 +14,7 @@
         }
         // System.out.println(d);
         return super.toString().replaceAll(d, "");
+        //+" hogehoge";
     }
 }
 
diff --git a/src/main/java/info/istlab/IoTP/MyTreeCellRenderer.java b/src/main/java/info/istlab/IoTP/MyTreeCellRenderer.java
index 2100774..a8c7974 100644
--- a/src/main/java/info/istlab/IoTP/MyTreeCellRenderer.java
+++ b/src/main/java/info/istlab/IoTP/MyTreeCellRenderer.java
@@ -3,12 +3,32 @@
 import java.awt.Color;
 import java.awt.Component;
 import java.io.File;
+import java.util.ArrayList;
+import java.util.Hashtable;
 
 import javax.swing.JTree;
 import javax.swing.tree.DefaultTreeCellRenderer;
 
 public class MyTreeCellRenderer extends DefaultTreeCellRenderer {
 
+    public static Hashtable memo;
+    static {
+        memo = new Hashtable();
+        System.out.println(App.workingDir+ File.separator+ "_filememo.txt");
+        ArrayList list = FileReadWriter.getLinesList(App.workingDir+ File.separator+ "_filememo.txt");
+        for(String line: list){
+            String[] ary = line.split(":");
+            String fg = ary[1];
+            String bg = ary[2];
+            String mes = ary[3];
+            if (fg.length()<1) fg = "#aaa";
+            if (bg.length()<1) bg = "white";
+
+            memo.put(ary[0].trim(), ""+mes+"");
+
+        }
+    }
+
     @Override
     public Component getTreeCellRendererComponent(JTree tree, Object value,
             boolean sel, boolean exp, boolean leaf, int row, boolean hasFocus) {
@@ -18,11 +38,26 @@
         String node = (String) ((File) value).toString();
 
         // If the node is a leaf and ends with "xxx"
-        if (leaf && !node.endsWith(".ino")) {
+        if (leaf && !node.contains(".ino")) {
             // Paint the node in blue
             setForeground(new Color(200, 200,230));
             // setBackground(new Color(30, 30,50));
         }
+        if (memo.containsKey(node.trim())){
+            setText(""+node+" "+memo.get(node.trim())+"");
+        }
+        // valueがTreePathのインスタンスかを確認して、必要に応じて処理を行う
+        // if (value instanceof DefaultMutableTreeNode) {
+        //     DefaultMutableTreeNode node2 = (DefaultMutableTreeNode) value;
+        //     Object userObject = node2.getUserObject();
+        //     if (userObject instanceof String) {
+        //         String text = (String) userObject;
+        //         // ラベルの一部の色を変更する
+        //         if (text.contains("hogehoge")) {
+        //             setText("部分的に変更したいテキスト");
+        //         }
+        //     }
+        // }
 
         return this;
     }