はじめに
最近イーロン・マスクがtwitterを買収してから、いろいろ騒がれていますよね。そんなtwitterから移行しようと考えてる人を拾おうと思い、AmmotというSNSを開発しました(買収前から作り始めてたのは秘密)。
↑今回作ったSNS
Ammotは文字数制限が6000字まで、画像・動画・PDF・音声。テキストも同時に10個まで投稿可能です。
エロやグロ系も投稿可能です。
作った経緯
実はAmmotというSNSを作るのは初めてではありません。
一年半前に全く同じ名前、コンセプトでサービスを公開していました。
これは自分が作ってきたサービスのなかでは圧倒的に成功したサービスで、
公開して数週間で200人~300人ほどに登録して頂き、qiitaやtwitter等での反響も結構ありました。
しかしこの時はRailsオンリー、つまりSPAではなく、しかもHerokuを使用していたため動作がかなり遅く、レスポンスが重要なSNSで致命的で最終的に閉鎖しました。
この時に「絶対いつかSPAでほぼ同じサービスを作ってやる」と思い、それを果たすため今回作りました。
なのでトップページは旧Ammotとかなり似ています。
工夫した点(twitterとの違い)
- リツイート機能なし...拡散されずらく独り言感覚で投稿できる
- 音声やpdf、テキストも投稿できる
- 文字数制限なし...一応6000字まで
- マークダウン対応
良かったこと
新しい技術を恐れず使った
特にvue3やvuetify3、TypeScript、avo(管理画面gem)など
vue3のcomposition apiは書きやすくて、TypeScriptとの相性もよくて最高だった。
provide / injectもpropsより楽でよい。
作り始めた時期はvue3への過渡期だったので、対応しているライブラリが少なく少し困った。
しかしよく探したら新しいバージョンに対応してるライブラリがあったし、開発中にvuetify3が正式リリースしたりして結局解決した。
ただrails7は別に6でもよかったかもしれない。
vuetifyをうまく使えた
デザインがあまり得意ではないのですが、それっぽいデザインにはなりました。
render
Render というものをHerokuの代わりとして使いました。
Regionはシンガポールも選べるので、体感的にはherokuよりもだいぶ速いです。
価格や性能も良心的です。
参考
悪かったこと
製作期間が長すぎた
半年間かかりました。しかも夏休みを潰しました。
原因としては
-
SPAにした...しょうがない。ただやはりSPAは個人開発には向かない。特にSNSなど多機能なものは、チーム開発がほぼ必須かも。
-
デザインを途中で大幅に変えて戻した...その辺は最初に大まかには決めていたが、製作期間が長くなると「これでいいのか...?」という疑問が生まれ、そっちに流されることもある。
-
キャッチコピーや売り方を決めてなった...ただのアホ。
-
モチベーションが激減した...製作期間が長すぎたせい。
今回は旧作のリベンジというのもあってリリースまで行けましたが、個人開発は3か月以内に収めたほうが無難ですね。
なんども諦めようか迷った。
モバイルファーストにしなかった
- どうしてもPCファーストのほうが作りやすいのですが、 SNSなので流石にモバイルファーストにすべきでした。
使用した技術
rails7
vue3
vuetify3
postgresql
Render (Herokuの代わり)
aws s3(フロントエンドと画像データ)
使用gem(追加分)
gem "propshaft"
gem "ridgepole"
gem 'devise'
gem 'devise_token_auth', '>= 1.2.0', git: "https://github.com/lynndylanhurley/devise_token_auth"
gem 'carrierwave'
gem 'kaminari'
gem 'fog-aws'
gem 'dotenv-rails'
gem "avo", '2.21'
gem 'rack-attack'
gem 'devise-i18n'
gem 'seed-fu'
最後に
本当に長かった。。。まじで疲れた。
実はこのAmmotは3作目で、公開まで行けなったAmmotもあるんです。
でもSNSの管理者になるのが夢なのでなんとか作り切りました。
過去最大の大作なのでよかったら使って頂ければめちゃ嬉しいです。
↓僕のAmmotのアカウント