些細なコードだけれど

基本的に本が捨てられない。

本を捨ててしまうと、その本を読んだという事実をたぐり寄せることができなくなってしまう気がする。。。

だけでなく、実際に読んだという事実がきっと霧消してしまうにちがいない。

同様に、学んだことはどこかに記しておきたい。

引き出せない知識は学んでないのとほぼ同じ意味になってしまいそうな恐怖感がある。

学ぶときのパフォーマンスは若干落ちるが、記しておく場所が決まっていれば、一度学んだことは必ずそこにあるという安心感があり、結果自信にもつながる。

そして、その記す場所が、どこからでもアクセスできるとなお良い。

自分の脳が外部に拡張されている感じ。

さらに、公開されていれば、いくらか人の役に立つかもしれない。

っていうのは、幾分後付けの理屈だけれども、そんな場所にWebはぴったりだ。

10年以上前から、当初は HTMLでメモ(http://typea.info/tipslib/)を書き留め、その後、Wiki (http://typea.info/tips/) を覚えてからはWiki、ブログを覚えてからは、Wikiやブログ(http://typea.info/blg/glob/) を適宜使い分けながらメモやら学習のアウトプットを書き留めるようになった。

基本的に、何か学ぶときは、FreeStyleWiki を編集しながら学ぶのが、自分のスタイルだった。

ところが、、、何年前だったか「ザ・マインドマップ 」に出会ってから状況が変わった。

うーん! マインドマップを使うと、学習にとどまらず、アイディアだしから、文章の構造のまとめやら、あらゆることが捗るじゃないか!

そして、最近は、スマートフォンやら、タブレットからでも場所を選ばずマインドマップを作成することができる様になり、Dropbox を使ってマインドマップ自体を一元管理できるようにもなった!

マインドマップだけで十分!の筈なんだけど、やっぱり蓄積した情報を再利用するためには、Wikiやブログ にまとまってた方が使い勝手がいいんだよな。

で、愛用している MindMap アプリ XMind から、ブログに貼り付ける用のHTMLを吐き出してみても、せっかくの階層構造がぶっ壊れたダメダメなHTMLしか吐き出さない(H1~H3程度の構造は保持してるんだけど。。。)し、テキストに吐き出してもフラット。なんだかなぁ。階層が重要なのに。

てな感じでしばらくは、しょうがないか状態だったのだけれど、ここ2日くらい、なんとかならないかいろいろやってたら、XMind から FreeMind の書式にエクスポートすると、XMLとして出力されることに気がついた!

確かに、昔FreeMindちょっと触ったときにはフォーマットはXMLだったな~

XMLが入手できれば、後は何とかなる。

ということで、吐き出したXMLの内容をちらりとみながら、適当にPythonでスクリプトを書く。

FreeMind 書式のXMLを読み込んで、階層をFreeStyleWIki の階層書式に変換するだけ。

すごく些細なコードなんだけれど、自分の脳内の回路がつながった感じだ!!

  1. # -*- coding:utf-8 -*`-
  2. import os
  3. import glob
  4. import codecs
  5. from bs4 import BeautifulSoup
  6.  
  7. def freeStyleWiki(text, indent):
  8. prefix = ""
  9. if indent == 1:
  10. prefix = "!!!"
  11. elif indent == 2:
  12. prefix = "!!"
  13. elif indent == 3:
  14. prefix = "!"
  15. elif indent == 4:
  16. prefix = "::"
  17. elif indent == 5:
  18. prefix = "*"
  19. elif indent == 6:
  20. prefix = "**"
  21. return '%s%s\r\n' % (prefix, text)
  22.  
  23. def parse(out, node, indent):
  24. try:
  25. out.write(freeStyleWiki(node['text'], indent))
  26. except KeyError:
  27. return
  28.  
  29. indent = indent + 1
  30. for child in node.contents:
  31. parse(out, child, indent)
  32.  
  33. def meke_formatted_text(path):
  34. mms = glob.glob(os.path.join(path, "*.mm"))
  35. for mm in mms:
  36. out = codecs.open(mm + ".out.txt", 'w', 'utf-8')
  37. soup = BeautifulSoup(open(mm))
  38. parse(out,soup.map.contents[0],1)
  39. out.close()
  40. if __name__ == '__main__':
  41. target = 'C:\Users\piroto\Dropbox\Private\Maindmap\FreeMindFormat'
  42. meke_formatted_text(target)
  43. print "finish"

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です