意識の高いLISPマシン

藤原惟/すかいゆき(@sky_y)の技術用ブログ

XMindのHTMLファイルをorg-modeで編集したい

XMindとorg-modeの出会い

僕はマインドマップツールのXmindを使っていて、

  • 考えをまとめるツール
  • 何か文章やレポートなどを書く時の下書きツール

として愛用しています。
余談ですが、Pro版を買うと(Windows環境のみですが)WordやPowerPointに直接はき出せて便利です。
ブレスト(ブレインストーミング)・マインドマップ作成ソフトウェア XMind [エックスマインド]


一方で、Emacsのorg-modeにも手を染めようとして色々格闘しています。
アウトラインエディタの一種として使えますが、色々すごい機能があって何がなんやら状態です。
こちらは、本格的な文章を書くときに使おうとしています。
OrgMode - Emacs上のアウトライナー


快適な執筆環境を作るために、この二者をうまく組み合わせたくなりました。つまり、

  1. XMindで下書きする
  2. org-modeで文を執筆する

という手順を踏みたいのです。


障害となるのが、XMindで作ったマインドマップをorg-modeに変換するときです。
通常は手打ちでやる必要があるのですが、自動化したいので以下の手順を考えました。

  1. XMindで考えをまとめる
  2. XMindマインドマップをHTMLにエクスポートする
  3. HTMLをorg文書に変換する ←今回の主題
  4. org-modeで文を執筆する

xmind_html_to_org

HTML->orgの変換ツールがないか検索してみましたが、どうやら無いようなので自分で作りました。
xmind_html_to_org.rbという、簡単なrubyスクリプトです。

sky-y/xmind_html_to_org · GitHub

動作環境
  • ruby (1.9で動作確認)
  • Hpricot: ruby用HTMLパーサ。

Hpricotは以下のようにインストールします:

gem install hpricot
使い方
ruby xmind_html_to_org.rb filename.html
やること
  • h1, h2, h3タグで囲まれたテキストを抜き出す
  • それぞれ頭に *, **, *** (見出し記号)を付けて吐き出す

XMindが吐き出すHTMLしか相手をしないので、かなり単純です。

1. XMindでマインドマップを作る

これを例にします。
てすと - sky_y0079 - XMind: Professional & Powerful Mind Mapping Software


2. HTMLファイルにエクスポートする

File->Export... で HTML を選択します。
オプション類はお好みで(後の動作にはたぶん影響しない)。
ここではファイル名は test.html とします。


3. xmind_html_to_org.rbで HTML -> Orgファイル に変換する

ruby xmind_html_to_org.rb test.html


4. test.orgが出力されるので、Emacs org-modeで開く

たぶん、こんな感じのテキストになっているはずです。

* てすと


** Hoge

*** ほげ
*** ほげほげ

** Fuga

*** ふが
*** ふがふが

** Homu

*** ほむ
*** ほむほむ
余談

なお、今回初めてgithubを使ってみました。
git自体は使った事があったので、割とスムーズに導入できました。

Cocoa Emacs: emacsclientをAppに変換する

Emacsは常に起動させておけ、とEmacs使いは言います。
私もそれに従って、常にEmacsを起動させ、テキストファイルはほぼ全てEmacsで編集するようにしています。


Mac OS XのFinderでテキストを開きたい時は、ダブルクリックで起動済みEmacsを開きたいものです。
本来、このような用途では、emacsclientという実行ファイルで起動するのですが、
Cocoa EmacsのemacsclientはUnix実行形式のため、Finder上で設定することが出来ません。
(設定できるのはアプリケーション(.app)のみ。)


Emacs.appなら設定できますが、私の環境では
・別ウィンドウで開く
・色が変(黒背景のはずが、白背景になる)
という現象が起こり、かなり不便です。


そこで、Platypus (Platypus | Sveinbjorn Thordarson) というアプリケーションを使って、
ファイルをダブルクリックしたら、起動済みのEmacs.appのバッファ内で「期待通りに」開くようにします。
PlatypusはシェルスクリプトをMacのアプリケーション(.app)に変換してくれるツールです。
これを使って、emacsclientを.appに変換します。
Yakitara: EmacsClient.app を参考にしました。)


1. 以下のようなシェルスクリプトを作る。
便宜上、 /Users/homu/bin/emacsclient.sh と名前を付ける。

/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -n "$1"

2. 以下の図のように設定する。

3. Finderで開きたいファイルを右クリックして、Get Info(日本語だと「情報を見る」だったはず、あるいはcommand+i)。
開くアプリケーションを指定する部分で、EmacsClient.appを選択する。
このとき、"Always open with"にチェックを入れる(日本語は略)。

これで、めでたく「期待通りに」起動済みEmacsでファイルが開けます。

テキストの各行が140字以内かどうかを調べるRubyスクリプト

とあるtwitter botを作ろうとしていて、つぶやきたい言葉を並べたテキスト(1ツイート1行)の文字数を調べたかったので。
ごくごく基本的なスクリプトですが、備忘録程度に。

  • 引数があればファイルから、無ければ標準入力から読み込み
  • 各行の文字数とその内容を出力
  • 1行140字以上ならば、'!'を先頭に付ける
#! ruby -Ku
# -*- coding: utf-8 -*-

#require 'jcode' # ruby 1.9以降は不要

if ARGV.size == 1
  f = open(ARGV[0])
else
  f = STDIN
end


while line = f.gets
  line.chomp!
  if line.size > 140
    print '! '
  end
  print line.size.to_s + ' '
  puts line
end

再びDJします : 5/1(日) @ 中崎町NOON

このブログではDJやってた話を全然書いてなかったですが、2月ぐらいに初めてDJを体験しました。(好きな音楽をかけるだけですが。)


そして5/1(日)に、とあるイベントで再びDJをさせていただく機会ができました!


このイベントは、大阪の小さな界隈で出会った人々が、それぞれの才能やできることを持ち寄る「学祭」です。
ライブ、ファッションショー、ベリーダンス、ライブペインティング、服の販売、ごはん・・・などなど盛りだくさん。
昼の1時半から夜の11時まで、お腹いっぱい楽しめるイベントです。


前売り2000円(ドリンク代込み)。
行きたい方は、twitterで @sky_y にリプライかDMを。mixiの方はメッセージをください。

                                                                                                                      • -


oops! here I go again / gallery presents
僕たちの好きな学祭をやるんだ。


2011.05.01 sun
start 13:30pm/close11:00pm
adv2,000yen adm2,300yen with 1drink


ライブ : ytakeko、Dibot's、イルマティック酩酊boys、The paellas、(仮)すぱっつぱーてぃetc.........


DJ : ytakeko(oops! here I go again) 、マロ、ジョバンニ、ニコetc..........


ファッションショー:ORANGE


ベリーダンス:sunshine


ライヴペインティング : M G Z N(江田有未、槇田恭子、HEMO)


ギャラリー : ず、 ajimi


LOUNGE ライヴ: 桃ごはん、hashima royuki、 finola、岩戸裕美etc..........


LOUNGE DJ: ねじしき、Fukkn、joe、メメクラゲ、すかいゆき(私です)etc..........


2F SHOP : ORANGE(古着)、JIMS(アウトドア)、NS/のんしゅが〜(雑貨)、
チクチクソルイルナ(リメイク)、melangerico(アクセサリー)、ORANGEモデル私物販売etc..........


カフェ、フード: Kaleido Bagel(ベーグル)、みっちー食堂 (カレー)、とん子ちゃんのとんとん亭(カツサンド)、カフェアンジェリーナ(コーヒー)

関西Emacs勉強会#3 ポジションペーパー

関西Emacs勉強会に初めて参加するので、ポジションペーパー(自己紹介)を書いてみました。


関西Emacs勉強会とは:
= (kansai-emacs #x03) => "第三回関西Emacs勉強会" - ぺっくブログミラー@peccul

名前とかハンドルネームとかブログとかskypeとかとか

大学院生(M2)@大阪大学大学院 情報科学研究科
研究内容: 仮想計算機クラスタ on P2Pオーバレイネットワーク
twitter: @sky_y
ブログ: http://d.hatena.ne.jp/sky-y/
Skype: sky_y0079
Facebookも一応やってます (Yuki Fujiwara)
Macbook (Early 2008) + iPhone 3G で頑張ってます。
peccuさんと同じ研究室、真向かいの席。

普段こんな風に使ってるとか

Emacs

8年ぐらい・・・の割に、あんまり使えていない。anything童貞。

普段の使い方

純粋なエディタとして。
ソースコードいじるとき
LaTeXで論文書くとき(YaTeXモード)


Emacs以外
Linuxの設定ファイルいじりでは、vimに浮気中。
・メモはEvernoteで。org-modeで編集できたらうれしいと思う。

好きなelisp

organize-string (http://bit.ly/h9DhTI)
あらかじめ決めておいた文字列を置換
具体的には「、」「。」→「,」「.」の置換が C-c c でできるようにしてます。
論文用に使っていますが、地味に便利です。

今回の勉強会で知りたいこと,議論したいこととか

・anythingの魅力を知って、anythingを導入せざるを得なくなりたい(?)
・すごいエンジニアと話がしたい

その他好きなこと

・街歩き。中崎町(梅田・茶屋町の近く)の周辺が、レトロな感じで好きです。
・音楽を聞きかじっています。
くるり、クラムボンCymbals土岐麻子)、スーパーカー渋谷系あたりに
反応した方は、仲良くなれると思います。

一人暮らしに! シリコンスチーマー

ひとり暮らしの男子にはシリコンスチーマーがぜったいにおすすめ - Future Insight


この記事にそそられて、LOFTでシリコンスチーマーを買っちゃいました。
これを使うと、食材を入れてレンジでチンするだけで、ズボラに蒸し料理ができてしまいます。


僕はこれのレタスグリーンを買いました。


一人暮らし用にしてはちょっと大き目に見えますが、
加熱前の野菜はかさばるので、使ってみるとちょうど良かったです。

切ってチンするだけ。温野菜

試しに、

  • にんじん1本と小さい玉ねぎ1個をざっくり切る
  • シリコンスチーマーに放り込んで、野菜の上から水をすこし浴びせてふたをする
  • 様子をみながら7分ぐらいチンする

で温野菜にして、焼肉のたれをかけてみました。
自然な甘みが出て、火もしっかり通っていたので、結構な量をペロッと食べてしまいました。


今日の朝ご飯は、この温野菜と、ウインナー・卵、冷や奴にしました。
これだけ食べるとパンやご飯が要らないぐらいお腹がふくれるので、ダイエット食としてもいいかも。

その他のおすすめメニュー

ひとり暮らしの男子にはシリコンスチーマーがぜったいにおすすめ - Future Insight より抜粋。

もやし・キャベツもお手軽に。

お金がないときの強い味方「もやし」ですが、シリコンスチーマーでチンして、ポン酢をかけてたべればそれだけでかなり行けます。また、もやしとニラを入れ、キムチの素を軽くかけてチンすれば簡単なチゲ鍋が出来上がります。個人的にはキャベツをチンしたところにGABANのスパイスドレッシングのバルサミコ・醤油味をかけ食べるのが非常に気に入っています。

鶏肉が美味しくなるらしい。

シリコンスチーマーに最も適した肉が何かと言うと冷凍の鶏肉です。冷凍の鶏肉を美味しく食べるというのは、料理的にはかなりの難易度だと思うのですが、シリコンスチーマーなら勝手にふっくら柔らかく仕上がります。

そんなわけで

野菜不足になりがちな一人暮らしに、超おすすめです。
ぜひお試しを!

カリフォルニア滞在記(2)まとめ

ブログとともにカリフォルニア滞在記をサボってしまってごめんなさい。。
(1)の次は(2)、(3)と続く予定でしたが、ひとまず全体のまとめを書いてしまいます。

さらにサボって、学校に提出した原稿をそのまま転記します。
ググったら同じ文章が出てくるかもしれませんが、誰かがパクったものではなくて自分が自分でパクったものです。ご了承下さい。

はじめに

2010年10月2日から10月30日までの約3ヶ月間、
アメリカのカリフォルニア大学サンディエゴ校 (University of California, San Diego; UCSD) にて滞在し、研究を行いました。
ここでは、現地での研究内容やアメリカでの生活について報告します。

きっかけ

私は、以前より先輩方から海外インターンシップの話を伺っており、海外留学に興味を持っていました。
渡航先を決めた直接のきっかけは、2010年3月の海外発表でした。

私は、PRAGMAという研究コミュニティが主催するワークショップで発表するために、UCSDへ訪問しました。
PRAGMAは、グリッドコンピューティングに関するプロジェクトがいくつかあり、
色々な話を聞くうちに、PRAGMAに貢献したいと思う気持ちが芽生えました。
また、滞在を通じて、カリフォルニア独特の気候の穏やかさと、落ち着いた大学の環境を肌で感じ、
こんなところで研究してみたい、と思うようになりました。
その頃、海外インターンシップについてのお誘いがあったため、
私はUCSDを渡航先として志望し、PRAGMAのプロジェクトの1つである
仮想計算機クラスタのプロジェクトについて関わることにしました。

San DiegoとUCSDについて

San Diegoはアメリカ最南端に位置する、カリフォルニア州の中の街です。
メキシコと接しており、街中にはスペイン語を話す人も多くいます。
UCSDのある場所はLa Jolla(ラホヤ)という地域で、大学から自転車で20分ほど走ると、海沿いの綺麗な風景が見られます。
気候的に非常に過ごしやすく、11月でも昼間は長袖1枚で過ごせるほど暖かい地域でした。


UCSDは広大な敷地を持ち、学部生の64%が白人以外の人種で、44%がアジア人という非常に国際色豊かな大学です。
メインストリートを歩いても、中国系・韓国系の学生が非常に多く、カフェテリアには多くの国の料理が選べます。
特に、ベジタリアン向けのメニューが充実しており、インドカレーの店ではハラール(イスラム教の教義に沿った食べ物)の表示があるなど、
マイノリティへの細かい配慮を感じました。

研究内容

私は、複数拠点間をまたぐ仮想クラスタの構築手法について研究を行いました。
通常の計算機クラスタは、シミュレーションを行う科学者の間で一般的に利用されており、クラスタで計算するためのAPIやソフトウェアも多く存在します。
仮想クラスタとは、仮想計算機を複数台接続した計算機クラスタのことで、
物理計算機の制約に縛られない、オーダーメードの均一なクラスタを構築できること、ユーザ間での資源共有のしやすさなどの利点があります。


一方、PRAGMAに所属する研究機関・大学では、(物理的な)クラスタが研究者向けに提供され、実際に計算資源の共有が行われています。
このような現状を踏まえて、複数拠点に点在するクラスタをまとめ、1つの大きな仮想クラスタとして利用したいという要望が高まっています。


しかし、このような複数拠点間仮想クラスタを実現するためには、ファイアウォールやNAT (network address translation)など、
各サイトでのネットワークポリシーに由来する制約が問題となります。
私の研究では、この制約を乗り越えるために、P2P技術を利用してネットワーク上の障壁を隠蔽したネットワーク(オーバレイネットワーク)を構築し、
その上で仮想クラスタを構築する手法について検討し、実装を行いました。


実際の研究生活では、週1回、英語でのミーティングを行い、最後に発表を行いました。
特に、指導教員からは、シミュレーションを行う科学者(ユーザ)目線からのアドバイスを多くいただきました。
また、クラスタ自動構築ツールRocksの開発者とも直接面談する機会に恵まれ、
研究で提案する手法をRocksの上で実装する方法についても具体的な助言をいただきました。
私は日本でもこの研究を続け、最終的にはこの手法をRocksの機能としてリリースすることを目標としています。

アメリカでの生活

サンディエゴは食には困らない環境でした。
日本の食材も、味噌や豆腐など基本的なものなら近くのスーパーで揃いますし、車で連れて行ってもらえるならば、日本と全く同じ品揃えのスーパーもあります。
また、中華・メキシコ系の食材も充実しています。
私は、アパートに置いてあった、本場中国の食べるラー油に感動して、自分用のお土産に買って今も食べています(笑)


サンディエゴの名物の1つが、Sea Worldという水族館とテーマパークが融合したところです。
シャチやイルカのショーもド派手で凝っていて、ずいぶんと楽しめました。
なお、ショーの席は、前方10列ぐらいにいると確実にずぶ濡れになります。


11月25日は感謝祭 (Thanksgiving day) という収穫を祝うお祭りで、友人にパーティへ連れて行ってもらいました。
大きなターキーをみんなで食べ、麻雀をしたり映画を見たりしました。
(麻雀のルールは日本とほぼ変わりませんでしたが、「白」に柄が付いていたのにビックリしました。)

おわりに

以上、研究内容とアメリカでの生活についてお話しさせていただきました。
アメリカに行って感じたことや考えたことは多くありますが、
最も強く感じたことが、「相手の文化を尊重し、自分の文化も大切にすることが今後ますます重要になる」ということです。
私のいたカリフォルニアは多国籍社会で、相手がアメリカ人であることすら前提でない場所でした。
そのような環境で過ごした経験や肌感覚は、一生忘れられないものになるでしょうし、
これからの国際化社会においても強みになると確信しております。