
Ginza.rb 第96回 - Fizzyソースコードリーディング - connpass
第96回は37signals社が公開したFizzyのソースコードを見ながらワイワイしました。
basecamp/fizzy: Kanban as it should be. Not as it has been.
fizzyというビジネスに対する感想
第96回を開催したタイミングでは「1000カード以上を作ろうとすると20ドル/月」という課金体系でした。ユーザ数などは無制限でだいぶ安い。さらにコードが公開されているのでオンプレでも動かせる。オンプレからクラウド、クラウドからオンプレへの移行もやりやすいようにuuid7で作っていて(それぞれが稼働している状態でデータをマージしてもidが衝突しない)、ユーザとしてみたら最高便利なんだけどサービス提供側からしたらこれで採算取れるのかな?と思っていたら完全無料のサービスになってしまって驚きました。元々どういうビジネスプランだったのか気になるところです。
設計や実装に対する感想
色々気になった点を列挙しています。
- 大まかなコード体系としてはbasecamp/once-campfireと似ています(同一の会社のプロダクトなので当たり前だけど)。最近のプロダクトなのでAGENTS.mdだったりSTYLE.md)だったりとAIエージェントに読ませるためのファイルがあるのが違い。
- 大きな特徴としてはsqlite3とmysqlのどちらでも使える構成だということ。元々はsqlite3で実装する予定だったけど途中で厳しいことがわかりSaaS版はmysqlにしたというのをどこかで読みました。
- 全文検索をDBで実装しているというのも珍しいところです。一昨年のRails WorldでDHHが話していたActive Record Searchの原型はこれなんだろうと思っています。しかし実装としてはMySQLとsqliteの全文検索機能を比較的素朴に使っており、単語はスペースで区切られるのが前提になっているため日本語でFizzyを使うと検索はまともに動きません。残念><
- seedの定義の仕方も面白いです。まずseed用のDSLを定義して、各テナントでDSLを利用してレコードを作っています。
- マルチテナントなSaaSとしてテナントを分けるのをRackミドルウェアで実装している、というのも個人的には面白い点だと思いました
- あとはライセンスが興味深かったです。基本MITと同等だけど競合サービスを作るのは禁止というO’Saasyライセンスを新設しています。
- koicさんも書いてたけどzip_kitを知れたのは収穫でした。
次回
次回は5月15日(金)に、RubyKaigiの振り返りをやります。興味のある方はぜひご参加ください。

