フォルダにメモ書きできる Mozilla Thunderbird アドオン:YNote

Posted by
ぴろり
Posted at
2018/08/01 08:40
Trackbacks
関連記事 (1)
Comments
コメント (1)
Post Comment
コメントできます
Category
ソフトウェア カテゴリ
カバーイメージ

 Mozilla Thunderbird アドオンの一つ XNote++ では、メールにメモを書くことができ、ToDo リストなどに活用できます。しかし、プロジェクトやちょっとしたタスクにおいて、用件がメール 1 本で済まないような時など、関連する複数のメールをフォルダにまとめて管理する方が便利です。そういった場合、個々のメールごとのメモ書きとは別に、プロジェクトやタスクのレベル=フォルダ単位でメモ書きが欲しいことがあります。
 そこで、メールごとにメモ書きできる XNote++ に触発されて、フォルダごとにメモ書きできるアドオンを作ってみました。個々のメールへのメモ書きには XNote++、それら複数のメールをまとめたプロジェクトやタスクのレベルでのメモ書きには YNote と使い分けることができます。

このエントリーをはてなブックマークに追加  

機能

  • 各フォルダのプロパティ ダイアログに、メモ書き用のテキスト領域を追加します(Fig.1 )。
  • 入力されたテキスト データは、再利用しやすいプレーンなテキスト ファイルとしてプロファイル ディレクトリに保存されます。
  • テキスト ファイルは UTF-8 エンコードで保存されるので、☀☁☂☃☐☑☜☝☞☟ といった便利な Unicode 文字も使えます。

ダウンロード


アドオンのインストール

 通常のインストール手順に従ってください。

アドオンの設定

 アドオンの設定はありません。

ライセンス等、いろいろ

  • 日本語/英語対応
  • Windows 版 Thunderbird 38.x、52.x で開発および動作確認しています
  • ライセンスは GPL バージョン 3 とします
  • 無償でご利用頂けますが、よろしければ継続開発のためのライセンス購入(任意)をお願いしております。
    お気持ち:  
    一言どうぞ:

開発裏話(?)

 裏話というほどではないですが、このアドオンの開発着手から完成に至るまでは、その試行錯誤の過程がなかなか鮮明だったので記録しておきます。アドオン開発者の思考パターンなどを感じ取って頂ければ幸いです(笑)

  1. 概要にも書いたように、Mozilla Thunderbird では、プロジェクトやタスクごとにフォルダを切って、関連するメールをフォルダに振り分けて進捗状況などを管理するスタイルを採っています。そうすると、メールごとにメモを付ける XNote++ では、メモが分散してしまい、プロジェクトやタスク レベルで進捗管理やコメントを俯瞰するには、ちと使い辛いなぁ。
  2. プロジェクトごとのフォルダ レベルでメモ書きできるアドオンがあればいいんじゃないか?
  3. 検索してみたけれど、無さげ(´・ω・`)
  4. ざくっと仕様を妄想して… (1)フォルダ毎に textarea を設けて、free text を記入できるようにする。 (2)入力されたテキストは plain text で Store。 (3)テキストの保存/復元は、ダイアログの onLoad/onUnLoad あたりをフックすればいけそう。
  5. これなら簡単そうだし作ってみるか。GO! sign が出る。
  6. 何はともあれ、フォルダ レベルで自由テキストを書ける領域を作って、これをとっかかりにしよう。アドオン用にダイアログを作るのも面倒臭そうだし、どこか既存のダイアログに居候できないだろうか?
  7. フォルダのプロパティ ダイアログが使えないかな? ここに自由テキストを書けるよう、独自タブで textarea を追加すれば簡単そうだ。
  8. タブの追加は、XUL の overlay で独自の UI を追加するサンプル レベルだな。DOM Inspector で、フォルダのプロパティ ダイアログ(folderProps.xul)を探して、textarea を inject する overlay を書いて完成。
  9. テキスト データを復元できるよう、プロパティ ダイアログを開いたタイミングをフックしてみよう。→load イベントでいけた。
  10. テキスト データを保存できるよう、プロパティ ダイアログを閉じたタイミングをフックしてみよう。→dialogaccept イベントでいけた。
  11. 書き込んだテキストを保存するデータ ファイルには、再利用性を考えて、かつ単純なファイル I/O で済む plain text でいいだろう。
  12. データ ファイル名を決定するために、フォルダごとに何かユニークな ID みたいなものはないだろうか?
  13. ダイアログの引数に渡される folder 変数の nsIMsgFolder クラスに何かないだろうか? →要約ファイル(*.msf)のファイル パス(window.arguments[0].folder.summaryFile.path)があった。
  14. なら、データ ファイルも、フォルダの要約ファイルが置かれている隣でいいだろう。要約ファイルの拡張子(.msf)を .txt に replace してファイル名にしちゃえヽ(´ー`)ノ
  15. フックを利用して、textarea に入力されたテキストをデータ ファイルに保存する。データ ファイルの内容を読み出す。
  16. 完成! …と思ったら、Thunderbird のフォルダ ペインに、*.txt って名前のフォルダが増えてるΣ( ̄ロ ̄lll) なるほど、適当にファイルを作ると、それをメールのフォルダと勘違いしてしまうのか…
  17. しかし、メール フォルダの中にある要約ファイル(*.msf)や filterlog.htmlmsgFilterRules.dat はフォルダ ペインに表示されていないぞ? →どこかでファイルを一覧する時に、フィルタを掛けているに違いない。
  18. 探してみると、nsMsgLocalStoreUtils::nsShouldIgnoreFile で、無視すべきファイル名のパターンがコードされているっぽい。独自の新しい無視パターンを追加するのは難しそうだが、ファイル名のパターンで無視してくれる仕組みがあるので、これを利用できないだろうか? →ファイル名を ~ で終わると無視してくれるので、データ ファイルの拡張子を .ynote~ とした。
  19. 機能が完成したので、アイコンを付けて、多言語化して、体裁を整えて完成!
このエントリーをはてなブックマークに追加  


この記事を読んだ人はこんな記事も読んでいます記事リコメンデーションについて

カバー画像:Mozilla Thunderbird おすすめアドオン 17 個+α

関連記事/トラックバック (全 1 件中、最新 5 件まで表示しています)

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。