オープンソースでTwitter風ソーシャルメディアを開発し始めた話
元々このプロジェクトを始めようと思ったのは、知り合いがTwitter風のSNSを開発していてその影響を受けたのがきっかけでした。
その目的は、勉強になるからということも勿論ですが、その人の技術レベルへの憧れが大きかったと思います。
さて、きっかけについてはこのくらいにしてこのプロジェクトの説明に移ります。
プロジェクト名は「Frost」と名付けました。(TeaTimeというForstの前身プロジェクトも一瞬ありましたが)
リポジトリは現在2つあって、アプリケーションに対して各種リソースの提供を行う「Frost-API」と公式アプリケーションのWebサーバである「Frost-Web」に分かれてあります。
Frost-APIでは一般的なREST APIと、WebSocketを利用したStreaming APIを提供しています。Streaming APIからもREST APIを呼び出すことが可能になっています。
ここで開発しています。
今の時点で利用している技術や環境は、
- APIサーバ/WebサーバにNode.js(JavaScript)
- データベースはMongoDB
- フロントエンドフレームワークにRiot.js
が主になっています。
開発初期の頃はサーバサイドはphpで書いていましたが、phpからだとWebSocketが扱いにくいらしいと聞いて途中でサーバサイドは全てNode.jsに切り替えることにしました。
当時、JavaScriptは旧石器時代レベルのものしか書いてこなかったため、全て書き換えるのには苦労しました。しかしその反面、JavaScriptとphpの書き方の違いが知れたりしたのでphp時代が無駄になったという気持ちは余りありません。
また、php時代では今のようにAPIサーバとWebサーバを分けて考えていなかったため、サードパーティのクライアントアプリにAPIを提供しようとした場合に根本的な部分から大きく変更する必要がありました。
その点、今は公式アプリ(Frost-Web)もサードパーティアプリとほぼ同等な扱いをしてAPIを経由してリソースにアクセスさせることによって、ある意味拡張性を構築できた気がします。
フロントエンドフレームワークにはRiot.jsを使っています。そのクールさコンパクトさに惹かれました。。良いフレームワークなのでみなさんも使いましょう。
最後になりますが、随時コントリビュータを募集しています!
一緒に開発する、または意見をくれるだけでも良いので協力してくれる人はコメント欄twitter、github、frostまで連絡ください!
今後も、Frostの開発について何か思ったことがあれば記事を書いていきたいと思います。