コードコーナーオンラインで起こる終わりのない出来事の奔流に追いつくのは、勝ち目のない戦いです。全知でなければ、バグ、失敗、大失敗、スキャンダルなど、発生時にすべてを把握することは不可能です。
次に良いのは RSS です。これは、オンライン コンテンツを集約するための便利なメカニズムを提供する、古くなったシンジケーション プロトコルです。
The Registerでの仕事の過程で、私はテクノロジー業界の人々と会ってインタビューしたり、書類や訴訟を精査したりするだけでなく、その分野の話題や、毎時間ではないにしても毎日の進展を把握するためにオンライン ソースを常に調べています。
多くの Web サイト、フォーラム、ブログ、政府機関、アグリゲータから入手できる RSS フィードを RSS リーダー アプリで収集して、インターネットの一種のパーソナライズされたホームページを作成できますが、私が知っている RSS アプリのどれもが、私が望むエクスペリエンスを提供していません。
まず、アプリはテキストを効率的に表示し、表示される見出しの数を最大限に増やすことを重視する必要があります。ニュースを読むアプリではなく、見出しをざっと読むアプリであるべきです。画像は画面スペースを占有し、読み込み時間を遅くするため、一切表示すべきではありません。
第二に、アプリは記事を時系列順に並べ替えるべきです。これは、もっと多くのRSSアプリが実現すべき機能です。
3つ目に、アプリケーションは時間でフィルタリングする必要があります。古くて退屈なリンクではなく、新しいページへのリンクを含める必要があります。つまり、多くのRSSリーダーがそうしているように、コンテンツを保持すべきではありません。特定の期間内に公開された記事を「既読」または「未読」という概念は不要です。1週間後に開いたら何千ページもの未読ページが見つかるなんて、避けたいものです。
4 番目に、ニュース アグリゲータのソース リンクを解析し、元のレポートに直接アクセスできるようにします。
5番目に、無料、オープンソース、広告なしである必要があります。
要件をすべて満たすものが見つからなかったため、ジャーナリストやニュース好き向けに、Electronフレームワークを使ってカスタムRSSヘッドラインスキャンアプリを作成しました。vulture-feedsというデスクトップアプリで、現在GitHubからオープンソースMITライセンスで公開されており、興味のある方はどなたでもご利用いただけます。
電子
Electronがベータ版としてバージョン2.0に到達しました。これは、JavaScript、HTML、CSS、あるいはTypeScriptといったWeb技術を用いて、クロスプラットフォーム(macOS、Linux、Windows)のデスクトップアプリを構築するためのツールです。一度設計して記述すれば、3つのOSすべてで動作します。
ハゲタカの巣…トムのカスタムRSSリーダーのスクリーンショット
プロの開発者はElectronアプリを軽蔑する傾向があり、それも当然です。Electronアプリはネイティブプラットフォームのコードほど高速でも高性能でもありません。コードが肥大化し、かなりのメモリを消費する傾向があります。私が最後に調べたところ、Vulture-Feedsのファイルサイズは368.9MBでした。Sublime Textのような、よく書かれたネイティブmacOSアプリはより多くの機能を備えており、必要な容量は10分の1です。
予想通り、Hacker News でのリリースに関する最近の議論では、Electron とクロスプラットフォーム アプリ全般の既知の欠点が強調されました。
元アップルCEOで共同創業者のスティーブ・ジョブズは、2010年にiOS上のAdobe Flashを否定した際の問題点を次のように要約した。「開発者は最低限の機能しか利用できない。」
それ以来、クロスプラットフォーム アプリは多少改善されました。Microsoft の Xamarin は多くの利点があり、Flutter も将来有望に見えますが、基本的なトレードオフは残っています。ネイティブ アプリはより高速で、より軽量で、プラットフォーム パラダイムに準拠している可能性があります。クロスプラットフォーム アプリはショートカットを提供し、複数のネイティブ コードベースよりも保守が容易です。
もし私がフルタイムのプロの開発者だったら、Electron以外のものを選ぶかもしれません。しかし、たまにコードを書く人間としては、JavaScriptやNode.jsなどのささやかな知識を、実用的なデスクトップアプリケーションに活かせる方法があることに感謝しています。
ちなみに、Visual Studio Code を使用する Microsoft から、Slack、WhatsApp、Signal に至るまで、組織やプロジェクトは、Electron を使用してデスクトップ アプリを開発するという同様の決定を下しています。
ハゲタカの餌
私はmacOSでVulture-Feedsを使用していますが、Electronでは複数のプラットフォーム向けにアプリを構築できるため、LinuxとWindowsでも動作するはずです。どちらのプラットフォームでもテストしていないため、状況によって結果が異なる可能性があります。
アプリをNode.jsで書いて、Digital Oceanのドロップレットのようなサーバー上のウェブサイトでホストすることもできたでしょうが、そうすると無駄な料金を払うことになります。アプリはオンデマンドでデータを取得するだけなので、クラウドに置く理由が見当たりません。ローカルマシンで処理できる範囲です。
コードベースは賞を取れるようなものではありません。これまで本格的なウェブアプリを書いたことがないので、vulture-feeds にはおそらく最適とは言えない設計と実装が含まれていると予想しています。改善のためのプルリクエストはお気軽にご提出ください。
欠点はあるものの、私にとってはうまく機能しています。記者としての仕事を少し楽にしてくれます。もしうまくいかなかったとしても、いつでも改善できます。
仕組み
このアプリは、ユーザーが選択したRSS/Atomフィードを取得するために、NPMモジュールのfeedparserなどを利用しています。リストされているリンクをクリックすると、選択したブラウザで記事が開きます。
起動すると、メインウィンドウは空白になります。「ファイル」→「フィードを追加」で新しいRSS/ATOMフィードを追加するか、「ファイル」→「デフォルトの読み込み」でデフォルトセットに含まれるフィードをいくつか追加します。「再読み込み」コマンドですべて更新されます。
取得したフィードはフィルタリングされ、HTMLテーブルに格納されます。その後、公開時間で並べ替えることができます。記事の表示期間は、デフォルトの24時間から最長72時間、最短1時間まで調整できます。表示期間外に公開された記事は表示されません。
RSSフィードとATOMフィードは奇妙な挙動をするため、ArXivのコンピュータサイエンスフィードなど、記事とそのリンクを正規化するために、フィード固有のハンドラをハードコードする必要がありました。アプリのユーザーは、新しく追加したフィードの動作に問題がある場合は、コードに同様の対応を加える必要があるかもしれません。
このアプリは、特定のウェブページが変更されたかどうかを確認するのにも使用できます。これは、RSSフィードのないウェブサイトを監視する際に私が使用している機能です。変更検出には、ページチェックサムの差分とリンクチェックサムの差分の2つの方法をサポートしています。ただし、信頼性の高いウェブページの変更検出は難しいため、どちらの方法も完全に信頼できるとは言えません。
このようなウォッチページは記事リストに記事リンクとともに表示されますが、区別するために「>」文字で始まります。ウォッチページは、並べ替え後、記事リストの先頭に表示されます。
メニュー コマンドの [フィード表示] および [監視ページを表示] を使用すると、フィードと監視ページを削除したり、メイン ページでの表示を変更したりできます。
アプリは、フィードのIndexDB/Dexieデータベースを「vfdb.json」というJSONファイルとしてエクスポートします。これは、自宅と職場のマシン間でフィードリストを転送できるようにするために追加した機能です。ユーザーにファイル名を選択させると様々なサニタリー上の問題が発生するため、この名前をハードコードしました。後日、この点を修正するかもしれません。
これを行うより良い方法は、オンライン アカウントを通じてデータを転送することですが、現時点ではバックエンドを開発する予定はありません。
開発者ツール メニューは、舞台裏で何が起こっているかを確認するのに役立つことが多いため、アクティブのままにしています。
ということで、以上です。他の誰かにとって、ハゲタカフィードが役に立つことを願っています。そして、エル・レグのフィードも忘れずにチェックしてください。®