Google Drive に ChangeLog メモを置く

デスクトップ環境,ウェブブラウザ,日本語入力環境,Emacs をインストールしたので,だいぶ様々な作業ができる環境が整ってきた.そうなると,作業の記録を取りたくなってくる.適当なファイルに作業メモを記録しておいてもいいが,OS の再インストールの際に誤って消してしまうと悲しい.クラウドに保存しとけば,いきなり HDD などが壊れてもデータが消失することはない(セキュリティー的にリスクは増えるが).

そこで,ChangeLog メモを Google Drive 上に置くことにした.ChangeLog メモとは,横着プログラミング 第1回: Unixのメモ技術私の ChangeLog メモ活用法で紹介されている ChangeLog 形式でメモを取る方法である.利点や欠点はそれぞれの紹介ページを参照してほしい.ChangeLog メモをクラウドで保存するためには,テキストファイルをクラウド上に保存でき,ネットにつながっていればいつでもそのテキストファイルを(できれば Emacs で)編集できるのが望ましい.一つの解決策として,Google Drive を google-drive-ocamlfuse でマウントして,Emacs からテキストファイルを編集する方法を紹介する.

google-drive-ocamlfuse のインストール


yaourt で一発 ... ならよかったが,そうは問屋が降ろさない.しかし,誰かが修正して yaourt 一発になる日が来るかもしれない.とりあえず,一度,yaourt でインストールしてみる.

$ yaourt -S google-drive-ocamlfuse

いろいろインストールしないといけないが,最終的に以下のようなエラーメッセージが表示されて異常終了する.

gcc: エラー: /usr/lib/ocaml/curl/curl.a: そのようなファイルやディレクトリはありません
gcc: エラー: /usr/lib/ocaml/extlib/extLib.a: そのようなファイルやディレクトリはありません
File "caml_startup", line 1:
Error: Error during linking
Command exited with code 2.
Compilation unsuccessful after building 40 targets (0 cached) in 00:00:03.
E: Failure("Command ''/usr/bin/ocamlbuild' src/gdfuse.native -tag debug' terminated with error code 10")
==> エラー: build() で問題が発生しました。
    中止...
==> エラー: Makepkg was unable to build .
==> google-drive-ocamlfuse のビルドを再開しますか ? [y/N]
==> ------------------------------------------
==> 

どうやら /usr/lib/ocaml/curl.a と /usr/lib/ocaml/extlib/extLib.a が無いようだ.こんなバグはちょちょいと直してもらいたいものだが,他のツールとの依存関係上,なかなか修正できないのかもしれない.ということで,ocaml-curl と ocaml-extlib を再インストールする.その際に PKGBUILD を多少修正する.まずは yaourt で再インストール.

$ yaourt -S ocaml-curl ocaml-extlib

すると,「PKGBUILD を編集しますか?」と質問されるので,Y と入力する.そして,options を以下のように修正する.

options=(!strip !makeflags 'staticlibs')

ocaml-curl のインストール後に ocaml-extlib のインストールが始まる.これも同様に PKGBUILD を修正する.こっちの PKGBUILD には options の項目がないので,以下の1行を depends の下に追加する.

options=('staticlibs')

インストールが終わった後,再び google-drive-ocamlfuse を再インストールする.

$ yaourt -S google-drive-ocamlfuse

インストール終了.

google-drive-ocamlfuse の設定


Google Drive の認証を受けるため,Chrome か FireFox が必要になる.幸いにも以前 Chrome を入れたのですんなりうまくいくかと思ったら,そうでもなかった.

インストールした Chrome は google-chrome-stable だが,google-drive-ocamlfuse が求める Chrome は google-chrome なので,ハードリンクを張ることで問題を解決する.

$ which google-chrome-stable
/usr/bin/google-chrome-stable
$ pushd /usr/bin
$ sudo ln google-chrome-stable google-chrome
$ popd
$ google-drive-ocamlfuse

google-drive-ocamlfuse が起動すると,Chrome 上で google-drive-ocamlfuse が Google Drive にアクセスしていいか許可を求めてくるので承認する.

そして,Google Drive のマウントポイントを作成し,以下のようにマウントする.

$ cd ~
$ mkdir GoogleDrive
$ google-drive-ocamlfuse GoogleDrive

これで Google Drive にファイルを置くことができる.df コマンドでマウントできているか確認できる.

ちなみに,マウントした GoogleDrive をユーザーレベルで(sudo を使わないで)アンマウントするのは以下の通り.

$ fusermount -u GoogleDrive

Emacs の設定


~/.emacs.d/init.el に設定を追加して ChangeLog メモを簡単に開けるようにする.以下の設定を init.el に追加するだけ.XXXXX はご自身の名前やメールアドレスを適切に置き換えること.

;; ChangeLog memo
(setq user-full-name "XXXXXXXX")
(setq user-mail-address "XXXXXXXX@XXXXXXXX")
(defun memo ()
  (interactive)
    (add-change-log-entry 
     nil
     (expand-file-name "~/GoogleDrive/Note/diary.txt")))

この設定は上述の「横着プログラミング」を参考にした.

スクリプトの記述


思いついた時にスッと ChangeLog メモを取れるように,スクリプト memo を ~/bin 以下に作成した.~/bin にパスを通しておけば,簡単に起動できる.

$ cd ~
$ mkdir bin
$ cd bin
$ vi memo
#!/bin/bash

google-drive-ocamlfuse ~/GoogleDrive
emacs --eval "(memo)"
fusermount -u ~/GoogleDrive
$ chmod a+x memo
$ cd ~
$ vi .bashrc
export PATH=$PATH:~/bin  ← この行を追加
$ . .bashrc

実際に memo を実行(& を付けずに memo とだけ入力)すると,Google Drive 上にある Note フォルダの下の diary.txt が表示される(10秒位待たされる場合がある).この時,ミニバッファ(一番下の1行だけのバッファ)に

diary.txt chaned on disk; really edit the buffer? (y, n, r or C-h)

と表示されるが,y と入力すると,適切な位置に新しいエントリができるので,後はメモを取るだけ.

保存する時にも

diary.txt has changed since visited or saved. Save away? (yes or no)

と聞かれるので yes と入力する.


メモを取るときは

$ memo

と打って,起動した Emacs にメモを取り,保存して終了すれば Google Drive をアンマウントしてくれる.Google Drive へのアクセス承認は30日間だけらしいので,後日,再度承認を求められると思う.

今日はこの辺で.

応援よろしくにゃ〜.
にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村

コメント

このブログの人気の投稿

第1回 ラムダ抽象と関数適用

パソコンの Arch Linux に Emacs をインストール

パソコンの Arch Linux に Chrome をインストール