Ginza.rb 第91回 - Gumroadのソースコードを読むぞ - connpass
第91回はOSSになったGumroadのコードを読みました。
Gumroad
実際にお金を稼いでいるアプリケーションのコードをOSSにして、外部コントリビュータのPRをうけつつその上で開発を進めるというのは世界的に見てもなかなかユニークな形式なのではないでしょうか。
流石にコード公開前の履歴まではみれないですが、それ以外は特にコードの公開用に体裁を整えた形式が見えないのが潔いなと思いました。コードを眺めるとapp/helpersにビューヘルパーではないヘルパー用モジュールが含まれているのとか、app/modulesがなんでもモジュール置き場になっているのとかにとてもリアルさを感じます。このような負債は多かれ少なかれ歴史のあるアプリケーションには必ず見られるものですが、今後これとどのように付き合っていくのかを外部から見守っていけるのはありがたいところです。
Gemfileをみると数多くのgemが使われているのがわかります。かなり古くメンテナンスが滞っているgemもありますが、恐らく「この便利gemは知らなかった…」というものが1つや2つは見つかるはず。
AIの活用という点でも学べる点は多いです。まずコードを書く方面でLLMを活用しています。.cursorrulesが定義されていたり、devinがPRを作っていたりします。レビューにはCodeRabbit、Diamond、Cursor – BugBotを利用しているようです。
あとはコード中でもLLMを活用しています。koicさんも書いていますが、自然言語で書いた返金ポリシーをLLMに解釈させていい感じにユーザに応じた返金までの期間を算出するのが面白かったです。現状ふつうのプログラミングでは算出が難しいロジックの一部をLLMにまかせて運用工数を短縮する面白い実例なのではないでしょうか。
10年以上の歴史を持つコードであり分量も多いですが、読む価値はあると思います。
次回
次回は8月8日(金)開催で「アプリケーションサーバ」というお題で実施する予定です。この分野だとpumaやunicornが有名ですが、それ以外にも数多くの選択肢があるぞというのを掘り下げていく予定です。
興味のある人は予定を開けておいてください。