リコリス・リコイル7話に登場するソースコード
今期放送中のアニメ、「リコリス・リコイル」の7話冒頭に、"Internet Automatic Search Program"と題したソースコードが現れます。
/*<replacement>*/
var bufferShim = require('buffer-shims');
/*</replacement>*/
/*<replacement>*/
var util = require('core-util-is');
util.inherits = require('inherits');
/*</replacement>*/
/*<replacement>*/
var debugUtil = require('util');
var debug = void 0;
if (debugUtil && debugUtil.debuglog) {
debug = debugUtil.debuglog('stream');
} else {
debug = function () {};
}
/*</replacement>*/
var BufferList = require('./internal/streams/BufferList');
var StringDecoder;
util.inherits(Readable, Stream);
function prependListener(emitter, event, fn) {
// Sadly this is not cacheable as some libraries bundle their own
どう見てもJavaScript、それもCommonJSのコードにしか見えませんよね。これだけrequire()
していれば明らかです。
では一体何のコードなのでしょうか。鍵はutil.inherits(Readable, Stream)
です。util.inherits
というのはNode.jsが提供する関数で、ES6のクラスが無かった時代に継承を行うのに使われていたものです。つまりこの場合、Stream
という型をReadable
に継承させています。故にこのコードはReadable
という型を実装するためのものと考えられます。
そしてこのReadable
というのも、Node.jsが提供する読み取り専用ストリームのクラスなのです。
ここまで来れば、このコードが何処から来たのかおおよそ想像がつきます。Node.jsのReadable実装、または、Node.js互換のReadableを実装するライブラリのどちらかとしか考えられません。
答え合わせ
このソースコードは果たして、正確には、Node.jsのReadableの実装から取られたものではありませんでした。というのも、このコード片のオリジナルが見つかったのは、nodejs/readable-streamというリポジトリの_stream_readable.jsだったからです。このリポジトリはオリジナルのNode.jsのstreamの実装をミラーしている、とあるので、実質的にはNode.jsのコードだったと言っても良いのかも知れませんが。
この奇妙な/*<replacement>*/
というコメントは、どうやら、元のリポジトリからミラーする過程で生まれたもののようです。ミラーの工程で、いくつかのファイルが一つのファイルに結合されたことによって、require()
の位置が不揃いなコードになったようです。