pythonサンプルコードの元ネタを書いたった

# background

公式サイトや書籍に書かれているサンプルコードには、映画・コメディネタが含まれているのでまとめてみました。
大体書籍のはしり書きには「Python」は「空飛ぶモンティ・パイソン」から由来されていると書かれているわけですが、それだけではない気がします。

サンプルコードは例として書かれているため何を意図して変数・文字列・数字にしているかは残っていないし、読む側は推測でしかないです。フォーマルな会議だったら議事録とかあるのですがこんなところでなんらかのコメントを残してまでリソースを使うアホはいないです。

ここでは、いくつか気になったコードを紹介します。

# 42

[Python - Documentation - tutorial - if 文](https://docs.python.org/ja/3/tutorial/controlflow.html#if-statements)
のサンプルコードにはこんな感じで書かれています。

```Python:if
>>> x = int(input("Please enter an integer: "))
Please enter an integer: 42
>>> if x < 0:
...     x = 0
...     print('Negative changed to zero')
... elif x == 0:
...     print('Zero')
... elif x == 1:
...     print('Single')
... else:
...     print('More')
...
More
```

ここで入力値で「42」が使われています。
必ずではないですが、頻度は少し高めです。

他の言語ですがruby on railsのリストメソッドで42番目の要素を返すメソッドが存在します。
`(1..50).to_a.forty_two`
で書けるっぽいです。

`first(items[0])``second(items[1])``third(items[2])``fifth(items[3])`くらいまであって何も脈略もなく
`forty_two(items[４１])`
があって、42番目の要素を取得することができます。

で、[RailsのArray拡張にforty_twoがいる謎](https://qiita.com/kengos@github/items/3f27cadc7f1a1c101cce) > [github](https://github.com/rails/rails/commit/e50530ca3ab5db53ebc74314c54b62b91b932389#commitcomment-8436)で辿っていくと下記のコメントがありました。

```text
tilsammans: 
http://en.wikipedia.org/wiki/Notable_phrases_from_The_Hitchhiker%27s_Guide_to_the_Galaxy#Answer_to_Life.2C_the_Universe_and_Everything_.2842.29
```

この日本語版のwikipediaを見ると、、、
イギリスのSF小説「銀河ヒッチハイク・ガイド」の中にあるフレーズで
[生命、宇宙、そして万物についての究極の疑問の答え](https://ja.wikipedia.org/wiki/%E7%94%9F%E5%91%BD%E3%80%81%E5%AE%87%E5%AE%99%E3%80%81%E3%81%9D%E3%81%97%E3%81%A6%E4%B8%87%E7%89%A9%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E7%A9%B6%E6%A5%B5%E3%81%AE%E7%96%91%E5%95%8F%E3%81%AE%E7%AD%94%E3%81%88)というがあって、ここに42の記述がありました。

```text
このシリーズにおけるハツカネズミは、「すぐれた知性をもった汎次元生物がわれわれの三次元に突き出している部分」である。
ハツカネズミ達は「生命、宇宙、そして万物についての究極の疑問の答え」を知るために、全時代および全世界において2番目に凄いコンピュータ、ディープ・ソートを作った。
そのコンピュータが750万年かけて出した答えは「42」だった。

「四十二だと!」
ルーンクォールが叫んだ。
「七百五十万年かけて、それだけか?」
「何度も徹底的に検算しました」
コンピュータが応じた。
「まちがいなくそれが答えです。率直なところ、みなさんのほうで究極の疑問が何であるかわかっていなかったところに問題があるのです」
```

自分はこの小説は知らないですが、どうやら海外の開発者の間では42は「究極の答え」として認知されているっぽいです。

サンプルコードで「42」を見たらひとりで(￣ー￣)ﾆﾔﾘとしていればいいと思います。


# Spam Eggs Sausage Bacon

[Python - Documentation - 標準ライブラリ - 組み込み型 - 辞書ビューオブジェクト](https://docs.python.org/ja/3/library/stdtypes.html#dictionary-view-objects)

```Python
>>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}
>>> keys = dishes.keys()
>>> values = dishes.values()

>>> # iteration
>>> n = 0
>>> for val in values:
...     n += val
>>> print(n)
504

>>> # keys and values are iterated over in the same order (insertion order)
>>> list(keys)
['eggs', 'sausage', 'bacon', 'spam']
>>> list(values)
[2, 1, 1, 500]
```
`['eggs', 'sausage', 'bacon', 'spam']` はサイトや書籍のサンプルコードでよく見る変数、文字列です。

この元ネタはモンティ・パイソンのコント「spam」でその名のごとくspamが大量に出てきます。
たまに'eggs', 'sausage', 'bacon'が出てきます。
また、スパムメールの語源もここからきています。

[![SPAM](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288206/fa4aab88-a683-d78a-0771-0dd1ed9011e6.png)](https://www.nicovideo.jp/watch/sm19101)

# Dead Parrot
[Python - Documentation - tutorial - キーワード引数](https://docs.python.org/ja/3/library/stdtypes.html#dictionary-view-objects)

```Python
def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
    print("-- This parrot wouldn't", action, end=' ')
    print("if you put", voltage, "volts through it.")
    print("-- Lovely plumage, the", type)
    print("-- It's", state, "!")

#OK
parrot(1000)                                          # 1 positional argument
parrot(voltage=1000)                                  # 1 keyword argument
parrot(voltage=1000000, action='VOOOOOM')             # 2 keyword arguments
parrot(action='VOOOOOM', voltage=1000000)             # 2 keyword arguments
parrot('a million', 'bereft of life', 'jump')         # 3 positional arguments
parrot('a thousand', state='pushing up the daisies')  # 1 positional, 1 keyword

#NG
parrot()                     # required argument missing
parrot(voltage=5.0, 'dead')  # non-keyword argument after a keyword argument
parrot(110, voltage=220)     # duplicate value for the same argument
parrot(actor='John Cleese')  # unknown keyword argument
```

[![PARROT](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288206/9db9f17d-c1ab-d8b6-f9ea-6197e6ed379a.png)](https://www.nicovideo.jp/watch/sm669489)

ここでは関数のキーワード引数で良い例と悪い例を掲載していますが関数名がオウム(parrot)になってます。

これもモンティ・パイソンのコント「死んだオウム」が元ネタでオウムが死んでいるのにペットショップの店員が生きていると主張するシーンが出てきます。多分それっぽい。
わからん単語はあるのですが死んだオウムにvoltageで電気ショックを引数として与えています。黒魔術ですな。:ghost:


# marx brothers
公式docでは見かけないのですが、[入門 Python3](https://www.oreilly.co.jp/books/9784873117386/) のサンプルコードに出てきます。

```Python
>>> marx_tuple = ("Groucho","Choico","Harpo")
>>> marx_tuple
('Groucho', 'Choico', 'Harpo')
```

タプルの説明に出てくる`'Groucho', 'Choico', 'Harpo'`ですがマルクス兄弟(ふつーの方。A○のメーカにあった気が、、、)のメンバー名です。
デビューしたのはトーキー映画全盛期(1935-1960)でチャップリンよりー世代新しいです。特に'Groucho'はトークの技術があったのでアメリカで白黒テレビが普及した1950年代のテレビ番組に結構出てて生き残っていたそうです。'Choico'は即興のピアノ演奏が得意で、'Harpo'はその名のハープ演奏が得意だったそうです。

<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Marx_Brothers_1931.jpg/500px-Marx_Brothers_1931.jpg" width="50%" >

出演作の中で「吾輩はカモである」の映画がありますが英語原文は「duck soup」です。これも予想ですが、beautiful soupの"soup"はここから来てそうな気がします。

さらにドリフターズはこのマルクス兄弟をモチーフにしていて、グルーチョの風貌をマネたのが「ヒゲダンス」のコントと言われています。(この話については、多分ドキュメントが残ってそう。[8時だョ!全員集合の作り方―笑いを生み出すテレビ美術](https://www.amazon.co.jp/8%E6%99%82%E3%81%A0%E3%83%A7-%E5%85%A8%E5%93%A1%E9%9B%86%E5%90%88%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9%E2%80%95%E7%AC%91%E3%81%84%E3%82%92%E7%94%9F%E3%81%BF%E5%87%BA%E3%81%99%E3%83%86%E3%83%AC%E3%83%93%E7%BE%8E%E8%A1%93-%E5%B1%B1%E7%94%B0-%E6%BA%80%E9%83%8E/dp/4575292044)があるくらいです。わからないときは最終手段として赤坂の放送局へ凸しよう！)

# PostScript
元ネタが含んでいるソースコードはまだたくさんありそうで、今回紹介したのはごく一部で知っているものもあったかもしれません。

てか、日本でお笑いの番組を相当数あるのにIT業界ではネタにあまりされていないです。
*そ、それはエンジニアは意識が高いからだ*
と言えばそれまでなのですけどね。:expressionless:

また、空気で笑わすネタが大勢なためにコードに落とし込めないのも要因かもしれません。

てか、いまのお笑いの最高峰がエガちゃんみたいですからね。一週間で100万登録を記録したそうです。
[![ega-chan](http://img.youtube.com/vi/3ywOMKFa07s/0.jpg)](https://www.youtube.com/watch?v=3ywOMKFa07s)
でも、広告収入が得られてないっぽいです。

2000年くらいトルコで問題を起こした時と同じテンションなので、ある世界地域の世論がコンテンツ的に耐えられないものになっているっぽいので日本のお笑い芸人のネタをコード化しても世界に普及しなさそうと、思わず考えてしまいました。

また元ネタがありそうなコードがあったら、またどこかでまとめて紹介します。