Tinder 自動化戦略 その1

いつもお世話になっております。せんまいらっちょv3です。

この度、出会い系アプリの代表格でもある、Tinderの自動化を試みましたので以下にて報告させていただきます。百聞は一見に如かずということで、まずは成果物をご覧ください。

f:id:senmai_456:20180404181640g:plain

ちゃんと右スワイプが自動化されていますね!

本記事では、こちらの自動スワイププログラムの開発方法を解説していきます。

pythonの基礎文法は習得したけど、何を作っていいかわからない変態紳士にはもってこいのチュートリアルになっております。また、プログラムが全くわからない人にもなるべく理解できるよう解説しております。

noteにも同様の解説記事があります。noteは有料の分おまけがついています。

Tinder自動化作戦 その1|whammy1106|note

ではさっそく解説内容に入っていきましょう!

まずはじめにTinderオンラインを準備します。

TinderオンラインはTinderのWebアプリ版で、お手持ちのPC上でTinderの各種機能が利用できるというものです。こちらのTinderオンラインで行うマウス操作(右スワイプ)を自動化していきます。

次に必要なpythonモジュールをインストールします。モジュール名はpyautoguiです。

pythonモジュールとは何でしょうか?

pythonモジュールとは、他人が既に作ってくれているpythonプログラムのことです。現代のプログラミングでは、一から全てを作るのではなく、こういったモジュールを組み合わせて問題解決を行っていくスタイルが一般的です。そして、あるモジュールは、別のあるモジュールのインストールを前提としているため、macではpyautoguiをインストールする前に、別のモジュールをインストールする必要があります。windowsでは必要ありません。

#macのみ必要な操作。pyautoguiを使うために必要なモジュールをインストール
sudo pip3 install pyobjc-framework-Quartz, pyobjc-core, pyobjc

#windowsでもmacでも必要な操作。pythonからマウス操作を自動化するためのプログラムをインストール
pip install pyautogui

インストールが完了したら、早速プログラムを書いていきます。まずコードの全体像をお見せした後に、詳細部分を解説していきます。

import pyautogui

max_width,max_height = pyautogui.size()
center_x,center_y = max_width/2, max_height/2

while True:
   pyautogui.PAUSE = 1.0
   pyautogui.FAILSAFE = True

   pyautogui.moveTo(center_x,center_y)
   pyautogui.dragTo(max_width,center_y,duration=0.25)

こちらが全体像です。短いですね!

では詳細を解説していきます。import ほにゃららでインストールしたpythonモジュールを読み込み、利用することができます。

import pyautogui 

次に画面の長さと幅、中心点を取得します。pyautoguiではsizeメソッドを利用することで、お手持ちのPCの長さと幅を取得できます。私のPCでは(1920,1080)が返却されますが、この数字は個々のPCによって異なります。そして、それを2で割ることで中心点を求めています。

max_width, max_height = pyautogui.size() #=> (1920,1080)
center_x, center_y = max_width/2 ,max_height/2

ここで一点注意したいのが、プログラム上におけるx,y座標の表現が以下のようになることです。左上が(0,0)という座標をとり、右下が(1919,1079)という座標をとります。

f:id:senmai_456:20180404182942j:plain

ここからが自動スワイププログラムのコアの部分です。While Trueでpyautogui.PAUSEからpyautogui.dragToが繰り返し行われるよう指示します。マウス操作を自動化すると、ユーザからの操作を一切受け付けなくなってしまうため、pyautogui.FAILSAFEでフェールセーフ機能をONにします。これにより、自動化プログラムの起動中でもマウスを左上(0,0)に持っていくとプログラムを停止することができます。

pyautogui.moveTo(center_x,center_y)で、マウスを画面中心に移動させ、pyautogui.dragTo(max_width,center_y,duration=0.25)で右端までドラッグすることでスワイプを表現しています。durationというパラメータはドラッグの速度を表しています。

while True:
   pyautogui.PAUSE = 1.0
   pyautogui.FAILSAFE = True

   pyautogui.moveTo(center_x,center_y)
   pyautogui.dragTo(max_width,center_y,duration=0.25)

あとはプログラムを"適当な名前".pyというように末尾にpyという拡張子をつけて保存し、Tinderオンライン画面を開いた状態で、ターミナルからpython "適当な名前".pyとしてプログラム起動させればOKです。

#利用方法
python ”適応な名前”.py

Tinder自動化ライフをお楽しみくださいませ。

しかしながら現状のプログラムでは問題があります。それは顔が写っていない女性も右スワイプをしてしまうことです。次回は簡単な顔検知を追加してTinder自動化の精度向上を行いたいと思います。

CouseraのHow Google dose Machine Learningがとてもよかった

以下、非常に有益だと感じたところ。

if ML is a rocket engine,data is fuel. Simple ML and More Data > Fancy ML and Small Data

これは実務者としては、非常に納得感があるところだが、門外漢の人にはあまり理解されない。 機械学習はとにもかくにもデータセットが命である。

Avoid these top 10 ML pitfalls 1. ML requires just as much software infrastructure 2. no data collected yet 3. Assume the data is ready for use 4. keep humans in the loop 5. Product launch focused on the ML algorithm 6. ML optimizing for the wrong thing 7 is your ML improving things in the real world 8. Using a pre-trained ML algorithm or building your own
9. ML algorithms are trained more than once 10. Trying to design your own perception or NLP algorithms

MLで陥りやすい罠を10個に集約してくれている。 自作のアルゴリズムはなるべく使わない。 MLを使うことによって、自ら(所属する組織)のビジネスをきちんと改善しているのか、きちんと確認し続けようということ。

path to ML 1-Individual contributor 2-Delegation 3-Digitization 4-Big Data and Analytics 5-Analytics Machine Learning

MLを利用するシーンは実は後半にくる。そもそも人力でも、従来のルールベースでも何でもいいが、 きちんとビジネスに対して有効な施策でなければ、MLを無理に適用しようと思ってもあまりうまくいかないということだった。

所感

MLのアルゴリズム自体はコモディティ化してきて、MLのデプロイや運用が重要になってきたということだと思う。

【kaggle】メルカリコンペ keras

メルカリコンペのkernelを写経した。

【kaggle】titanicに提出するまでの最小構成

他のチュートリアルだと、特徴量作成やクロスバリデーションまで解説していたので、

初心者にはsubmitまでハードルが高いように感じた。以下のコードを見れば、提出まで何をすればいいか、最短の手順がわかると思う。

無能な奴は大企業の営業職と技術職にいっとけ

前回の記事で無能なやつは、とにかく大企業にいっておけとアドバイスしました。

しかしながら大企業に大きなリスクがあります。

それは。。。

 

転生市場において、人材価値がなくなってしまう可能性が非常に高く、会社と一蓮托生になってしまう。

 

 

ということです。

 

こんなご時世ですから、現在鬼のように儲かっている会社でも数年後はどうなっているかわかりません。でもそれは真のリスクではありません。もし自分が転職市場で市場価値があるならば、倒産したって再就職先はすぐに見つかるからです。

 

学生のみなさんはとにかく企画がやりたい!俺は世界を変えるのようなサービスを作りたいですと熱くかたってくれますが、はっきりいっておきます。

大企業だとできません。君はジョブズでもありません。

新卒の君には意思決定権もなければ、使えるリソース(部下、予算)もありません。君の仕事は意思決定権がある偉い人がウケそうな、流行りのバズワードもりもりの資料をいい感じに作り上げ、各部署の利害関係を把握し、適切な落とし所をみつけることです。

 

こういうことをかれこれ3年くらい本気でやっていると、偉い人が好みそうな資料を完璧に作るスキルや、偉くはないけど側近のキーパーソンをを見抜いてその人に根回しするようなスキルが身につきます。これはこれで生きていくために必要なスキルですがあくまで社内でしか通用しないスキルなのです。

そうこうしているうちに年をとり、最初は会社を変えてやる!なんだこの会社は!と意気込んでいた人も、まあウチは給料もそこそこだし意外に悪くないよねと言い出します。外に出る力がないので、今の状況をなんとか納得させるようになります。そして、それを脅かそうとする人間に攻撃的になったりします。奴隷が鎖を自慢し合う行為と似ていますね。

 

こうならないために

大企業で営業か技術職(自分で手を動かして場合に限る)を志望しましょう。

 

営業=ソルジャーというイメージが付いているせいか、あまりやりたがる学生さんはいませんが、大企業の営業はぶっちゃけ楽です。対人間の仕事のなので、当然ストレスがないわけではないですが、得体の知れない小さな会社で営業をやるよりははるかに楽なはずです。営業をやりながら色々なところに大企業の看板をひっさげてコネを作っておきましょう。あなたは凡人でも、会社が凄ければあなたもできる人だと勘違いしてくれます。これを使わない手はありません。

 

技術職は言わずもがなですが、やはり手に職があれば、どんな状況になったって、最悪食いつないでいくことは可能です。ただし、大企業の技術職で注意したいのは、技術職とは名ばかりの下請け丸投げ部隊の可能性があります。そこでは市場価値を何もありませから、自分で実装しているかちゃんと聞きましょう。技術職は自分が手を動かせて付加価値を生み出してナンボの世界です。実装ができる環境であれば、君に才能がなくてもなんとか仕事を手にいれるくらいは成長します。当然、もし君に才能があって、優秀なエンジニアになれば高待遇が待っています。がんばりましょう。

 

というわけで大企業で甘い汁を吸いつつも、万が一のリスクヘッジに備えるために営業か技術職をお勧めします。当然あなたが超絶有能で、世の中にかつてない企画を打ち出し、かつ、それを実行するだけの能力と情熱があるなら企画職を目指してもいいでしょう。でももう社会人になるのだから、いつまでも夢見たって仕方がありません。自分が凡人であることを認めた上で人生設計しましょう。それを見誤れば谷底に落ちますよ。人生は一回しかないくせに割と難易度高めです。気をつけてください。

 

こんな偉そうに言ってるおっさんが、最初どこに所属したいと言ったか気になりますよね?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

めっちゃ企画職志望しました。

 

 

 

 

寝ます。

 

 

 

 

 

才能も実績もない人は大企業にいこう

立場上、就活生の相談をよく受けます。

そこで20000万回くらい聞く質問が、

ベンチャーと大企業どっちにいけばいいですか?」 

というものです。

 

こんな質問をする学生さんには、賭博黙示録カイジの利根川先生の爪の垢を煎じて飲んで欲しいところですが、お答えしましょう。 

 

 

実績、実力ともにある人        →ベンチャー

ウェーイしかしてきてない人 →大企業

 

です。

 

 

以下想定質問集

 

Q.ベンチャーの方が成長できるよね?

A.ベンチャーで成長できるのはベンチャーで生き残れる人だけ。ベンチャーは大手と違って金がない、その分新卒を育てるだけの余裕がない。これは個人の成長という観点では、メリットでもありデメリットでもある。

十分実力がある人や、現時点では実力不足でも激務耐性があるメンタルモンスターであれば、ベンチャーでの長時間勤務と引き換えに、莫大な経験値を手にいれることができるだろう。でも、実力がない、それに耐えうるだけの気合がない人間は心身共にボロボロになってしまう。死んでしまったら経験値もくそもない。ベンチャーは自分の実力を試す場所であり、育ててもらう場所ではないということを認識しよう。

 

 

Q.新卒からベンチャー入社した人で、活躍している人いっぱいいるよ?
A.インターネッツ上の広告で見たのかな?君のお友達という狭い世界での話かな?典型的な生存者バイアス。死人にくちなし。進撃の巨人で例えると、調査兵団の中から、ごく稀にリヴァイ兵長みたいな強者が出てくるけど、大半の凡人が巨人(経営者)に食われて死んでますよね?あれです。

 

 

Q.ホワイトなベンチャーもあるし、ブラックな大企業もあるでしょ?

もちろん例外はある。そうは言っても大企業の方が労働組合が強いことが多いし、レピュテーションリスクも高いので、一般的に法律遵守度は高いし、ワークバランスも優れていることが多い。インターンベンチャーの勤務実態を既に確認済みならばベンチャーもありだが、雇用関係になった途端、勤務環境が悪化というのはよくある話(学生はお客さんなので無下にすることはない)。

 

 

Q.大企業もこの先どうなるかわからないし、実力がつくベンチャーの方が安全じゃ。。?

A.死んだら元も子もないというのが筆者の考えだが、この考えは至極当然である。

なので、次回は(気が向いたら)大企業にいながら市場価値を損なわない方法を書いていきたい。

 

 

というわけで才能も実績もない人は大企業にいきましょう。

組合ィー俺の雇用を守ってくれーッ!!!!!

 

 

寝ます