Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

: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という機能を使ってコードを誰がどのコミットで書いたかを見ることができます。

これは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: 二期決定おめでとうございます! :tada:


  1. なりません 

ygkn
JSer。 WriterLighter ( http://writerlighter.github.io/ )という小説用のテキストエディタを作っています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした