こんばんは。ingen084です。

本日12時を持ちまして、NECOSenは1周年を迎えることができました。

データベース破損や、深刻なバグの発生・長時間の停止など、いろいろありましたが、ここまでこれたのもいろいろな形で(もちろん、コメントもリクエストもしてないけど、聴きに来てくださってる方もです)支援してくださった皆さんのおかげです。本当にありがとうございます。

今後の展開について

新連携ページ・専用プレイヤに関してはアズタケとかいうひとの作業を見守ってあげてください…。ほんまにいつ完成するんや…

VOCALOIDチャンネルの配信開始について

こちらは以前からお伝えしてます通り、専用プレイヤ完成後に配信開始させていただきます。

同じ動画が流れすぎ(以下略)問題の対処について

本当にどれだけかかってるんだって話ですけど、仕組み自体は完成しています。あとは連携ページが完成して、皆さんの目に見える形になればすぐ始めさせていただく予定です。
ですが、記載していたのがかなり前のため、改めてここでどのような対処を行う予定か記載させていただきます。
  1. 再生から一定時間の間は当選率が低下し、その動画自体が当選しにくくなります。
  • リクエストが少ないときは実質的に無効になり、リクエストが混雑している時はかなりきつめの設定になります。
  • 連携ページ上から大まかにはなりますが、前回その動画が流れた時間を確認できるようにします。
  • 当選率が低下している場合、低下しているアイコンが表示されるようになります。
同じ曲だけど別の動画、同じような構成のメドレーのクールタイムを一部共有します。
  • 当選時に似た動画を統合するなどの挙動を検討していますが、連携ページ上での表示などの兼ね合いもあり検討中です。


唐突ですが、NECOSenのサーバ構成のお話(というか列挙)をさせてください。
ちょっと技術的な単語が出てくるので、しっている方はほーんってなれるかなと思います。

NECOSenシステム本体

構成

NECOSenのシステムは大きく分けて、フロントエンド(Web連携ページ)部分・バックエンド(配信管理等)部分2段構成となっています。

開発言語・フレームワーク

現在、Web連携ページのフロントエンドは、Stylus(デザイン)+TypeScript(Knockout.js)という構成で、MVVMの形で開発されています。
配信システム・連携ページのバックエンドは、C#で開発しており、連携ページのフレームワークはASP.NET Core MVC、配信システムのフレームワークは自作となっています。
また、新連携ページではページ自体もC#(Blazor)で実装予定です。

連携ページと配信システムの通信方法

RedisのPubSubEventを使用して通信しています。
連携ページ公開当初ではSignalRを使用してWebSocketを使用していたのですが、さすがに非効率だったのでRedisに移行したみたいです。

動画再生の管理

NECOSenの動画再生の時間はタイムベースのスケジュールで管理されています。
設計当初は、タイムテーブルを完全に取り扱うシステムを想定し、自動でスケジュールを組み上げる処理なども凝ってたのですが、スキップ機能などの兼ね合いもあり、最終的に1~2曲先の動画まで確定するという形になっています。(Nsenではその機能がなく、運営タイム前は動画の先読みがされていませんでした。)
ですが、新配信になって、特に先読みの必要性がなくなってきたこともあり、設計のし直しを検討しています。

ハード面

サーバマシン

NECOSenで直接的に利用しているものは1台となっています。
スペック
型: 富士通カスタムメイドPC
製造年: 2007年
CPU: Core2Duo E7500 @ 2.93GHz
メモリ: 8GB
HDD: 160GB+1TB+300GB+500GB
ですが、プロキシサーバとして別途1台、以前から使用しているPCを継続して使用しています。
スペック
型: NEC VersaPro (型番は忘れました…)
製造年: 2010年?
CPU: Celeron 900 @ 2.2GHz
メモリ: 6GB
HDD: 160GB

ネットワーク

プロバイダはJ:COMです。かなり細い上に何度か通信量の警告の手紙が来たことがあるので、数ヶ月以内にOCNに乗り換える予定です。
ルーターはAterm WG600HPですが、来月YAMAHA RTX830を購入する予定です。
ローカルネットワーク内はすべてカテゴリー5eもしくは6のLANケーブルで統一しています。

ソフト面

サーバ用OS・Webサーバ

アプリケーションサーバの方はWindowsServer 2016 Datacenter
プロキシサーバの方はWindowsServer 2012 R2 Datacenter
を使用しています。
WebサーバはどちらもIIS(バージョンは順に8.5、10)を使用しています。
レスポンスデータが
Server: Microsoft-IIS/8.5
X-Powered-By: ASP.NET
X-Powered-By: ARR/3.0
X-Powered-By: ASP.NET Core
とかよくわからないことになってるのはだいたいコレが原因です。

データベースサーバ

こちらはアプリケーションサーバのみで、キャッシュ目的にRedisを、流れた曲などの管理にSQLServer 2016 Enterpriseを使用しています。

最後に

冒頭の通り、NECOSenに来てくださっている皆様、本当にありがとうございます。
皆さんのおかげで1周年を迎えることができました。
コミュニティ運営の都合上、2周年を迎えられるかやっぱりわかりませんが、今後もNECOSenをよろしくお願いいたします。