Studencheskie Programmisty

Mail.appからThunderbirdに乗り換えた

Sep 26, 2010

今までずっとMacに付属のMail.appを使い続けてきたのだけれど、egbridgeとの相性が良くないのかメールを書いている時に頻繁にフリーズするようになったので、Latest topics > POPからThunderbird + Gmail + IMAPに乗り換えたい - outsider reflexを参考にしつつ、一念発起してThunderbirdに乗り換えてみた。

以前にPOPだったのをIMAPにこれまた重い腰を上げて移行していたので、データの移行にはたいして手間はかからなかった。IMAP最強。なので、以下、ThunderbirdをMail.appっぽい使用感にするために四苦八苦した記録を書くことにする。

まず、アカウントの設定について。

  • Thunderbird 3になってMail.appからの移行がデフォルトでできるようになったと聞いていたので期待して、ツール > 設定とデータを読み込む... を実行したのだけれど、メールのデータが読み込まれただけで、設定その他はスルーされてしまった。なので、結局手動で「アカウント設定」から全部登録した。ただ、Mail 2.x(未だにTigerを使っているのでこれを使い続けてる)と違って、メールアドレスを入力すると自動で適切な送受信用サーバーを設定してくれるので、かなり楽。
  • 新着メールの更新間隔を1分に設定。なぜ1分かというと、Mail.appで設定できる最短時間だったから。Thunderbirdは間隔を手入力できるので、Mail.appよりも細かく設定できてよさそう。
  • 「HTML形式でメッセージを編集する」のチェックを外す。こうしないと相手にHTML形式のメールを送信してしまうことになる。
  • 「キャレットの初期状態」を「引用部の上」に、「署名を挿入する位置」を「返信部の下(引用部の上)」に設定する。
  • Gmailを使う場合、迷惑メールと判断されたメッセージを[Gmail]/迷惑メールに移動するよう設定しておかないと、統合フォルダモードで表示した時に迷惑メールボックスが2つ表示されてしまう。

次に、外観を設定する。

  • about:configで、mailnews.default_sort_order2にする。こうすると、いちいち新しいフォルダを作った時なんかに、メールの並び順をデフォルトの日付が古い順なのを新しい順に直さなくて済む。
  • 左ペイン右上の矢印をクリックして、フォルダの表示を「統合フォルダ」にする。こうすると、送信済メッセージフォルダが統合されない以外は、ほぼMail.appと変わらない表示となる。
  • 「差出人」「件名」などを、ドラッグして並び順を変える。ドラッグ中に何も表示されない(半透明で描画されたりしない)から、ちゃんとドラッグできてるのか不安になるけど大丈夫。
  • 環境設定で、フォントの大きさを13に変更。また、プレーンテキストを等幅フォントで表示しないようにする。こうすることで、Mail.app並のフォントの大きさで、きれいなヒラギノフォントを味わうことができるようになる。

最後に、アドオンをインストールする。

  • Firefoxと違って、アドオンのインストールの仕方にちょっと癖がある。アドオンマネージャを開いて、そこにxpiファイルまたはxpiファイルへのリンクをD&DすればOK。メールが表示されているウィンドウにD&Dしても何も起きない。
  • なぜかextensions.checkCompatibilityを設定してもうまく動かないので、とりあえずNightly Tester Toolsをインストール。
  • Mail.appと違ってThunderbirdの署名機能は、メールアドレス一つにつき一つしか設定できないので、Signature Switchを導入。一つの署名ごとにテキストファイルを作らないといけないのが面倒なのと、Mail.appのように送信元メールアドレスに応じて自動で署名を挿入するのができない(送信先メールアドレスにならできる)のが多少不便だけど、それでもデフォルトよりはまし。
  • プライベート用と対外用の2つのアドレスを使い分けてるのだが、違うほうのアドレスで送信しそうになったことが結構あるので、Identity Chooserをインストール。新規メールを作成する時にどのアドレスで作成するか選べる他、アドレスごとに作成画面の色分けをしてくれる。

2日間使ってみた印象としては、Mail.appよりもかなり使いやすい。もっと早く移行すればよかった。

    NScripterでロード時にエフェクトつけたりする方法

    Sep 15, 2010

    NScripterで、ロード時に何かをやる方法といったらloadgosub命令だと思う。でも、ロード中に「Now Loading...」みたいなのを出したかったり、ロードし終わった時にエフェクトをつけて画面を表示したいということになると、loadgosub命令だけではうまくいかない。

    NScripterはセーブデータをロードする時、完全に読み込み終わるまでの間NScripter側で保存しておいたセーブ時の画面を暫定的に表示する。つまり、セーブポイントが作成された時の画面が、「Now Loading...」となっている画面だったり真っ暗な画面だったりすればよい。

    ここで問題なのは、どうやって(ユーザーに画面を見せることなく)その画面の状態でセーブポイントを作成するかである。以下、シスカマ済で、

    pretextgosub *pretext_lb
    loadgosub *onload
    autosaveoff
    
    のように設定しているとする。

    さて、まず一番最初に思いつくのは、セーブするサブルーチンで画像を表示し、savepointするという方法である。

    *show_save_display
       lsp 0,%nowloading_bg,0,0 ;※
       savepoint
       csp 0
    
    ;残りの処理
    

    しかし、実はこれではロードした時に※の部分でロードされてしまい、うまくいかない。じゃあどうやるのかというと、*pretext_lbの中でやる。

    *pretext_lb
       amsp %nowloading_bg,0,0
       savepoint ;◆
       amsp %nowloading_bg,1000,0
    
    ;残りの処理
    

    こうすることで、NScripterによる表示文頭の自動savepoint → ◆でのsavepoint → 自動saveoffとなり、うまくロード画面が表示された状態ををセーブポイントにすることができる。実は、この*pretext_lbの中でのsavepointをやるためにautosaveoffしていて、autosaveoffしていないと*pretext_lbの中でうまくセーブポイントを作ることができず、失敗する。

    また、lspvspを使ってロード画面の表示をコントロールすると画面の再描画が起こり、画面がちらついてしまうため、再描画を起こさないamspを使って画面外へと移動させることで非表示にしている。

    これでロード中に任意の画像を表示できるようになったので、あとは*onloadのなかで%nowloading_bgを好きなようにいじくり回せば完成。