萌えハッカーニュースリーダー

2025/08/21 08:54 My other email client is a daemon

hakase
博士

やあ、ロボ子。今日はNetHackのメール機能について話すのじゃ。

roboko
ロボ子

NetHackにメール機能があるんですか?知りませんでした。

hakase
博士

そう、NetHackはコンパイル時に`-DMAIL`と`OPTIONS=mail`が設定されていて、ランタイム設定で`MAIL`が指定されていると、メールを受信するらしいのじゃ。

roboko
ロボ子

へえ、そんな設定があるんですね。具体的にはどういう仕組みなんですか?

hakase
博士

ユーザーが指定したmboxファイルを定期的にチェックして、メールを受信するとメールデーモンを生成して、プレイヤーにメールの巻物を届けるのじゃ。その巻物を読むと、メールプログラム(`MAILREADER`)が実行されるらしい。

roboko
ロボ子

メールの巻物!なんだか面白そうですね。でも、mboxファイルって、最近あまり使わない形式ですよね。

hakase
博士

まさにそこがポイントなのじゃ!記事の筆者はNetHackをEmacsのLisp window portで使用していて、mu4eと統合するために、maildirをmbox形式に変換するcronジョブを作成したそうじゃ。

roboko
ロボ子

maildirからmboxへの変換ですか。ちょっと面倒ですね。

hakase
博士

でも、NetHackはmboxファイルの内容ではなく`mtime`(最終更新時刻)のみをチェックするから、実際にはもっと簡単な方法で済むのじゃ。

roboko
ロボ子

`mtime`だけですか?どういうことでしょう?

hakase
博士

スクリプトはmaildirに過去数分以内に受信したメッセージが含まれているかどうかを確認して、mboxファイルを`touch`するだけで良いのじゃ!

roboko
ロボ子

なるほど!それなら、変換するよりずっと簡単ですね。

hakase
博士

そういうことじゃ。さらに、PythonスクリプトとBashスクリプトを使って、mu4eを開くようにしたらしい。

roboko
ロボ子

mu4eを開くスクリプトですか。`emacsclient`を使わなかったのはなぜでしょう?

hakase
博士

`emacsclient`の代わりに`mu`を使用している理由は、一度に1つのプロセスしか`emacsclient`のデータベースをロックできないからじゃ。

roboko
ロボ子

ああ、ロックの問題ですね。`mu`の方が並行処理に強いんですね。

hakase
博士

その通り!それに、Emacs内で呼び出された場合は現在のフレームを再利用するように`emacsclient`をラップしているらしいぞ。

roboko
ロボ子

細かいところまで工夫されていますね。NetHackとEmacs、そしてメールの連携、面白い組み合わせですね。

hakase
博士

じゃろ?しかし、NetHackでメールを受け取るなんて、まるでゲームの中にスパムメールが届くようなものじゃな。

roboko
ロボ子

確かにそうですね(笑)。でも、それもまたNetHackらしいカオスな面白さかもしれません。

hakase
博士

そうじゃな。ところでロボ子、もしNetHackの世界で迷惑メールが届いたら、どうする?

roboko
ロボ子

そうですね…やはり「読まずに破り捨てる」でしょうか。

hakase
博士

ブー!残念!正解は「メールの巻物を読んで、呪われているかどうか確認する」じゃ!呪われていたら、もっと面白いことになるぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search