cacoo.el v2.0 リリース

cacoo.el を更新しました。

表向きは Anything で Cacoo の絵が選べるようになったぐらいですが、内部的にはかなり別物になりました。非同期処理を deferred.el と concurrent.el でほぼ全面書き直ししました。その結果、キャッシュ画像の扱いが賢くなり、動作速度の向上や信頼性などが向上しています。

動かした方が分かりやすいと思いますのでムービーを作ってみました。



ムービー内容:画像を一気に表示、Anythingで選択、プレビュー表示、migemo検索・絞り込み、文書へ貼り付け、サイズ調整

cacoo.elの説明については、github上のREADMEファイルに詳しく書いていますので、ぜひそちらも参照してください。

インストールと設定

必要なもの:

通信には wget 、画像変換には ImageMagick を使います。多分Emacs使っているような人は大抵入っているのではないかと思います。

APIキーは、Cacooにログインして、「設定」>「APIキー」のページから取得できる文字列です。APIキーはCacooの図をAnythingで選択するために必要なものです。Cacooのアカウントが無くても画像のインライン表示自体は動きます。

anything.elはすでに皆さん入っていると思います。まだの人はるびきちさんのAnythingの記事とかを参考にしてみてください。

elispファイルは、auto-install.elで以下の式を評価して入れるか、ダウンロードしてload-pathの場所に置いてください。

;; auto-installを使う場合
(auto-install-from-url "https://github.com/kiwanami/emacs-deferred/raw/master/deferred.el")
(auto-install-from-url "https://github.com/kiwanami/emacs-deferred/raw/master/concurrent.el")
(auto-install-from-url "https://github.com/kiwanami/emacs-cacoo/raw/master/cacoo.el")
(auto-install-from-url "https://github.com/kiwanami/emacs-cacoo/raw/master/cacoo-plugins.el")

以下設定例です。

;; 基本設定
(require 'cacoo) ; cacooを読み込み
(require 'cacoo-plugins)      ; 追加機能
(setq cacoo:api-key "APIKEY") ; ←CacooのAPIキーを入れる(使わない人は無くてもOK)
(global-set-key (kbd "M--") 'toggle-cacoo-minor-mode) ; Alt+「-」で切り替え
;; 追加設定
(setq cacoo:img-dir-ok t) ; 画像フォルダは確認無しで作る

そのほかの設定については、READMEファイルや cacoo.el の頭のカスタマイズ変数のあたりを参照してください。

以前のバージョンを使っている人

基本的に上の新規インストールの通りで大丈夫です。CacooのAPIキーの設定が今回必要になったものです。APIキーがあれば非公開の図もAPI経由で取ってこれるようになりました。
以前の設定やマークアッププラグイン、キャッシュファイルはそのまま使えるはずです。以前までの使い方にも変更はありません。

使い方

絵を表示させたいなと思ったら cacoo-minor-mode を ON にします。(上の設定だと Alt+「-」)

テキスト中に以下のように記述して 'cacoo:reload-all-diagrams-command' (C-c , R) すると Cacoo の絵が入ります。

[img:https://cacoo.com/diagrams/6m4ATG1ddlUiHPqd-0FAF7.png]

'cacoo:anything-command' (C-c , I) すると、Cacooの絵(各シートも含めて)をAnythingで選ぶ画面になります。(上の動画参照)

貼り付けた図はローカルにキャッシュされます。キャッシュは現在のディレクトリ(バッファが保存されるディレクトリ)のなかの「.cimg」というディレクトリに保存されます。オリジナルの図とリサイズされた図が保存されます。

キャッシュがあればネットワークに接続にいきません。リロード 'cacoo:reload-all-diagrams-command' するとキャッシュを消して取りに行きます。リサイズもこのときに行われるので、サイズを変えたいときはリロードしてください。

機能・キーバインド

'cacoo-minor-mode' が ON の時に以下のキーバインドが使えます。メニューからも選べます。

バッファ全体に対して
C-c , T バッファのすべての図をテキストに戻す
C-c , D バッファのすべての図を表示する
C-c , R バッファのすべての図を取得し直す
カーソール直後の図に対して
C-c , t テキストに戻す
C-c , d 図を表示する
C-c , r 図を取得し直して表示する
C-c , e 図の編集画面を表示する(Cacoo)
C-c , v 図の詳細画面を表示する(Cacoo)
C-c , V ローカルの図を外部ビューアーで開く
カーソールが含まれる図に対して
C-c , g 図のリロード表示・テキストに戻すのトグル
API / Cacooの機能に対して
C-c , I Anythingで図を選択して挿入
C-c , N 新規図の作成(Cacoo)
C-c , l 図の一覧(Cacoo)
ナビゲーション、編集
C-c , n 次の図に移動
C-c , p 前の図に移動
C-c , i 図のマークアップを挿入
C-c , y クリップボードのテキストを使って図のマークアップを挿入
その他
C-c , C キャッシュディレクトリを空にする
表示できる図について

Cacoo 以外の図でも以下のような図を表示することができます。(もちろん編集はできません)

Web上の画像 [img:http://example.com/zzz.png]
ローカルの画像(絶対パス [img:file:///xxx/yyy/zzz.png]
ローカルの画像(相対パス [img:zzz.png]

また、プラグインによって動的に生成(org-babelが図になったイメージ)した画像を表示させることも出来ます。

画像取得時のエラーについて

画像の取得や変換中にエラーが起きた場合、該当箇所の色が変わります。また、マウスオーバーで短くエラーメッセージがポップアップで表示されます。

今後

今後の記事で以下の内容を予定しています。

上はLinuxで画面キャプチャが貼り付けられない問題が発生する場合があるのですが、これをChromeReplを使って可能にする方法を紹介します。方法自体はおそらく一般的なので、ローカルアプリとWebアプリを組み合わせる際に応用が利くと思います。

下は半年間いろいろ作ってきた経験をふまえて、非同期アプリの設計の方法についてのまとめを書こうと考えています。おそらく、EmacsでWindow間やバッファ間をまたぐアプリや、Emacsの外の世界と非同期にやり合うアプリでの一つの方針が示せるのではないかと考えています。まだ考えているだけですので、もし間に合えば開発環境勉強会などで議論やいろいろ教えていただければと思っています。

その他

Cacoo API への対応は昨年末には一通り出来ていたのですが、いろいろと手直ししていたり寄り道しているうちに時間がかかってしまいました。思ったよりもなかなか時間がないです。

cacoo.elは、手元ではmarkdownhowmなどと組み合わせて、図を含めた文章の効率的な作成環境となっています。Emacsとの組み合わせは下手なローカル作図アプリよりも最高です。

有料プランだとPDFやSVGなどにより図のExportや印刷が可能ですので、もはや方眼紙Excelの出番は無くなってしまいました。また、Web上でマニュアルなどを作成される方は、画像ファイルの管理やわざわざアップロードする手間が無くなりますので、これまたすごく便利です。この機会にPayPal支払いの練習もかねてぜひどうぞ!!!