kondoumh のブログ

- とあるソフトウェアエンジニアのめったに更新されないブログ -

ChangeLog メモの移行先を考える

メモ環境をモダン化したい

Trello に移行してみて日常に定着するツールの必要条件としてデスクトップ・モバイルともに使いやすい UI が提供されることが重要だと実感しました。

blog.kondoumh.com

OrgMode は Emacs 使える環境じゃないとダメなので使う頻度が下がってます。

blog.kondoumh.com

日常のメモについては10年以上 ChangeLog メモを Vim や Emacs で書いていて、最近だと Dropbox に Sync しスマホや iPad でもテキストエディタで編集するというスタイルです。

blog.kondoumh.com

ChangeLog メモについては ↓ などをご参照ください。

脱 Emacs もしたいですし、モバイルの UX も向上してほしいです。

移行候補としての Markdown ツール

Markdown エディタはデスクトップでもモバイルでも昔から結構な数ありますが、最近 Electron や React Native (RN) など Web 由来の技術で開発されたクロスプラットフォーム & マルチスクリーンなツールが増えてきました。Electron は Web の洗練された UI とローカルストレージへのデータアクセス機能を提供できます。RN は iOS や Android のコンポーネントを抽象化しているので、各プラットフォームにそれなりの UI を提供可能です。

正月休みにいくつかのツールを試してみました。

  • Joplin
  • Boostnote
  • Quiver

の3つです。

対応プラットフォーム、データフォーマットなど並べてみました。フィーチャーとしてストレージサービス対応、タグ付けなどは、ほぼすべてのツールで利用可能でした。デスクトップ版では執筆に集中するための Zen mode 的な機能もだいたいサポートされてます*1

クロスプラットフォームなコードエディタの最右翼 Visual Studio Code も比較対象としました。VS Code ならではのフィーチャーとしては IntelliSense による入力アシスト、Extension による機能拡張が挙げられます。

Joplin Boostnote Quiver VS Code
macOS
Windows -
Linux -
iOS -
Android - -
Format Plain Text CSON Binary Plain Text
Markdown Preview
Tagging -
ToDo List - -
Zen mode
Storage Service -
Syntax Hilighting
Input Assistance - - -
Extension - - -

以下、個別に見ていきます。

Joplin

Joplin - an open source note taking and to-do application with synchronisation capabilities

個人の OSS プロジェクトのようです。各プラットフォームを網羅しています。

ToDo 用のメモを追加できて進捗を管理できます。ToDo はメモ単位であり、メモ内に ToDo リストは持てません。

Evernote のデータをインポート可能です*2

日本語のテキスト編集にやや難があります。デスクトップもモバイルもかなり荒削りな印象。開発が進めば化けるかもしれません。

Boostnote

boostnote.io

国産の OSS らしいです。デスクトップの UI は結構頑張っている印象です。

メモ内で ToDo リストを管理できます。ToDo リストは OrgMode 形式 (リスト記法と square brackets の組み合わせ - [X]) です。プレビュー側ではチェックボックスとして表示され、チェックをオン・オフすると編集側も同期して更新される双方向バインディングです。メモ内の ToDo 総数と進捗が把握できます。この UI は Trello そっくりです。

Dropbox とのシンクロ方法は以下にありますが、先にデスクトップ版でファイルシステムとして登録しておき、モバイルアプリでシンクロするという手順が必要です。

medium.com

モバイルアプリの編集画面は簡素で保存しないとプレビューできません。RN で実装されています*3。モバイルアプリは新規メモ追加時にアプリがクラッシュするという現象が頻発していました。

ファイル形式としては、CSON *4 形式で Markdown データを内包しています。ファイル名がハッシュ値から機械的に生成されるため、ファイルが多くなってくると他ツールとの相互運用は難しいでしょう。

Quiver

happenapps.com

洗練されたデザインで、現状プロダクトとしての水準は (VS Code を除いて) 一番高い印象です。App Store の有料アプリですが、Free Trial 版が利用できます。

デスクトップは macOS オンリー。モバイルは iOS 版がありますが、編集機能はなく参照オンリーです。

ファイルが独自のバイナリ形式なので、他ツールへの乗換が面倒そうです。Apple 製品だけで生きている人にはよいかもです *5

コードのシンタックスハイライトは、Preview だけでなく 編集画面でも有効になります。

Markdown のシンタックスハイライトは若干バグっています。macOS で時々日本語入力ができなくなるなどの挙動が気になりました。

ツール評価結果

Markdown ツールのデスクトップ版は Quick / Boostnote がよさそうでした。ただ、いずれもモバイルアプリが発展途上な感じで移行がためらわれます。

タグ付け機能もローカルに複数ファイルのメモを溜め込む使い方をしていないので無くても困りません。

ToDo リストも Trello 使ってるので移行のための動機づけにはなりません。

VS Code は JavaScript 書くのに使っていて Markdown エディタとしても並のツールを凌駕しています。もはや ChangeLog のためだけに Emacs を起動しておくのもなんだし・・

結局 Markdown ツールを採用するのではなく常用エディタを Emacs から VS Code に移行することにしました。

Markdown への移行?

Markdown サポートツールが大半なので日常のメモフォーマットとして移行できないか検討しましたが ChangeLog に長年慣れた身には移行が厳しそうでした。

blog.kondoumh.com

Markdown はしっかりした構造の文書を書くためのフォーマットという意識があります。

タイトル
=============
# 見出し1
## 見出し1-1
本文
- 箇条書き1
- 箇条書き2

ChangeLog はソフトウェアアップデート情報を記述するための形式で、日付と更新者、変更内容を簡潔に書くのに適しています*6

ChangeLog 形式:

2018-01-11  Thu. <kondoumh@local>

    * 機能追加1:かくかくしかじか
    - 箇条書きも OK
    * バグ修正1:云々

ChangeLog メモは時系列的にトピックをラベル付けして箇条書きで追記していくスタイルで構造を意識してません。

10年分ぐらいのメモがこの形式で溜まっていて、データ抽出のスクリプト*7などの資産もあり、移行にはそれなりのコストがかかります*8

以上から今回はフォーマット移行しないことにしました。

CLI 命なら

今回検討対象にしていませんが mattn さんの memo コマンドというのがあります。

github.com

設定で editor を指定可能なので Vim じゃなくても使えます。VS Code と統合ターミナルで使うと快適そうです。

qiita.com

サービス専用ツール

Qiita の Kobit やはてなブログアプリなども Markdown ベースのツールですが、各サービスで Markdown を独自拡張していて汎用 Markdown ツールでは publish のイメージがわかりづらいため、専用ツールを利用するメリットはあります*9

ちなみに Kobito はシャットダウンしてしまいました。OSS として残っていますがメンテナンスされていない模様*10

Kobito for Mac / Windowsの提供及びユーザーサポートを終了します - Qiita Blog

まとめ

結局 VS Code で ChangeLog メモという結論になりました。VS Code はモバイル版の提供はありませんが、モバイルでも完成度の高いコードエディタはあるのでデータの共有は簡単。活発に開発されているユーザベースの大きいメジャー OSS であるという点も大きいです。

ChangeLog 形式サポートは何とかする必要がありますが、これについては別エントリーにしたいと思います。

追記: ChangeLog 用 Extension を書くエントリー書きました。

blog.kondoumh.com

*1:メモ取りに Zen mode が必要かという話はさておいて。

*2:Evernote は使ってないので移行先としての評価はしてません。

*3:そもそも RN の事例として知りました。

*4:CoffeeScript 版 JSON

*5:デスクトップ版はおそらくネイティブアプリでしょう

*6:日付の後にメールアドレスが入る謎仕様はこのためです

*7:正規表現モリモリです。

*8:Markdown Parser 使えばいいのでしょうが yak shaving です。

*9:はてなブログ用のアプリはあまり進化しないので、PC / iPad では Web UI を直接使った方が捗りますが。

*10:macOS 版はネイティブアプリでしたが、Windows では Electron 版が提供されてました。OSS 版は Electron 版です。