すぐにできる!いいことがある!Emacsからメールを送ろう - よーしパパ、バグレポ送っちゃうゾ
設定の鬼だとか、設定が複雑すぎるとかマニアックすぎるとか言われている俺だが、今日はぐーんとレベルを落として、誰でもできるEmacs記事を書くことにする。Emacsを普及させるためにはユーザ目線になることが大切だからだ。
さて、今回はEmacsからメールを送る方法を教えよう。「そんなのやってるよ」、「当たり前だろ」という声が聞こえてそうだが、ブラウザバックはちょっと待ってくれ。意外に知られてないメリットがあるんだから。
Emacsには、裸の状態(emacs -Q)でもメールを送ることができる。ふつうにメールを送信するだけならば、Mew等のメールEmacs Lispをインストールする必要はない。標準状態でその機能があるからだ。
では、その設定を示そう。メールアドレス、名前、SMTPサーバ、メール送信関数をそれぞれ設定している。上3行は各自設定してね。
(setq user-mail-address "your@mail.address") (setq user-full-name "Your Full Name") (setq smtpmail-smtp-server "your.smtp.server.jp") (setq mail-user-agent 'message-user-agent) (setq message-send-mail-function 'message-smtpmail-send-it)
あとは、宛先、件名、本文を入力して、C-c C-cで送信っと! メール送信をとりやめるにはC-c C-kだ。試しに自分宛にメールを送るとすぐにメールが届くはずだ。
Mewを使ってメールを送信する
ちなみにMewを使う場合はこう設定する。後の操作方法は全く同じだ。
(setq user-mail-address "your@mail.address") (setq user-full-name "Your Full Name") (setq mew-smtp-server "your.smtp.server.jp") (require 'mew) (setq mail-user-agent 'mew-user-agent) (define-mail-user-agent 'mew-user-agent 'mew-user-agent-compose 'mew-draft-send-message 'mew-draft-kill 'mew-send-hook)
バグレポを送る
Emacsからメールを送る設定を適切にしていると、いいことがある。なかったらタイトル詐欺だもんね(笑)
実はEmacs Lispの作者にバグレポを送る機能がEmacs標準で用意されているのだ。この機能を知っているEmacs使いはおそらく100人に一人もいないかもしれない。というのは、この機能が使われているEmacs Lispがほとんどないからだ。
reporter-submit-bug-report 関数がそれである。引数に、作者のメールアドレス、Emacs Lispプログラム名、ダンプする変数名のリスト、(フック2つは無視してよい)、書き出しを取る。引数を適切に設定してreporter-submit-bug-report関数を呼び出すコマンドを作成してしまえば、スムーズに作者とコンタクトが取れるようになる。
以下の式を評価してくれ。自分自身にバグレポを送るテストだ。
(reporter-submit-bug-report user-mail-address "bug-report-test" '(auto-mode-alist load-path) nil nil "動かねえぞ!"))
すると、こんな感じに書き出しと変数のダンプが載った状態でメールが用意される。あとは、症状を具体的に記述してC-c C-cを押せばバグレポ完了だ。
この機能は使わないとお互いに損である。通常はバグを報告する場合、以下のようなやりとりになる。
ユーザ「〜が動かないんだけど」 作者 「変数〜を見せてくれ」 ユーザ「はい。〜です」 作者 「ああ、これですか。バグなので直しました。」
しかし、reporter-submit-bug-reportを使えば、真ん中2つ*1のメールのやり取りがなくなる。作者が予め設定している変数リストによって、ユーザは自動的に必要十分な情報を提供することになる。その結果、コミュニケーションがスムーズに進む。
ユーザは手作業で変数の値を報告する手間を省ける。そして、作者もテストケースを手作業で作る必要がなくなる。setqなのでC-x C-eを評価してしまえばすぐに不具合を再現できる。
その結果、お互いの時間を節約できるのだ!忙しい現代社会において、お互いの時間は尊重しあわないといけない。
ユーザのあなたがやることは、メール送信の設定を適切に行うだけだ!どう、いいことあったでしょ?
俺もこの機能について詳しく知らなかったので、さっそく導入してみることにする。Emacs Lisp開発者は、是非とも導入してみよう。
*1:id:mongrelPさん指摘どうも。