156
46

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 3 years have passed since last update.

小林さんちのメイドラゴンで出てきたコード(小林さんを探せ!)

Last updated at Posted at 2017-02-13

:warning: 注意 :warning: この投稿には一部ネタバレを含んでいる可能性があります。

またまた小林さんちのメイドラゴン関連の投稿です。

このアニメでは、主人公の小林さんが SEなのに 作品中でコードを書いている場面がいくつかあります。これらの場面ではコードを実際に書いている画面までくっきりと写っています。

凝ってるなぁと思って少し調べてみることにしました。

登場したコード

第一話

20:10ごろ、トールがケツァルコアトルと電話し終わった直後、曇り空をブレスで晴らす直前、小林さんの職場が一瞬写ったシーンで。

第一話20:10ごろ.py
def __delitem__(self, key):
    self.db.delete(self.table, where="session_id=$key", vars=# 見切れ

def cleanup(self, timeout):
    timeout = datetime.# 入力中

第五話

02:25ごろ、OP直後、小林さんが同僚に「最近明るくなった」と話される直前。

第五話02:25ごろ.py
import os, time, datetime, random, base64
import os.path
from copy import deepcopy
try:
    import cPickle as pickle
except ImportError:
    import pickle

from hashlib import sha1

from .# 入力中

06:14ごろ、トールが小林さんの会社を訪れた時。小林さんが同僚のPCに表示させられたこのコードを指し示した。

第五話06:14ごろ.py

    def _validate_ip(self):
        # IPアドレスの変更を確認する
        if self.session_id and self.get('ip', None) != web.ctx.ip:
            if not self._config.ignore_change_ip:
               return self.expired() 
    
    def _save(self):
        if not self.get('_killed'):
            self._setcookie(self.session_id)
            self.store[self.session_id] = dict(self._data)
        else:
            self._setcookie(self.session_id, expires=-1)
            
    def _setcookie(self, session_id, expires='', **kw):
        cookie_name = self._config.cookie_name
        cookie_domain = self._config.cookie_domain
        cookie_path = self._config.cookie_path
        httponly = self._config.httponly
        secure = self._config.secure
        web.setcookie(cookie_name, session_id, expires=expires, domain=cookie_domain, httponly=httponly, secure=sec#見切れ
    
    def _generate_session_id(self):
        """ランダムのセッションIDを生成する"""

        while True:
            rand = os.urandom(16)
            now = time.time()
            secret_key = self._config.secret_key

第13話(最終話)

トールが去って二日後の夜、滝谷くんからの飲みに行く誘いを断った直後、小林さんのメガネに写る。

髪の毛で見えないところは?とする。

第13話.py
        ?????e = ShelfStore(shelve.open('sess #見切れ
    XXX: ?helveはスレッドセーフ?要確認。
    """
    def __init__(self, shelf):
        self.shelf = shelf

    def __contains__(self, key):
        return key in self.shelf

    def __getitem__(self, key):
        atime, v = self.shelf[key]
        self[key] = v # update atime
        return v# 入力中

紛れもなく Python ですね。

出処を探す

情報が揃ったのでとりあえずググってみましょう。まずは第一話のコードでググります。

一番長い行でググりましょう。検索結果 :mag_right:

image

おや? 早速よく似たコードが……確かめてみましょう。 最上位検索結果

み、みにくい……。めげずにページ内検索で探します。

image

:tada: 見つかりました! :sparkles:

このコードの最初に、

session.py
"""
Session Management
(from web.py)
"""

とあります。

どうやらパブリックドメインの Web 用 Python フレームワーク、 web.py の一部のようです。

GitHub にソースが上がっているようなのでそちらを見ます。314行〜が該当範囲のようですね。

もしかしてと思い、他のコードも同ファイル内で調べてみると見つかりました。

話数 位置
第一話 314行〜
第五話1つめ 6行〜
第五話2つめ 126行〜
第13話 329行〜

表にまとめるとこうなります。
コメントが日本語に翻訳されてますね。しかも訳がうまい!

小林さんを探せ

:warning: 注 ここからはネタです。

さて、このコードが小林さんによって書かれた、とするならば、このファイルのContributorsの中に小林さんがいてもおかしくはないはずです。

このファイルのContributorsは現時点で以下の7人です。

image

この中に小林さんがいるのでしょうか。

Gitでは、 [Git Blame] (http://qiita.com/siluejp/items/44960964ecbac77fe19a)という機能を使ってコードを誰がどのコミットで書いたかを見ることができます。

これはGitHub上でもこのボタンを押してみることができます。

範囲を選択_004.png

ボタンを押すと、このような画面にいきます。

blame

この機能を使って調べてみると、作品中で小林さんがコードを実際に書いていた(カーソルが乗っていた)17行目318行目338行目を書かれた人は@anandology (Anand Chitipothu)さんで、同僚に指し示していた143行目近くを書いていたのは@seanhoughton (Sean Houghton)さんでした。

小林さんが書いていたところ:

image

image

image

この3つの行が同じ作者なのはなぜか? 小林さんだからでしょう!

同僚に見せていた箇所:

image

作者が小林さん(?)に何人か混じってますね。これはそのとき見せていた同僚なのでしょう!

こんなにも辻褄が合うのは偶然でしょうか?

つまり、@anandology (Anand Chitipothu)さんが小林さんで、@seanhoughton (Sean Houghton)さんはそのとき近くにいた同僚の男性ということになりますね!1 小林さん、インドの方だったんですか!ナマステ

最後に

:tada: 2021年7月二期放送決定おめでとうございます! :tada:

  1. なりません

156
46
4

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
156
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?