まだ彼女作りで消耗してるの？/v2

### カノジョできないエンジニア Advent Calendar 2017　【初夜】
https://adventar.org/calendars/2467

今年もやってきました!!
彼女できないエンジニアの諸君!!

エンジニアの仕事とは何か!!
今一度問いたい。
君たちの仕事はなんなのかと!!

- プログラムを書くこと？
- 仕様の通りにシステムを作る事？

ばかやろう！お客さんや社会、世の中の課題を解決することじゃねぇか！！

「彼女できない」という課題を解決せずして何を解決できるというんだ！！！

行くぞまずは分析からだ！！

##　男と女の好み分析

以下は僕のbigdataをグラフ化したもの

### 男はどんな女性が好きなのか

<img width="569" alt="スクリーンショット 2017-12-01 21.07.48.png" src="https://qiita-image-store.s3.amazonaws.com/0/74698/69f72510-dae5-f416-6640-85655c877bb8.png">

そう！！男なんて顔が可愛けりゃ正直誰でもいいと思ってるだろ！！
(俺はそうは思わない)

グラフにも現れてるけど、ブスを好んで好きになる人なんていない！！
(俺はそうは思わないけどね)

性格とか、フィーリングとかから徐々に好きになることはあっても、ファーストイメージが占める割合が高い！
(そんな単純じゃないと思う俺は)

### 一方女子はどうだろうか

<img width="635" alt="スクリーンショット 2017-12-01 21.12.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/74698/12e93d7c-7847-03cf-9797-4f2b8918f578.png">

お分り頂けただろうか。
男はかわいい女の子が好きというシンプルなものだったが(僕は例外)、
女子の好みは細分化されている！！！！

決してイケメンがモテるワケではない！！！！

つまり、自分がどのタイプに属するか理解すること。
これがお前の武器になるんだ！！！

## ではどうするか

自分の顔がこれらのどの部類に入るか分析しよう。

まず膨大な教師データを集めて。。

<img width="813" alt="スクリーンショット 2017-12-01 21.20.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/74698/9c9f1ce4-abc0-a143-092e-065a1deee4dc.png">

特徴点をちゅうsh。。。。

## クリスマスまで時間がないのでRekognitionを使おう

S3バケットに自分の画像つっこんで、Lambdaでこんな感じに買いて

```
print('Loading function')

import boto3

def lambda_handler(event, context):
    reko_client = boto3.client('rekognition','us-east-1')
    r = reko_client.detect_faces(
        Image={
            'S3Object': {
                'Bucket': 'onda-test-1234',
                'Name': '俺の顔.jpg'
            }
        },
        Attributes=['ALL']
        )
    print(r)
```

実行すればでデータが取れる！

```
{
    "FaceDetails": [{
        "BoundingBox": {
            "Width": 0.10499999672174454,
            "Height": 0.18666666746139526,
            "Left": 0.4312500059604645,
            "Top": 0.057777777314186096
        },
        "AgeRange": {
            "Low": 23,
            "High": 38
        },
        "Smile": {
            "Value": True,
            "Confidence": 57.108856201171875
        },
        "Eyeglasses": {
            "Value": False,
            "Confidence": 99.96912384033203
        },
        "Sunglasses": {
            "Value": False,
            "Confidence": 99.87023162841797
        },
        "Gender": {
            "Value": "Female",
            "Confidence": 100.0
        },
        "Beard": {
            "Value": False,
            "Confidence": 99.96233367919922
        },
        "Mustache": {
            "Value": False,
            "Confidence": 99.77082824707031
        },
        "EyesOpen": {
            "Value": True,
            "Confidence": 99.99246215820312
        },
        "MouthOpen": {
            "Value": False,
            "Confidence": 99.9146728515625
        },
        "Emotions": [{
            "Type": "CALM",
            "Confidence": 82.83368682861328
        }, {
            "Type": "HAPPY",
            "Confidence": 15.994048118591309
        }, {
            "Type": "SAD",
            "Confidence": 3.979891538619995
        }],
        "Landmarks": [{
            "Type": "eyeLeft",
            "X": 0.4645110070705414,
            "Y": 0.1398819535970688
        }, {
            "Type": "eyeRight",
            "X": 0.5005732178688049,
            "Y": 0.13559408485889435
        }, {
            "Type": "nose",
            "X": 0.48266592621803284,
            "Y": 0.17239990830421448
        }, {
            "Type": "mouthLeft",
            "X": 0.47122448682785034,
            "Y": 0.20362448692321777
        }, {
            "Type": "mouthRight",
            "X": 0.4979352056980133,
            "Y": 0.1986924409866333
        }, {
            "Type": "leftPupil",
            "X": 0.46497994661331177,
            "Y": 0.13870377838611603
        }, {
            "Type": "rightPupil",
            "X": 0.5003837943077087,
            "Y": 0.13453131914138794
        }, {
            "Type": "leftEyeBrowLeft",
            "X": 0.45106732845306396,
            "Y": 0.12510329484939575
        }, {
            "Type": "leftEyeBrowUp",
            "X": 0.46162354946136475,
            "Y": 0.1195397600531578
        }, {
            "Type": "leftEyeBrowRight",
            "X": 0.4728100895881653,
            "Y": 0.12344556301832199
        }, {
            "Type": "rightEyeBrowLeft",
            "X": 0.4925210475921631,
            "Y": 0.1216742992401123
        }, {
            "Type": "rightEyeBrowUp",
            "X": 0.5035019516944885,
            "Y": 0.11563356220722198
        }, {
            "Type": "rightEyeBrowRight",
            "X": 0.5140520334243774,
            "Y": 0.11972268670797348
        }, {
            "Type": "leftEyeLeft",
            "X": 0.4573439657688141,
            "Y": 0.1410721391439438
        }, {
            "Type": "leftEyeRight",
            "X": 0.4719408452510834,
            "Y": 0.14020104706287384
        }, {
            "Type": "leftEyeUp",
            "X": 0.46427008509635925,
            "Y": 0.1344168335199356
        }, {
            "Type": "leftEyeDown",
            "X": 0.46462056040763855,
            "Y": 0.14459241926670074
        }, {
            "Type": "rightEyeLeft",
            "X": 0.4931148886680603,
            "Y": 0.13775958120822906
        }, {
            "Type": "rightEyeRight",
            "X": 0.5079139471054077,
            "Y": 0.1350509226322174
        }, {
            "Type": "rightEyeUp",
            "X": 0.5002275705337524,
            "Y": 0.1299990564584732
        }, {
            "Type": "rightEyeDown",
            "X": 0.5009776949882507,
            "Y": 0.140377938747406
        }, {
            "Type": "noseLeft",
            "X": 0.47677117586135864,
            "Y": 0.1822502166032791
        }, {
            "Type": "noseRight",
            "X": 0.48997604846954346,
            "Y": 0.17978978157043457
        }, {
            "Type": "mouthUp",
            "X": 0.4844018518924713,
            "Y": 0.19528257846832275
        }, {
            "Type": "mouthDown",
            "X": 0.48532187938690186,
            "Y": 0.21053189039230347
        }],
        "Pose": {
            "Roll": -4.027588367462158,
            "Yaw": -3.790987253189087,
            "Pitch": -4.375948905944824
        },
        "Quality": {
            "Brightness": 37.62503433227539,
            "Sharpness": 99.9980239868164
        },
        "Confidence": 99.99703979492188
    }],
    "OrientationCorrection": "ROTATE_0",
    "ResponseMetadata": {
        "RequestId": "7272b9b3-d692-11e7-a999-51ef28f1d5b1",
        "HTTPStatusCode": 200,
        "HTTPHeaders": {
            "content-type": "application/x-amz-json-1.1",
            "date": "Fri, 01 Dec 2017 12:23:34 GMT",
            "x-amzn-requestid": "7272b9b3-d692-11e7-a999-51ef28f1d5b1",
            "content-length": "2766",
            "connection": "keep-alive"
        },
        "RetryAttempts": 0
    }
}
```

注）なぜか`Female`の値が`100`になってるけど、これは僕が`エマワトソン`が好きすぎて、`俺の顔.jpg`といつわってエマワトソンの画像を使ったからである。

## こんな感じで簡単にデータが取れる！！

幸せとか悲しいとか穏やかとかそんな感じだけどなんとかなる！！
気になる女の子のタイプの顔を分析し、自分と比較しよう！！
もし、数値が近ければワンチャンあるぞ！！

女の子の好きなタイプとか調査する術もない場合はもうね。
直接聞こう！！


```math
\def\textlarge#1{%
  {\rm\Large #1}
}
\def\textsmall#1{%
  {\rm\scriptsize #1}
}
​​​​​​​​
\textlarge{どんなタイプの人が好きですか？}
\textlarge{JSONで教えて??}