2022/02 ブログサーバ開発進捗(つらい)

最近全然書けていなかったので近況報告をば。

  • 卒研終わったぞー
  • 最終登校日も過ぎちゃったなあ
  • ロシアウクライナ戦争
    • 日本はかなり危機なのでは……?
    • ゼレンスキーの覚悟すごい

等々、この期間に思ったことはかなりあるのだが、取り急ぎ、ブログサーバの開発に関して。

ブログサーバの開発

ブログサーバ(not CMS, like SNS)の開発を最近始めた。

とは言っても、現状実装する予定のものは、ユーザ同士でFollowし合い、Followしているユーザの新着投稿は通知される、程度のシンプルなものだ。 将来的には、

  • Feedにも対応してRSSReaderから読める
  • サーバ同士でFederationできたり(ActivityPubで実装する気はさらさらないが)
  • 1日の間で短文を書き貯めておき、0:00になると放流する的な機能

などがあるとよさそうだなーと思っている。

開発にはPHPとそのWebフレームワークであるPhalconを使っている。

これはPhalconは高速であるためである。 普通のフレームワークPHPで書かれている。 それに対し、Phalconは、PHPの拡張(C言語などで実装され、コンパイルされる)として提供されているからである。

しかし、Phalconを選定したはいいものの、環境やらライブラリ面やらでとてもつらい。

まず、PHPのLSP(Language Server Protocol)がWindowsでは満足に動かない。 私はemacsで普段開発をしているため、LSPが満足に使えるのと満足に使えないとでは、開発時のやる気や生産性には雲泥の差が生まれる。

次に、Phalconのmigrationツールの問題である。 PhalconにはRDBMSへのmigrationツールがある。しかし、今の最新リリースで、使っているv5-beta3には対応していない。 さらに、このプロジェクトは開発が停滞していて、正直、今後この問題が修正される見込みがなさそうである。 そのため、Webフレームワークからは独立したmigrationツールを探すことになった。

3つ目に独立したmigrationツール不足である。 Phalconのmigrationツールの問題の章で語った通り、フレームワークからは独立したmigrationツールを探すことになった。 そのため、awesome-phpでmigrationの章を漁ってみたら、cakePHP/phinxが見つかった。

github.com

github.com

しかし、Columnに対し、unique属性が付けられず実用できるかが非常に微妙である。 他もREADMEを見てみたが、SQLiteMySQLからPostgreSQLに対応したものがそもそも少ない。

てなわけで困っている。

Phalconのバージョンを落として使ってみるか…… v4の最新版は自力でビルドしなきゃだし、PHPのバージョン落とさないと動かなそうなんだよな……

CodeIgniterやLaravelなどのPHPの他のフレームワーク、ElixirやGolangなど他言語に移植するのも一つの手なんだが、一から書かないとだしな……

どちらにせよ気が進まない……