コンテンツへスキップ

モーレツ! Org mode 教室 その1: 素早くメモを取る

turned on monitor displaying codes


もくじ

Org modeとは

わたくしは元々EmacsVimも、Visual Studio Codeすらも使う(GNU/Linux上でも案外ちゃんと動くので)いい加減な人間なのだが、最近ではEmacsを使う頻度が上がっている。というか、最近はEmacsしか使っていない。それは主にOrg modeのせいである。

Org modeというのは、もともとアウトラインプロセッサを提供するEmacsの拡張機能のようなものとして開発されたらしいのだが、その後建て増しに建て増しを重ねた違法建築みたいなことになっていて、本業のアウトラインプロセッシングはもとより、メモ取り(本記事)も日記TODO管理もスケジュール管理も進捗管理も時間管理もプレゼンスライド作りも表計算も図の作成も貼ったコードの実行もできるようになり、さらにOrg modeを拡張する拡張機能というのも大量に開発されているので、途方もない代物になっている。今やEmacsはテキストエディタではなく、Org modeのフロントエンドと考えたほうが良いのではないか。

とはいえ、何でもできるというのは、何をやらせたらよいのかわからないというのと同義であって、私自身も10年くらい前に一度試して挫折したのだが、とっかかりとしてOrg modeを用いたメモ取りから始めるとスムーズに使い始められるように思う。最近Org modeについて人に説明する機会があったので、とりあえずメモ取りのやり方から書いてみよう。

Emacsのインストール

その前に、Emacsのインストール方法を手短に。

GNU/Linuxの場合、大概のディストリビューションにはEmacsが入っていると思うので、それをインストールすればよい。

Windowsの場合、公式ビルドはEmacs 26.3までは普通にIME経由で日本語入力できないので(最低限のパッチをupstreamへ入れてもらったので26.3以降は直った)、いわゆる日本語IMEパッチを当てたビルドを探して入れるとよい。私が用意しているものもある。

Macについては良く知らないが、HomebrewやMacPortsからインストールできるようだし、Emacs For Mac OS Xというのもあるようだ。

Androidの場合、端末エミュレータのTermuxを入れてその上でEmacsをインストールするのが一番簡単だと思う。以前書いたAndroid上でEmacsをまともに使うにはを参照してやってください。

すでにEmacsがインストールされている場合、バージョンがやたら古い場合があるので、最低でもEmacs 25以上が入っていることを確認すると良い。EmacsのバージョンはM-x versionで調べられる。なおM-x云々というのはMetaキーを押しながらxを押し(と「ミニバッファ」という下のバッファにカーソルが移ってコマンドが入力できるようになる)その上で「version」と入力する、ということで、GNU/LinuxやWindowsではMetaキーはふつうAltキーだが、MacではOptionキーなんですかね?ちなみに、C-xというのはCtrlキーを押しながらxを押すという意味である。なお、Org mode自体のバージョンはM-x org-versionで調べられる。

GNU/Linuxの場合は気にしなくて良いが、Windowsの場合、ホームディレクトリをWindowsの環境変数HOMEで指定しておくと何かと便利である。C-x C-fを押してミニバッファに~/と書き、タブキーを2回押す(文章で書くとなんだかやたら複雑なことをやっているようだが、ホームディレクトリ(~/)にあるファイルを開くべくファイラのDiredを実行しているだけ)と、現時点でのホームディレクトリがどこか見当がつくので、そこが気に食わない場合は自分でHOMEに指定するとよい。ここの下に設定ファイル(~/.emacs.d/init.el)を置くことになる。Windowsのユーザディレクトリに合わせるのが無難なので、おすすめはC:\Users\ユーザ名とかでしょうか。

Emacsの本当に最低限の設定

Emacsの設定は、凝り始めると際限なく出来て泥沼にはまるので、この段階では極力最低限に留めたい。そういう意味では、日本語をUTF-8で使うための最低限の設定として、~/.emacs.d/init.el(あなたがたのような老害は~/.emacsとか~/.emacs.elに設定を書いていると思うが、最近のナウいヤングはこちららしい)に

  

;; 日本語環境の設定

(set-language-environment "Japanese")
(prefer-coding-system 'utf-8)
(set-default 'buffer-file-coding-system 'utf-8)

あたりを入れておけばよろしいのではないでしょうか。なお;;はEmacs Lispにおけるコメント行の指定である。

もう一つ頭が痛いのがフォントの設定で、正直未だによく分からないのだが、とりあえず英数字はConsolasフォントが気に入っているので、Windowsでは

  

;; Windowsにおけるフォントの設定(Consolasとメイリオ)
(when (eq system-type 'windows-nt)
  (set-face-attribute 'default nil :family "Consolas" :height 110)
  (set-fontset-font 'nil 'japanese-jisx0208
                    (font-spec :family "メイリオ"))
  (add-to-list 'face-font-rescale-alist
               '(".*メイリオ.*" . 1.08))
  )

GNU/Linuxでは

  

;; GNU/Linuxにおけるフォントの設定(IncosolataとIPA exGothic)
(when (eq system-type 'gnu/linux)
  (set-frame-font "Inconsolata-14")
  (set-fontset-font t 'japanese-jisx0208 (font-spec :family "IPAExGothic"))
  )

として、環境に応じて切り替わるようにしている。WindowsのConsolasとメイリオは標準でインストールされているが、GNU/LinuxではConsolasのぱちもんのInconsolataIPA exフォントを自分でインストールする必要がある。たぶん今では大概のディストロでパッケージ化されていると思うが…。ちなみにDebian/Ubuntuならfonts-inconsolatafonts-ipaexfontパッケージをインストールすればよい。

なお、Androidは何も指定せずTermuxのデフォルト任せである。Macは想像もつきません。

Org modeのアップデート

Org modeは今やEmacsに標準添付なので、Emacsを入れれば自動的に付いてくるのだが、バージョンがやや古く、Org modeへの拡張機能が動かなかったりすることもある(例えばOrg-journalはOrg 9じゃないと動かないみたい)。なので、手でアップデートしておくと良い。まあバージョン9以上ならだいたい大丈夫じゃないでしょうか。

最近のEmacsはpackage-elという拡張パッケージ管理機能を標準で持っているので、M-x list-packagesから一覧形式でorgを探してその上でi、次いでxを押してインストールするか、M-x package-install orgで直接インストールすると良い(最新安定版のorgは標準のgnuレポジトリにあるので、とりあえずこの時点ではMELPA等を自分で指定しなくても大丈夫なはず)。

ちなみに、最近だとEmacsのelispパッケージ管理は、私も含めてたぶんCask(とPallet)を使っている人が多いと思うのだが、Pythonを入れなければならなかったり、説明がめんどくさいので、興味がある人は自分で調べてください。package-elはGNU/LinuxだろうがWindowsだろうがMacだろうがAndroidだろうが動作するはずで、このマルチプラットフォーム性も今どきのEmacsのメリットの一つである。package-elで入れたパッケージを、後からCaskの管理下に移すこともできる。

と昔は書いていたのだが、今は他のパッケージ管理スキームが普及し、私自身はstraight.elを使っている。詳しくはこの記事を参照。

Org modeの本当に最低限の設定

Org modeの設定もまた泥沼になりがちで、とにかく極力最低限にしたい。どうしても指定しなければならないのはOrgファイルのありかで、

  

;; Org modeの設定

;; ファイルの場所
(setq org-directory "~/ownCloud/Org")
;;(setq org-directory "~/Dropbox/Org")
(setq org-default-notes-file "notes.org")

とか指定する。DropboxやownCloudのようなクラウドストレージにOrgディレクトリを作って指定するのがおすすめで、これにより複数環境で簡単にメモを同期できるようになる。Android上のTermuxの場合、Androidのバージョンや外部SDカードの有無、Dropbox等アプリのバージョンによってファイルが置かれる場所が違うらしく一概には言えないようだが、オフラインでもアクセスできるよう設定すればどこかにはあると思うので、そのパスを指定してやればよい。私の以前の記事のようにtermux-setup-storageを実行していれば、~/storage/shared/Android/data/com.dropbox.android/files/なんとか/かんとか/Orgとかでアクセスできるのではないかと思う(ただ、リアルタイムで同期されず不便なので、私自身は使っていない。何かうまい手はないかねえ)。

メモを取る

いよいよ本題である。わたくしは頭が弱いので、何かを思いつくとすぐ忘れてしまう。なので、思いついたらとにかくすぐに書き留めなければならない。そこで手元に紙とペン(というか鉛筆)が欠かせなかったのだが、Org modeのおかげで、とりあえずコンピュータの前にいるときだけは、ようやく紙のメモとおさらばできたのである。

で、そのOrg modeのメモ取り機能がOrg-captureだ。先述の通り、現在のOrg modeには意味不明なくらいに様々な機能が盛り込まれているのだが、別に機能があるからといって使わなくてもいいので、私などは多分Org modeの使用時間の80%くらいはOrg-captureだと思う。

Org-captureの設定だが、とりあえずは

  

;; Org-captureの設定

;; Org-captureを呼び出すキーシーケンス
(define-key global-map "\C-cc" 'org-capture)
;; Org-captureのテンプレート(メニュー)の設定
(setq org-capture-templates
      '(("n" "Note" entry (file+headline "~/ownCloud/Org/notes.org" "Notes")
         "* %?\nEntered on %U\n %i\n %a")
        ))

とかでよろしいのではないかと思う。最初はOrg-captureを呼び出すキーシーケンス(キー打鍵の組み合わせ)の設定で、ようするにC-c c(Ctrlを押しながらc、その後Ctrlを押さずにc)である。C-cプラスなんとかはユーザが設定できるよう予約されているので、好みでc以外に変えても良いが、まあこれが一番素早く打てるシーケンスじゃないでしょうか。

で、このように設定すると、とにかくEmacsの中にいれば、C-c cを押すといつでもメニューが出てくる。ここで、nを押してやると指定したパス、このサンプルでは~/ownCloud/Org/notes.orgにメモが書け、C-c C-cを押すと保存されて元のバッファに戻る(保存せずに捨てたければC-c C-k)という寸法になっている。nというキーやメモを保存するファイル名がどこで指定されているかは見ればだいたい見当がつくと思うが、file+headlineだの%?だのに関しては後回しにしましょう。

メモを見る

書いたメモはさっとすぐに見たいのである。

 

;; メモをC-M-^一発で見るための設定
;; https://qiita.com/takaxp/items/0b717ad1d0488b74429d から拝借
(defun show-org-buffer (file)
  "Show an org-file FILE on the current buffer."
  (interactive)
  (if (get-buffer file)
      (let ((buffer (get-buffer file)))
        (switch-to-buffer buffer)
        (message "%s" file))
    (find-file (concat "~/ownCloud/Org/" file))))
(global-set-key (kbd "C-M-^") '(lambda () (interactive)
                                 (show-org-buffer "notes.org")))

とか~/.emacs.d/init.elに書いておくと、Ctrl-Meta-^を同時に押せばすぐに~/ownCloud/Org/notes.orgを開くようにできる。* Notes...のように...が付いている見出しは、その行でTABキーを押すと開閉されてその下の内容が見えたり見えなくなったりするようになる。見終わったらC-x 左矢印で元いたバッファに戻れるはず。

Emacs以外のエディタ等でnotes.orgの中を覗いて見ればだいたい分かると思うが、Orgが管理するファイル(拡張子が.org)は実体はテキストファイルで、*の数で階層付けがされている。先ほどの(file+headline "ファイル名" "Notes")というのは、ファイルの中の* Notesという項目のひとつ階層下に** メモのタイトルという感じで追記しろ、という指定であった。これも実は好きに変えられるので、もっと知りたい人はThe Org Manual: Template elementsを見るとよい。

%?だの%UだのはThe Org Manual: Template expansionに詳しい説明があるが、ようするに\nは改行、%?はOrg-captureのバッファを開いたときのカーソルの位置、%Uはタイムスタンプ、%iC-c cを叩いたときに選択されていたリージョンの内容、%aC-c cを叩いたときに開いていたファイルへのリンク(本当はorg-store-linkで保存されたリンクだが)で、リンクの上でC-c C-oを押すとリンク先のファイルを開くことができる。まあ%iとか%aはオプション的なので指定しなくても良いし、全て自由に変えて構わない。例えば、メモなのでタイムスタンプだけでいちいちタイトルをつけなくて良い、という場合は、%?の位置を変えて* %U\n%?とかにしてやればよいのである。

まとめ

というわけで、以上のようにあれやこれやと設定すると、

  1. とにかく何か思いついたらC-c cn→何か書く→C-c C-cで保存
  2. C-M-^でメモを見る

でいつでもメモを取ったり見たりできるようになる。C-c c nは手に馴染むので、そのうち何も考えずにメモが取れるようになるだろう。これだけでもOrg modeが使えてよかったという気になりませんか。ならないか。ひとまずおわり。第2回はまとまった文章の書き方である。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください