tlfoxhuman.net内で使用される、非常に簡素なRSS作成ツール
  • C++ 54.6%
  • PHP 45.4%
Find a file
2025-12-19 21:27:48 +09:00
.gitignore 最初のコミット 2025-12-18 03:35:27 +09:00
README.md rss.svg追加 2025-12-19 21:27:48 +09:00
rss.svg rss.svg追加 2025-12-19 21:27:48 +09:00
rssmaker.cxx 最初のコミット 2025-12-18 03:35:27 +09:00
rssmaker.php 最初のコミット 2025-12-18 03:35:27 +09:00
template.rss 最初のコミット 2025-12-18 03:35:27 +09:00

RSSMaker

何これ

tlfoxhuman.net内でRSSフィードの生成に使用しているプログラムです。
自分以外が使用する事を想定しておりませんので、最低限の機能だけ実装されています。が、多少改造すれば他の方の役にも立つかもしれません。

ファイルたち

  • README.md : これ
  • rssmaker.php : PHP版プログラム本体
  • rssmaker.cxx : C++版ソースコード
  • template.rss : RSSフィード構成サンプル
  • rss.svg : RSSフィード対応を示すボタンに使えるSVG画像です。こちらはパブリックドメインとしておりますのでご自由にお使いください。

使用法

まともなXMLパーサを組んでおらず、単にタグの位置を検出してそこに文字列を挿入したり入れ替えたりと言った感じの実装をしています。間違った(開発者が想定していない書き方という意味)記述のなされたRSSフィードは多分めちゃくちゃに破壊すると思いますので、以下の説明には従ってください。

RSSフィードファイルの準備

template.rssがフィードファイルの構成のサンプルになっています。
タイトル、サイトのメインアドレス、サイトの説明、言語、著作権情報、著者名を設定すればすぐに使用できます。詳しい事は適当にファイル内に書き込んでありますのでそちらをご覧下さい。

<!--INSERT NEW ARTICLE HERE--><!--DO NOT WRITE ANYTHING HERE-->の部分はプログラム内で検出して使用しますから、削除したり編集したりしないでください。無いと多分RSSファイルをめちゃくちゃにします。

RSSMakerの使用

PHPバージョンをメインに開発しておりますので、今後機能追加等が行われた場合はPHP版にしか実装されていないと思ってください。

PHP版

PHP 8.3, 8.4のみでテストを行なっています。 以下のコマンドラインで起動します。

php rssmaker.php <path/to/your.rss>

コマンドラインオプションはありません。じゃどう操作するのと言いますと、逐次項目を聞かれますのでそれに従ってください。

Titleと聞かれたら投稿のタイトルを
URLと聞かれたら投稿ページへのURLを
Dateと聞かれたら投稿日をISO 8601形式で。空白にすると今日の日付を使用します(時間は挿入しません、時間が必要なら自分で打ってください。)
次に、Use HTMLと聞かれます。Yまたは空白で続行すると投稿の抜粋を複数行に渡って記述できます。明示的にNを入力すると単一行だけ入力できます。

Use HTMLでYまたNを入力すると、Descと聞かれます。ここで抜粋を入力してください。

Yで複数行モードを使用している場合、<![CDATA[]]>で囲ってありますのでHTMLタグが使用できます。
複数行モードの場合、Enterを押下しても次に進みません。次に進むには:wqだけ入力します。
注意していただきたいのが、一度Enterを押して次の行に進むと、前の行に戻る事ができません。そのため一度適当なテキストエディタで下書きしてからコピペする事をおすすめします。

Nで単一行モードを使用している場合は、Enterで次に進みます。

んで、次と言ってもこれで完了です。RSSファイルが更新され、新しい記事が挿入されているはずです。

C++版

現状PHP版と操作方法に変わりはありません。

よく無い質問

なんでPHPなの?

元々作者が一番慣れたC++で開発していました。しかし改変の度に毎度最コンパイルする必要があり億劫に感じていました。こんな小規模なプログラムであれば何かスクリプト言語のような物で実装したい所です。そんな中最近、自分のホームページを刷新する過程でPHPを(ようやく)まともに覚えたのです。すると、文字列操作関連の機能が充実している事、私の大嫌いなオブジェクト指向言語ではない事、C言語とBashを混ぜたみたいな文法で馴染みやすい事、いくつかの関数はC言語と似ていて書きやすい事などPHPには意外にも利点が多数存在する事に気付いたのです。

オブジェクト指向プログラミング言語なんてバグの温床だし、可読性は著しく悪く書き込み専用言語みたいなもんだし、あんなの理系の脳ミソが(良い意味でも悪い意味でも)狂ってるプログラマだけ使ってれば良いに決まってます。あんなの使うもんじゃないです。
C++はそれに加えて独特すぎる文法も多数あります。どう考えてもD言語にするべき。
C++はQtのために覚えたものなので、GUIプログラムを作る訳じゃないならC++である必要はありません。

他のプログラミング言語でも良かったかもしれませんが今更覚えるのも面倒です。
仮に別な言語で実装するとして、Node.jsのようにランタイムがバカクソに重い言語は使いたくないし、PythonはC++以上に文法が独特で使えたものじゃないし、シェルスクリプトで書くには高度すぎる。PHPは比較的ランタイムがコンパクトかつ軽量で、Debianの公式レポジトリにも含まれていてインストールも簡単。どうせ覚え始めた言語ならこれを使わない手はありませんね。 と言う訳でPHPを採用したのです。

複数行モードの終了時、何で「:wq」で終了するの?

直感的に「これを入力すれば『保存して終了』だな」と思え、ぱっと思い付いた単語がそれだったからです。 大抵のプログラマなら多少なり体に染み付いているのではないでしょうか。そうです、Vimで保存して終了する時に使うコマンドです。

なお、作者はGNU nano派です。Vimは直感的じゃないので使いづらい。Emacsはあまりに煩雑すぎる、役所の手続きですかあれは。
でも最近はクロスプラットフォーム&オープンソース化されたMicrosoft Edit推しです。MS-DOSの生まれなもんですからあれが一番体に馴染むんです。

ライセンス

PHP版、C++版ともに、プログラム本体はMITライセンスの下リリースされています。本文はコード本体に埋め込んでありますのでそちらをご覧ください。大抵心得ていて読むひとはいないとは思いますケド。

template.rssに関してはパブリックドメインとします。一応言っておきますが、当然ながら作者のホームページ等で配布しているRSSフィードは著作権で保護されていますよ。あくまで構成テンプレートとしてのこのファイルだけです。

rss.svgに関してはパブリックドメインです。ご自由にお使い下さい。勿論本プログラムを使用しない場合でも自由に使えます。

ブランチ

  • master : 安定版。通常このブランチのファイルは取得してすぐに使用できます。
  • devel : 作りかけのファイルが置かれます。不安定版という訳ではなく、本当に作りかけのファイルです。masterと内容が一致していない時はたぶん動きません。