マインドマップから全てを紡ぎ出す - XMind+Pandocのドキュメント作成術 -


（13.12.10 改訂）

## 前書き

ぶっちゃけると、この記事が書きたかっただけです。
その勢いでAdvent Calendarを作ってしまいました。

とはいえ、もう少し「ドキュメントを作る」ことに注目が集まってもいいのではないかと思います。
Markdownが流行っていることですし、LaTeXユーザもたくさんいますし。

というわけで、ドキュメント作成Tips Advent Calendarの第1回では、
「マインドマップであらゆる文書を書く方法」について、
自作ツールの宣伝も兼ねてお送りします。


## あらすじ

### マインドマップを使った文書作成フロー
この画像を順に追う形で説明していきます。

![マインドマップを使った文書作成フロー](http://cl.ly/image/20132W013343/12.11.30_doc_advent.png)

### 誰に読んでほしいか

* 報告書やブログ記事・プレゼン資料など、章立てやしっかりとした論理構成をもつ文書を作りたい全ての人
* 白紙のWordやエディタを前にして、呆然としたことのある人
* とにかく文書作成で楽したい人


## マインドマップ作成ソフト XMind

### そもそもマインドマップとは

マインドマップとは、元々はトニー・ブザン(Tony Buzan)が提唱した思考・発想法の一つです。
表現したい概念の中心となるキーワードやイメージを中央に置き、
そこから放射状にキーワードやイメージを広げ、つなげていきます。
このようにマップを広げることで、効率的かつ創造的なブレインストリーミングが可能になります。


マインドマップには、ブザンが考案したオリジナル・本家のマインドマップと、その派生があります：

* オリジナルの方（ブザンのマインドマップ）は、描き方や色の使い方など細かいルールがある
* そこから派生した（広義の）マインドマップは、アウトラインの一形式として広まっている
  * 次に紹介するXMindは、どちらかといえば派生版マインドマップです

### XMind

XMindは、（広義の）マインドマップを作成するソフトです。
XMindの詳しい情報・ダウンロードは以下を参照してください： [日本語版公式サイト](http://jp.xmind.net/)

* 【注意】最新版 (XMind2012) は日本語入力のバグがあるので、前バージョンのXMind3.2の使用を推奨します


### スクリーンショット
今書いているこの文書（書きかけ）のスクリーンショットはこんな感じです。

![XMindのスクリーンショット](http://cl.ly/image/1S2F3j2q2O3q/12.11.30_XMind_ScreenShot.png)


### XMindの良さ
類似のソフトとしてFreeMindなどがありますが、私があえてXMindを好んで使っているのには、いくつか理由があります。

#### マップがカラフルで美しい

ブザンのマインドマップでは、カラフルであることが重要です。
なぜなら、色は右脳に訴えかけ、想像力を豊かにするからです。

Xmindはカラフルなテーマが付属しています。見た目も美しく、気持ちよく使用できます。
また、備え付けマーカー（アイコン）がカラフルで使いやすいのも特徴です（必要であれば、自分でマーカーを追加することも可能です）。
一方、FreeMindはグラフィカルな面で貧弱な点が否めません。


#### アウトラインエディタとして優れている

これはFreeMindでもあてはまりますが、
ドラッグ＆ドロップでブランチ（枝）の配置を直感的に変えられるのが最大の魅力です。
この機能は文章の章立てを考えるときに便利で、文書の構造を大胆に変えられるのは大きなメリットです。

例えば、一度Word文書に書いたものについて、節単位の入れ替えなど大幅な修正をする場面を想像してみてください。
「はじめに」という節に書いた文を「おわりに」という節に移すだけでも、Wordだと一苦労だと思います。
マインドマップ上では、項目をドラッグ＆ドロップするだけで簡単に修正できます。

#### マルチプラットフォーム

XMindは、Windows, Mac, Linux(Debian/Ubuntu)という、現代で使われるPC環境のほとんどをカバーしています。
Javaで動作しているので、Debian系以外のLinuxユーザでも使えます。

#### 基本機能は無料

普段使うような機能については、無料で使用できます。
PDFエクスポートなど一部有料の機能がありますが、画像エクスポートは無料のため十分使えます。


## XMinDoc (旧：XMorgDown)

しかし、XMindのエクスポート機能は正直言って貧弱です。
HTMLについてはH3タグまでしかエクスポートできず、それ以下はべた書きになってしまいます。

そこで、XMinDocという自作ツールをRubyで書きました。
（以前はXMorgDownという名前で配布していましたが、gem化に伴い名称変更しました。）

このツールは、XMindファイルを色々なフォーマットに変換します。

* 出力フォーマット： Markdown, Org-mode, LaTeX, HTML, etc...

このツールは、実はPandocという神のようなツールの助けを借りています。
PandocはHTMLやMarkdown・LaTeXなどの文書を、多種多様なフォーマットに変換するHaskell製ツールです。
開発も活発に行われており、今後注目されるべき激アツなツールの一つです。
詳しくはこちらを参照してください：

* [About pandoc](http://johnmacfarlane.net/pandoc/index.html)


### XMinDocの中でやっていること：XSLT + Pandoc
XMinDocは以下のような処理を行っています：

1. XMindのファイルからXMLを抽出
2. XSLT (XML Stylesheet Language Transformations) でXMLをHTMLに変換
3. PandocにHTMLを食わせて、色々なフォーマットに変換

### 使い方・インストール方法
詳しい使い方・インストール方法は以下をご覧ください：

[XMinDoc: XMindのマインドマップをMarkdownなどに変換できるスクリプトをgem化した - Qiita [キータ]](http://qiita.com/sky_y/items/782cb656ce8b35bc2c9f)


## Edit & Publish

マインドマップから生成した文書は、まだ骨格のみの状態です。
次の段階では、この骨格に対して、MarkdownやOrg-modeなどで文書の肉付けしていきます。
最後に、肉付けした文書を適当な形式にエクスポートし、体裁を整えて完成です！

### Markdown

Markdownは、GithubやQiitaで採用されている軽量マークアップ言語です。もはや説明不要ですが、一応。

* Pandocオプション： -t markdown

#### 出力

##### HTML

PandocやMarkdownエディタ(Mouなど)でHTMLに変換できるので便利です。
私はMac用Markdownエディタの[Mou](http://mouapp.com/)で編集した後、
プレビュー画面のHTMLをコピーしてEvernoteに貼り付けたりしています。

##### WordPress

WordPressのプラグインを使うと、Markdownで記事が書けます。
私が使っているのは、このプラグインです（管理画面でプラグインを検索したら出てくると思います）。

* Markdown on Save Improved
* Markdown QuickTags

##### HatenaDiary

markdown2hatena (@joker1007 さん作) を使用すると、Markdownをはてな記法に変換出来ます。

* [（ツール紹介）Markdown記法をはてな記法に変換するツール - 雲行きそらゆきココロイキ](http://d.hatena.ne.jp/sky-y/20120830/1346329634)


### Org-mode

Org-modeはEmacs公式の文書作成・TODO管理モードです。
Markdownによく似た（しかし遥かに高機能な）Org-mode用の記法があります。
ドキュメントの日本語訳が追いつかないほど、多機能で奧の深いツールです。

個人的には、編集機能が強力なのでMarkdownよりも好きです。
見出し表示をまとめる機能があり、Org-mode単独でアウトラインエディタとして十分使えます。

まだ開発段階ですが、Vimにも一応Orgクローンがあるらしいです。

* [VimOrganizer : An Emacs' Org-mode clone for Vim](http://www.vim.org/scripts/script.php?script_id=3342)

Pandocのオプションは以下の通りです：

* Pandocオプション： -t org

#### 出力
エクスポート形式が豊富なのも、Org-modeの特徴です。
エクスポートは C-c C-e で選択用バッファが開きます。

##### LaTeX

Org-modeはLaTeXと非常に相性がよく、強力な連携機能（RefTeX、数式埋め込みなど）も魅力です。
プレゼン用スタイルファイルBeamerにも対応しています。

##### HTML
HTMLエクスポートにも対応しています。
適当なCSSを自分で指定すれば、きれいに表示できます。

##### OpenDocument形式

OpenDocumentはLibreOffice/OpenOffice.orgのファイル形式です。
Org-modeではWriter形式に対応しています。
アウトライン構造まで忠実にエクスポートしてくれるのが、非常にうれしいです。

さらに、LibreOfficeを用いてMS Word形式にエクスポート可能なので、
事務や共同作業の都合でWord形式の提出を迫られても安心です。


### LaTeX

実はPandoc(XMorgDown)の段階で、直接LaTeXを出力できます。

* Pandocオプション： -t latex

Beamerにも対応しています。

* Pandocオプション： -t beamer

つまり、以下のうちから好みで選べることになります：

* Org文書を編集してからLaTeX出力する
* Pandocで直接LaTeX出力して編集する

### その他

その他、Pandocに対応しているものは何でもOKです。
詳しくは以下のサイトを見てください。

* [Pandoc User’s Guide](http://johnmacfarlane.net/pandoc/README.html)

> It can read markdown and (subsets of) Textile, reStructuredText, HTML, LaTeX, and DocBook XML;
> 
> and it can write plain text, markdown, reStructuredText, XHTML, HTML 5, LaTeX (including beamer slide shows), ConTeXt, RTF, DocBook XML, OpenDocument XML, ODT, Word docx, GNU Texinfo, MediaWiki markup, EPUB, Textile, groff man pages, Emacs Org-Mode, AsciiDoc, and Slidy, Slideous, DZSlides, or S5 HTML slide shows. It can also produce PDF output on systems where LaTeX is installed.



## 終わりに

最後に、ここまで説明した文書作成フローをおさらいしましょう。

![マインドマップを使った文書作成フロー](http://cl.ly/image/20132W013343/12.11.30_doc_advent.png)

私はいつもあらゆる文書をこのフローで作成しています。
もちろん、この記事も同じフローに乗っています。
セットアップ（特にXMorgDownのインストール）が大変だと思いますが、
そこを乗り越えると非常に快適なWriting Lifeが待っています。

もちろん、そこまで行かなくても、紹介したツールや言語のどれかに興味を持ってもらえれば幸いです。
（特に、Pandocはもっと知ってもらいたいです！）
ぜひ興味を持ったツールを試してみてください！