EmacsをRSSリーダーに変える「Elfeed」の使い方徹底解説|導入から自動タグ付け・カスタマイズまで
Emacsは非常に拡張性の高いソフトウェアです。テキストエディタとしてだけでなく、メールクライアントやニュースグループ(USENET)リーダーとしても活用できます。さらに「Elfeed」というパッケージを使えば、Emacsを本格的なRSSフィードリーダーとしても使えるようになります。
Elfeedとは?
Elfeedは、Emacs向けに開発された軽量かつ高機能なRSSフィードリーダーです。シンプルなタグベースの仕組みでRSSフィードを整理できるのが特徴で、さらに「フックベース」の自動タグ付け機能も備えています。この機能を使えば、フィードの内容に応じてエントリーへ自動的にタグを付与できます。
多数のRSSフィードを購読していて、整理に手間を感じている人にとって、Elfeedは強力な味方になるでしょう。
なぜEmacsでRSSリーダーを使うのか?
Emacsは「相互運用性」を重視した設計思想を持っています。取り込んだデータをさまざまな形で解釈・活用できるのが大きな魅力です。
たとえば、文章を編集しながらメールにアクセスできれば、今書いているテキストをそのままメール本文に流用するといった作業がシームレスに行えます。
RSSリーダーをEmacsに組み込むのも同じ理屈です。Emacsの強力な編集機能を使ってフィードを操作したり、他の機能と連携させたりできるようになります。
Elfeedのインストール方法
Elfeedのインストールはとても簡単です。GNU ELPAリポジトリで公開されているため、init.elファイルに特別な設定を追加しなくても利用できます。
Alt + X を押してコマンドバッファを開き、package-install と入力します。パッケージ名を尋ねられたら elfeed と入力して Enter を押しましょう。Emacsがソースコードをダウンロードし、そのままコンパイルまで行ってくれます。
最初のRSSフィードを設定する
インストールが完了したら、Alt + X を押して elfeed と入力し、Enter を押します。空のElfeedバッファが起動します。
RSSフィードの追加方法は主に2つあります。
- init.elファイルを手動で編集する
- Emacsを起動したままコマンドで追加する
init.elファイルに手動で追加する
init.elファイルにフィードURLを直接書き込む方法です。Elfeedは「elfeed-feeds」という変数を監視しており、ここに登録されたURLのフィードを取得して一覧画面に表示します。
以下はinit.elファイルへの記述例です。
(setq elfeed-feeds
'("https://feeds.maketecheasier.com/MakeTechEasier"
"https://solar.lowtechmagazine.com/feeds/all-en.atom.xml"
"https://old.reddit.com/r/f1technical.rss"))
setqは、特定の変数に値を設定するためのEmacs Lisp関数です。この例では、elfeed-feeds変数に3つのフィードURLを値として設定しています。
これでElfeedは自動的にこれらのURLを内部データベースに登録し、次回起動時に読み込みます。
Emacs上から追加する
もうひとつの方法は、Elfeedの実行中にコマンドでフィードを追加するやり方です。Emacsを再起動することなく、その場で購読リストを更新できるのが利点です。
Alt + X でコマンドバッファを開き、elfeed-add-feed と入力して Enter を押します。追加したいフィードのURLを入力するよう求められます。
URLをコピーしたら、入力プロンプト上で Ctrl + Y を押して貼り付けます。あとは Enter を押せば、フィードURLがElfeedに登録されます。
フィードの自動タグ付けとフィルタリング
Elfeedは単にフィードを一覧表示するだけでなく、購読リストを細かく調整するための多彩な機能を備えています。そのひとつが自動タグ付けです。特定のフィードから取得したエントリーに、自動的にタグを付与できます。
たとえば、同じテーマに関する複数のフィードに共通のタグを付けておけば、サマリー画面での振り分けが格段に楽になります。
設定はinit.elファイル内のフィード定義を編集するだけです。以下に簡単な例を示します。
(setq elfeed-feeds
'(("https://feeds.maketecheasier.com/MakeTechEasier" tech news)
("https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" tech)
("https://old.reddit.com/r/f1technical.rss" tech f1)))
フィードに自動タグを付けるには、デフォルトのelfeed-feeds形式に対して次の2点を変更します。
- フィードURLを括弧で囲む。これにより、elfeed-feeds変数の該当エントリーが複数の要素を持つことを示せます。
- タグとなる単語を指定する。スペースで区切れば、複数のタグを同時に指定することも可能です。
Elfeedでフィードをフィルタリングする
こうして付けたタグは、Elfeedの強力なフィルタリング機能と連携します。タグだけを頼りにフィードをグループ化できるのです。
たとえば「news」「news tech」「news gaming」というタグが付いたフィードがある場合、「news」タグでまとめて絞り込めます。
フィルタリングを行うには、Elfeedの画面上で S を押します。フィルタプロンプトが表示され、デフォルトでは次のような内容が入っています。
@6-months-ago +unread
- 「@」記号は日付範囲を表します。「2022-02-22」のような絶対日付でも、「3-days-ago」のような相対指定でも構いません。
- 「+」記号はタグ演算子で、このタグを持つフィードを明示的に含める指示です。
この仕組みを踏まえて、次のようなフィード定義を考えてみましょう。
(setq elfeed-feeds
'(("https://feeds.maketecheasier.com/MakeTechEasier" tech news)
("https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" tech)
("https://old.reddit.com/r/f1technical.rss" tech f1)
("https://www.autosport.com/rss/f1/photos/" f1)
("https://www.philstar.com/rss/world" news)))
「tech」タグで絞り込むには、フィルタプロンプトに「+tech」と入力します。すると最初の3つのフィードがサマリーバッファに表示されます。「+news」を指定すれば、1番目と5番目のフィードが表示される仕組みです。
この考え方を応用すれば、より高度な絞り込みも可能です。たとえば「techタグを含み、かつf1タグを含まない」フィードだけを表示したい場合は、次のように入力します。
+tech -f1
URLをもとにフィードを自動タグ付けする方法
Elfeedでは、URLのパターンをもとにエントリーを自動分類することもできます。URL構造が似通ったRSSフィードを複数購読している場合に特に便利です。
これを実現するのが elfeed-new-entry-hook です。これは、特定の条件を満たしたときにカスタムコマンドを実行するフック関数で、elfeed-add-feed コマンドで新しいエントリーが追加されるたびに呼び出されます。
このフックの中で elfeed-make-tagger 関数を使います。これは、指定したオプションに基づいてリンクにタグを付ける汎用関数です。両者を組み合わせると、自動タグ付けは次のように書けます。
(add-hook 'elfeed-new-entry-hook
(elfeed-make-tagger :feed-url "medium\\.com"
:add '(medium)))
この設定により、「medium.com」という文字列を含むすべてのリンクに自動的に「medium」タグが付きます。
elfeed-make-tagger のオプションを工夫すれば、さらに細かい制御も可能です。たとえば、URLによるタグ付けと同時に、3ヶ月より古いエントリーを除外することもできます。
(add-hook 'elfeed-new-entry-hook
(elfeed-make-tagger :feed-url "medium\\.com"
:before "3 months ago"
:add 'medium))
タグごとの色やフォントをカスタマイズする方法
自動タグ付けに加えて、タグに応じてElfeedの見た目を変えることもできます。特定のタグが付いたフィードを目立たせたいときに便利です。
そのために使うのが elfeed-search-face-alist の再定義です。これはサマリーバッファの表示スタイルを切り替えるためのコマンドで、defface と push という2つの関数を組み合わせてカスタマイズします。
- defface:Emacsに新しい「フェイス(face)」を作成する関数です。フェイスとは、文字フォントや背景色などの表示属性をまとめたセットのことです。
- push:既存のコマンドやリストに新しい定義を追加する関数です。
この2つを組み合わせれば、Elfeed専用のカスタムフェイスを作れます。たとえば、f1タグを赤色でハイライト表示する設定は次のとおりです。
(defface elfeed-face-tag-f1
'((t :foreground "#f00"))
"This is a custom font face for the F1 tag in Elfeed.")
(push '(f1 elfeed-face-tag-f1)
elfeed-search-face-alist)
これで、ElfeedをRSSリーダーとして使いこなすための基本はすべて押さえられました。さらに、自動化やカスタマイズの基礎も身についたはずです。
Emacsの可能性をもっと探りたい方は、生産性向上に役立つおすすめパッケージをまとめた記事もぜひチェックしてみてください。
よくある質問
Q1. Elfeedでフィードを削除するには?
削除方法は2つあります。init.elファイルから該当エントリーを削除するか、Emacsのcustomize機能を使うかです。
前者の場合、elfeed-feeds変数から不要なフィードURLの行を削除するだけです。後者の場合は、Alt + X でコマンドバッファを開き、customize と入力します。customizeウィンドウが開いたら、検索ボックスに elfeed-feeds と入力してください。現在購読中のフィードがすべて表示されます。
削除したいフィードの横にある DEL ボタンをクリックすれば削除できます。最後に検索バー下の Apply ボタンと Save ボタンをクリックして、変更を保存しましょう。
Q2. フィードを全部追加したのに更新されないのはなぜ?
Elfeedはフィードを自動的には更新しません。最新のエントリーを取得するには、Shift + G を押して、購読中の全フィードの更新を実行してください。
また、特定のRSSフィードだけを更新したい場合は、elfeed-update-feed 関数を実行します。
Q3. 自動タグがうまく機能しない場合はどうすればいい?
原因としては、同じRSSフィードに競合するタグ設定が存在している可能性が高いです。同じフィードURLが、init.elの手動設定とEmacsのcustomizeバッファの自動設定の両方に登録されていると起こります。
解決するには、init.el側の手動エントリーとcustomizeバッファ側の自動エントリーのどちらか一方を削除してください。
-
GmailをMicrosoft Outlookで使う方法|IMAP設定とアカウント追加の手順
パソコンを使っている方なら、Yahoo!メール、Gmail、Hotmail、Outlook.comなど、複数のメールアドレスを持っていることも少なくないでしょう。時間が経つにつれて使わなくなったアドレスが出てくるのは自然なことですが、よく使うメールアドレスはOutlookの受信トレイに一元化しておくのがおすすめです。Microsoft Outlookには任意のメールアドレスを登録できますが、特に相性が良いのがGmailです。Gmailは他の多くのメールサービスよりも大容量のストレージを備え、スパム対策も強力です。さらにGoogle独自のクラウドサーバーで運用されているため、MS Outlook
-
RSSフィードとは?基本の仕組みとパソコンでの使い方を徹底解説
読書は、豊富な知識を得られるだけでなく、対人スキルの向上にも役立つ健康的な習慣です。インターネットの普及により、紙を節約してエコに読書を楽しめるようになりましたが、その一方で「読む価値のあるコンテンツを見つけにくい」という新たな悩みも生まれています。膨大な情報の中から良質な記事を選び出すのは、ネット読書における大きな課題の一つです。 そんな問題を解決するために開発されたのがRSSフィードです。RSSを活用すれば、読みたい・観たいコンテンツを探す手間が大幅に省けます。購読しているサイトや著者の最新情報が、RSSアグリゲーター(専用ソフト)に自動的に届くため、わざわざウェブサイトを訪問する必要があ