[コメントアート] 特殊入力のコマンド(184, _live)
/ニコニコ動画のコマンドにはいくつかありますが、今回は入力が特殊な184コマンドと_liveコマンドの効果と入力(解除)法について書きます。
なお、記事が間違っていたり仕様変更される可能性もあるので投下直前にコマテなどでテストしてください。
184コマンド
このコマンドのあるコメントはコメントのIDが匿名化されます。参考
184アリの例 : mko5_-G7fr1SuG4R0Ujq2ucp6nE
184なしの例 : 1145141919810
(なしの例は架空のIDです。マイページの番号と同じです。)
コメントアートでは184を付けない非匿名IDが署名や本人証明のように扱われていたりします。(184でやる人も居ます。)
HTML5版では、プレイヤーによって自動的に入力されてるコマンドです。なので外し方が特殊なコマンドになります。
(flash版でも自動的に入力されましたが、付与するかどうかを設定で選択できました。)
184の外し方
128文字オーバーする方法
コマンドの制限文字数を超えさせることで184を付与できなくする方法です。最も簡単です。
以下のように、特に意味のない文字「aaa...」等を追加したりして128文字を超えるコマンドにしてしまいます。
(なお、データは投稿者コメントエディタで使われているjsonの形式で書いています。コマンドの部分だけ注目してください。)
入力
{
"time": "00:00.00",
"command": "ue big red aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"comment": "test"
}
送信データ
{
"time": "00:00.00",
"command": "ue big red aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 184",
"comment": "test"
}
結果
{
"time": "00:00.00",
"command": "ue big red aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"comment": "test"
}
184は末尾に付与されますが、サーバー側で128文字までで打ち切られるようなので、184なしで書き込むことになります。
(ちなみにコマンド欄には入力文字数の制限はないです。)
重複した単語(無意味なものでも)や、_
で始まる単語は送信時に消えるので、それらで文字数を稼ぐと失敗します。
入力
{
"time": "00:00.00",
"command": "ue big red a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a",
"comment": "test"
}
送信データ
{
"time": "00:00.00",
"command": "ue big red a 184",
"comment": "test"
}
結果
{
"time": "00:00.00",
"command": "ue big red a 184",
"comment": "test"
}
末尾にU+3000を付与する方法
全角空白U+3000( )はコマンドで特殊な挙動を示すので、それを利用する方法です。
コマンドでのU+3000はサーバーでは以下のように扱われるようです。
- コマンドの先頭かU+0020の次にU+3000が出現した場合、全てのU+3000をU+0020として扱う
- それ以外でU+3000が出現した場合、その時点でコマンドの終わりとして扱う
なので、次のように単語の末尾にU+3000を付けると、サーバーでU+3000以降のコマンドが打ち切られ、184を外せます。
なお、後述する「U+3000_liveの方法」とは共存できません。
入力
{
"time": "00:00.00",
"command": "ue big red\u3000",
"comment": "test"
}
(jsonで\u3000はU+3000を表します。)
送信データ
{
"time": "00:00.00",
"command": "ue big red\u3000 184",
"comment": "test"
}
結果
{
"time": "00:00.00",
"command": "ue big red",
"comment": "test"
}
半角空白U+0020の次やコマンドの先頭でU+3000を使うと、もう片方のルールが適用されるので失敗します。
入力
{
"time": "00:00.00",
"command": "ue big \u3000_live\u3000",
"comment": "test"
}
送信データ
{
"time": "00:00.00",
"command": "ue big \u3000_live\u3000 184",
"comment": "test"
}
結果
{
"time": "00:00.00",
"command": "ue big _live 184",
"comment": "test"
}
突破コメント
本文が75文字を超える突破コメントと呼ばれるものがあります。(最大1024文字。)
通常はプレイヤーの入力欄が75文字制限なので入力できませんが、ブックマークレット等や開発者ツール(F12で出るやつ)を利用したりすると入力できます。
184コマンドはそのような突破コメントの可否に関係してきます。
184のあるコメントは、75文字を超えた場合コメントサーバーで拒否され投稿に失敗します。
184のないコメントは、75文字を超えたコメントでも投稿に成功します。
ただ突破コメントはパワーバランス的に問題視されていたりして、動画のコメントアートではあまり利用はされていません。
投稿者コメントでの扱い
IDは特に関係ないのでたぶん意味がないコマンドになります。
投稿者コメントは1024文字まで入力可能に設定されてるので、75文字を超えるコメントの意味でも特に意味はないです。
(投稿者コメントについて75文字を超えたものを「突破」と表現することはあまりないと思います。文化圏によってはあるかもしれません。)
強制184動画
公式アニメ等、強制的に184(匿名ID)状態に設定されてる動画があります。
このような動画では、184コマンドを付与することができず、全てのコメントがコマンドに関わらず匿名IDとされます。
(自動で184が付与されなくなり、手動で付与した場合サーバーで拒否される。)
なので外す方法を使っても特に意味はないです。
強制184の動画では文字数の判定ついては「184のないコメント」として扱われ、突破コメントができるようです。
_live
効果としてはコメントが半透明になるコマンドです。透過率はちょうど0.5のようです。
完成形として半透明にしたいときや、影付けに利用されることがあるようです。
比較的最近利用できることが発見されたもので、存続するかは不明なものでもあります。
_
で始まるコマンドは特殊用途用のコマンドとして入力が制限されていて、普通に入力すると送信時に取り除かれます。
が、現在HTML5版では工夫すると入力可能な状態です。
_liveの付け方
コメントの送信時、_live
の直前にU+0020以外の文字を付けると送信できます。(_
で始まるコマンドではなくなるため。)
例えばa_live
とした場合_liveの効果は出ませんが、取り除かれることもないです。
付ける文字を工夫すると効果のある_liveコマンドを送信できます。
U+3000_liveの方法
以下のように、_liveの前に全角空白U+3000( )をつける方法です。
入力
{
"time": "00:00.00",
"command": "ue big red \u3000_live",
"comment": "test"
}
(jsonで\u3000はU+3000を表します。)
送信データ
{
"time": "00:00.00",
"command": "ue big red \u3000_live 184",
"comment": "test"
}
結果
{
"time": "00:00.00",
"command": "ue big red _live 184",
"comment": "test"
}
送信時にはU+3000_live
という単語として扱われて取り除かれません。
サーバー側では
- コマンドの先頭かU+0020の次にU+3000が出現した場合、全てのU+3000をU+0020として扱う
というU+3000の性質により、普通に_liveを入力したのと同じ結果になります。
ただし、末尾にU+3000を付けて184コマンドを外す方法とは共存できません。
入力
{
"time": "00:00.00",
"command": "ue big red \u3000_live ender\u3000",
"comment": "test"
}
送信データ
{
"time": "00:00.00",
"command": "ue big red \u3000_live ender\u3000 184",
"comment": "test"
}
結果
{
"time": "00:00.00",
"command": "ue big red _live ender 184",
"comment": "test"
}
U+2001_liveの方法
以下のように、_liveの前に空白文字U+2001( )をつける方法です。
入力
{
"time": "00:00.00",
"command": "ue big red \u2001_live",
"comment": "test"
}
(jsonで\u2001はU+2001を表します。)
送信データ
{
"time": "00:00.00",
"command": "ue big red \u2001_live 184",
"comment": "test"
}
結果
{
"time": "00:00.00",
"command": "ue big red \u2001_live 184",
"comment": "test"
}
データ的にU+2001は残ったままですが、HTML5版のプレイヤーの再生時はU+2001等の空白もコマンドの区切りとして扱われるので、_liveコマンドとして扱われます。
(U+2001以外でも、javascriptの正規表現で\s
で表されるされる文字類が区切りとなるようです。)
ただし、flash版等ではU+2001はコマンド区切りとしては扱われないので、U+2001_live
というコマンドとして扱われ、透明になる効果はないです。
(「U+3000_live」はflash版でも効果があります。)
デバイス別等で複数存在するプレイヤーによってはflash版の動作に準拠している場合もあるので、その場合も効果はないです。
投稿者コメントでの扱い
特に入力制限はないので、普通に入力できます。
歴史的経緯
元々は世界の新着動画のコメントに自動的に付与されていた、割と古くからあるコマンドでした。
透過率が高くなるという効果もたしかこの頃からありました。(なのでセカチャクのコメは判別できました。)
が、入力制限がかかっていて、存在はしても特に利用されていませんでした。
HTML5版になって、透明になる機能は実装されていたものの、特に入力制限がなく入力可能となっていました。
HTML5版2年目にして_liveを入力できるのを発見するの図
お、コマンドに _live 入れると半透明になるな
— yammaboo (@yammaboo) 2018年5月8日
このあとすぐに対処されて、現在の「通常のコメントでは対策はされている」「投稿者コメントには特に制限がない」状態になりました。
_liveを対策されるの図
お、_live使えなくなったのか
— yammaboo (@yammaboo) 2018年5月23日
そのあとしばらくして「通常のコメントでも工夫すると投稿できる」ことを発見して今に至ります。
工夫したら_live入力できたの図
やり方は_liveの頭に3000をつける [ue big red _live]
— yammaboo (@yammaboo) 2018年8月25日
今後より厳しい入力制限になるのか、この状態のままなのかは不明です。
世界の新着動画が既に終了しているため、_liveの透過機能自体が削除される可能性もあります。
一部デバイス等では透過する機能実装自体されていない可能性もあります。
_liveコマンドを利用する際はそのような不安定な存在であることを考慮して利用する必要があると思います。
まとめ
- 184の解除方法
- コマンドの文字数制限128文字を使いきる
- 無意味な文字で可
- コマンド末尾にU+3000を付ける
- U+3000_liveとは共存不可
- コマンドの文字数制限128文字を使いきる
- _liveの入力方法
- U+3000_live
- コマンド末尾にU+3000を付ける184解除とは共存不可
- U+2001_live
- flash版準拠のプレイヤーでは反映されない
- U+3000_live