1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[個人開発]一つのフォームをみんなで編集し合う掲示板を作ってみた!

Last updated at Posted at 2022-06-14

今回作ったもの
https://www.synher.net/

最初の数秒は何もフォームに何も表示されないかもですがバグではないので、リロード等はしないでください。

初めに

一年ぶりとなってしまいましたが新しいwebアプリを作ってみました。それがSYNHERです。
スクリーンショット 2022-06-14 225643.png

vueを使ったアプリで初めての公開になりました。

概要

Animation2.gif

このようにリアルタイムでいろいろな人とフォームを編集して遊ぶアプリです。

何で作ったか

自分は「Reddit Place」という一つの板に1ピクセルごとに色を塗っていき協力して絵を作っていくというサイトが大好きです。大きな絵を描くためにネットを通じて知らない人と協力しあい、しだいにチームになっていく。。。という過程がネットの素晴らしさを具現化したようで好きです。

自分もReddit Placeのようなものを作りたいと思い、Reddit Placeの文字版のsynherを作りました。

工夫した点

・パフォーマンス

※修正前

vueのwatchで監視

変更を検知

変更内容を送信

フォーム全体を更新

※修正後

vueのinputで検知

3秒ごとに送信・更新するタイマーをスタート

送信・更新される

しばらく変更がなかったらタイマーストップ

修正前は半角英数字やenterを連打されたとき、一文字打つたびに送信・更新されてとんでもなくサーバーに負荷がかかる仕様でした。

そこでwatchは使わず、inputで判定しタイマーを発火させて変更があるかぎり3秒に一回送信・更新して変更がなくなったら停止するという仕様にしています(そのせいでラグが少しある)。

・行数制限

行数を無限にすると改行されまくってデータが大きくなり更新が重くなる、ということがあり得るので50行までにしてあります。
色々なサイトがありますが殆ど上手くいきませんでした(おそらくvue3だから)。唯一下記のサイトではうまくいったので載せておきます。

使用した技術

rails7(API)
vue3(フロント)
heroku
actioncable

その他gem

gem 'rack-cors'
gem 'dotenv-rails'
gem 'rack-attack'
gem "ridgepole"

まとめ

Reddit Placeのようにはなれないかもしれないけど、一定人数には使ってほしいですね。。。
ということで改めて使ってみてください。宜しくお願いいたします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?