3

ニコニコ動画代表の「ツイッターのようなSNSは作りたくない」発言を調べたら本当だった話

最終更新日 投稿日 2023年09月26日

Xこと旧Twitterが今後どうなるのか全く分からない状況ですが、2、3カ月ぐらい前にニコニコ動画の代表の人がこんなことを言いました。要は「ツイッターみたいなSNSを作りたくない」という話です。

一応、SNSを作って閉鎖させたことがあるのですが、この発言は本当です。
で、何故作ってと言われたら断りたくなるほど面倒くさい仕組みなのか解説していきます。

(最も、「何故作りたくないのか」と分かったとしても、この発言は批判されるでしょうし、私自身批判的な目で見てますが、そこは横に置いておくとします。)

実はツイッターのタイムラインの仕組みは非常にサーバー負担が大きい。

SNSを実際に作って分かったのですが、実はツイッターのタイムラインの仕組みは非常にサーバー負担が大きいのです。

というのも、ネット掲示板で例えるなら「ユーザー一人につき一回の書き込みを平均して千個ぐらいの掲示板に一度に書き込む」という感じの処理が必要になるのです。当然、サーバーの負担は非常に大きいです。
「この処理を無くす方法はないのか?」というと「フォローしているユーザーの書き込みをサーバーから検索してタイムラインを構築する」という方法があると言えばあるのですが、この検索自体が「リアルタイムに平均して千件ぐらいの数の掲示板から単語を検索して再構築する」という感じのプログラムになってしまい、これもまた非常にサーバーの負担が大きいです。

さらに技術的に詳しいことは下記のHiromichi NOMATAさんやZenn.devでkoukikitamuraさんが書いた記事に載っています。

これにリツイート機能(シェア機能、リポスト機能)が加わる

更に事を難しくするのは、ツイッターのリツイート機能が実は難しいということです。
これには基本的にSQLの内部でjoinという命令文(left joinやinner join)を使用するのですが、これもまたサーバーの負担が大きいのです。

これに画像投稿や動画投稿が加わる

タイムラインもリツイートもサーバーの負担が大きい機能なのに、更に難しいのは基本的に画像投稿と動画投稿のサービスを追加しないといけないことです。
画像投稿と動画投稿はサーバーの負担が非常に大きく、かといって搭載しないというのもサービスの質が悪くなって、また難しいでしょう。
だからツイッターのようなSNSの制作は難しいというわけです。

なら作るのは諦めた方がいいのか?

なら「作りたかったけど作るのは諦めるべきなのか?」というと、正直言いましてそんなことはないと思います。アイディア次第でこのサーバー負担を軽減できると思いますし、サーバーの負担が大きいのなら、「なら有料のサービスを展開してサーバー代を回収すればいいんじゃないか」という考えもあるからです。(実際にお金を払ってもらえるかは置いといて)

ただ、上の技術面よりもっと問題があります。「Twitter以外のSNSよりシェアを伸ばして利益を上げられるのか?」です。

技術的な話というより商業的な話なので簡潔に済ませますが、MisskeyやMastodonなどTwitterと競合しているSNSはいくつかあります。特にMisskeyはなんと2014年から続いているという非常に強力なSNSであり、これに勝つのは非常に難しいと思います。

自作のSNSを閉鎖させた一番の原因は金銭面でも技術面でもなく、Misskeyがあまりに凄すぎて「これはどう足掻いても勝てない」と思ったからです。

もしMisskeyを試したいという方は下記のURLから入ると良いと思います。

まさに「本来Twitterに欲しかった機能が全部乗っている」と言っても過言ではない作りであり、制作者のしゅいろ氏(通称しゅいろママ)の技術力の高さに驚かされると思います。

余談 おすすめの仕組み自体はそんなに難しくない

余談ですが、上のツイッターの発言をTogetterでまとめたものがあり、その中のコメントで「おすすめ機能を作るのが面倒くさいらしいが、それをやめたら?」という突っ込みがあるのですが、これは的外れであり、おすすめ機能は作りにもよりますが、少なくとも世間一般に想像されるよりはそこまで負担ではありません。

理由は各ツイートに時間に代わる数字を適当に設定して、並び替えればいいからです。(いわゆるソート)。並び替えは確かにサーバーの負担はかかりますが少なくともタイムライン構築ほどではないし、並び替えのプログラム自体も難しいものではありません。

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
ログインすると使える機能について

コメント

(編集済み)

Misskeyをべた褒めしていただいて恐縮です!!
自分はそこまで技術は無いと思うのですが、それでも10年間こつこつ開発を続けてきたためクオリティは高くなってきていると思います。

Twitterのような「ユーザーが投稿するたびにフォロワーのTLに投稿を追加する」というアーキテクチャはPush型と言われていますね。
Read時(TLを取得するとき)の負荷は減りますが、記事内で言及されていたように「ユーザー一人につき一回の書き込みを平均して千個ぐらいの掲示板に一度に書き込む」のような処理が必要なのでWriteの負荷は高まりますし、プログラムとしての複雑さも増します。
一方現状Misskeyで採用しているのはPull型のアーキテクチャで、単にTLを取得するときはデータベースの投稿テーブルから自分がフォローしているユーザーのものを絞って取ってきます。
これだとWrite時はデータベースに投稿をひとつ挿入するだけなので負荷は低いですがReadの負荷が高くなります。

…と書いてたんですけど記事内で紹介されている https://qiita.com/hiromichinomata/items/dfc9d2741f0ae40ce59c を見たら全部書いてありましたね。

Pushの方が利点が多いと思われるためMisskeyでもアーキテクチャ変更の議論はあるのですが、実装が大変そうなのと、Misskeyは TwitterやMastodonなどと違いリアクションという動的な要素があってPush型との親和性が良くない可能性もあり検討中です。

なら作るのは諦めた方がいいのか?

SNSの開発はWebの技術が一通り学べますし、実際にユーザーに使ってもらえると楽しいのでぜひチャレンジしてみて欲しいという気持ちです!!

4
あなたもコメントしてみませんか :)
新規登録
すでにアカウントを持っている方はログイン
記事投稿キャンペーン開催中
iOS強化月間 - iOSアプリ開発の知見を共有しよう -
~
個人開発エンジニア応援 - 個人開発の成果や知見を共有しよう!-
~
3

Qiitaにログインして、便利な機能を使ってみませんか?

あなたにマッチした記事をお届けします

便利な情報をあとから読み返せます