スクリプト言語で重要な事はエロ画像集取で学んだ

Preview:

DESCRIPTION

YAPC Asia2013 1日目夜の大人のYAPC LT資料

Citation preview

スクリプト言語で重要な事は

エロ画像集取で学んだ

@shokai大人のYAPC2013

私•@shokai (しょうかい)

•趣味:料理、glitch、Ruby

•Perl書けないけど•LT応募したら通った…

Perl勉強した

Perl2.0の薄い本

簡潔でわかりやすい!

正規表現とか配列だけでもだいぶ色々できる

今日のお話

画像いっぱい集めたいという欲求で

いつのまにかRuby書けるようになってた話をします

ぜんぜんPerlでてこないけど

たぶんPerlでもだいたい同じ感じでプログラミング学習できると思うから許して

2008年ごろ

Yahoo Pipesで画像掲示板からRSS作りまくった

Web系やったことなかったけど欲望のまま100個以上Pipes作った

正規表現リファラDOMを学んだ

1年経過

Pixiv、Danbooru、Tumblrとの出会い

ログインしないと見れない大量のメタデータ

Danbooru•オープンソースな画像アップローダ• https://github.com/r888888888/danbooru•地球上に何個か設置されてる• Rails 3.2•アカウント作ったり、点数つけたり•よくできてる

人力セマンティックに感動

PixivもDanbooruもRSSリーダーで見るのに適して

いなかった↓

Rubyでなんとかしよう

画像収集はスクリプト言語に重要な事がだいたい入ってると思う

cookie、文字コード、DOM、配列やハッシュ、DBやファイルへの保存、

memcache、md5で重複防げる、tumblrに流す、非同期IO、crontab、エラー処理

HTTPヘッダを見る、exifで画像サイズ確認、

OpenCVで肌色画像だけ通すGearman worker

・・など

画像収集でよかったこと

どんどん動かなくなるから直さないとならない

↓強制リファクタリング

スクレイピングなので変化に弱い↓

ライブラリ整備せざるえない↓

非公開なRubygem作成

公開できるクオリティじゃなくても、ローカル用のRubygemにする

↓取り回しが良い

GemやCPANなどのフォーマットに従ってライブラリ作ってみると、理解

深まるのでは

最近の動向

肌色画像フィルタで誤爆してくる奴らどうにかしたい

あとグロ画像とかもなえるわ・・

人力でどうにかする

Amazon Mechanical Turkにエロ画像流すとBANされそう

仲間内で使えるクラウドソーシング的なものがほしい

% gem install babascriptコンピュータが得意な事はコンピュータが、

人間が得意な事は馬場くん  がやってくれる言語

https://github.com/masuilab/babascript

@takumibaba

% baba -e 'この画像エロい?("http://example.com/hoge.jpg")'

baba -e ’コード’

もしくはbaba ファイル名

結果

url_list.each do |url| if この画像エロい?(url) == "はい" ## 画像保存する else ## 画像捨てる endend

画像確認.bb

% baba 画像確認.bb

実行

ぱっと見、Rubyに見えるけどメタプログラミングにより

日本語で書いた部分を馬場君が実行してくれる

返り値も取れる

module BabaScript class Baba

def self.method_missing(name, *args) ## (略) AndroidにnameとargsをLindaで送信する end

endend

Rubyの関数名には日本語が使える→ method_missingで全部取れる

Lindaで実装してるから複数人で並列実行

もできる

人間を関数のように扱えるようになるスマホアプリ

+人間に命令を送る構文を追加したプログラム言語

→ 人間とプログラム言語の新しい関係

画像収集は総合芸術なので勉強の題材にいいと思いますおわり

Recommended