不労所得獲得装置開発その2～AVブログパーツサイト構築～（アダルト注意）

# はじめに
2022年9月に「[GitHubにほったらかし収入源botコードをあげたが反応がないのでQiitaにさらす（アダルト注意）](https://qiita.com/dugabot0/items/702ce68375d64fe472bf)」で、Twitter APIを使ってアダルト動画情報をツイートするbotについて投稿しました。

ありがたいことに今でも週に数件、[Github](https://github.com/dugabot0/duga_bot)からクローンしていただいております。

その後、イーロン・マスクがTwitter社を買収し、Twitter APIが有料になるということです。2023年5月10日現在、無料で従来通りAPIが使え、botは動き続けています。しかし、いずれ有料化が実行されると、無料で月1,500だけツイートするか、月$150を払ってその制限を取り払うかを選ばなければなりません。

また、シャドウバンは相変わらず不定期に発動されており、月5万円あった収益は月3万円をきるまでになってしまいました。なので円安の昨今、月$150は払っても元をとるので精一杯です。月1,500ツイートで細々とやっていくしかなさそうです。つまり、オワコン…。

そこで、イーロン・マスクの気まぐれに左右されずに**不労所得獲得装置**を作りたい、ならば一国一城の主になろうということで、この度「[AVブログパーツ](https://avaffi.link/)サイト」を立ち上げました。

https://avaffi.link/

# 開発したサイトの機能
以下、サイトの序文からの抜粋です。

> 本AVサイトでは、ブログ等でAV作品を紹介するためのブログパーツを作成できます。同一タイトルがFANZA、DUGA、ソクミルのうち複数サイトで販売されている場合は、それぞれのアフィリエイトリンクを表示します。
1\.「ユーザーサイト入力」からユーザーサイト名、各アフィリエイトIDを登録してください。登録できるユーザーサイト数は10個までです。登録情報はクッキーを使って保存しています。
2\.「検索フォーム」からキーワードを入力して検索してください。検索に使用するサイトはFANZA、DUGA、ソクミルから選ぶことができます。
3\. 「検索結果」が「検索フォーム」の下に表示されます。ここからブログパーツを作成したいタイトルを選び、「ブログパーツ作成」をクリックしてください。
4\. ブログパーツとそのHTMLコードが「検索結果」の下に表示されます。対象のサイト名（パーツのリンク内のアフィリエイトIDがそのサイトのものになります）、画像サイズ、表示したい項目をお好みに応じて設定し、「ブログパーツ変更」をクリックしてください。設定が反映されたブログパーツとHTMLコードが再度表示されます。
ユーザーサイト情報を登録しない場合でも検索することは可能です。その場合はFANZA、DUGA、ソクミル横断検索ツールとしてご利用になれます。同一タイトルについてFANZA、DUGA、ソクミルそれぞれの価格が表示されるので、価格比較をすることも可能です。

__要約すると、[ヨメレバ](https://yomereba.com/)のアダルト版みたいな感じです。__<sub>サイト名を「ヌケレバ」にしようか本気で悩みましたが、私には度胸もセンスもないのでベタに「AVブログパーツ」と名付けました。</sub>

ブログなどでAV作品を紹介するさいに便利なブログパーツを提供したいと思います。

また、単純にFANZA、DUGA、ソクミルに対応した横断検索ツールとしてもご使用いただけます。

## 特徴
* ブログパーツのサンプルとコードの両方が出力されます。
* FANZA、DUGA、ソクミルの3つのアダルトサイトに対応。この3つはすべてアフィリエイトプログラムを提供していますので、ユーザーが収益をあげることができます。
* 同一タイトルが複数アダルトサイトで販売されている場合は、それぞれのアダルトサイトのリンクを出力します。それぞれの値段も出力できるので、価格比較も可能です。
* ジャンル、評価、概要、サムネイル、サンプル動画などそれぞれ表示・非表示を切り替えることができます。
* CSSを変更することで見た目をカスタマイズできます。
* アダルトサイトへのリンクにはユーザーが登録したアフィリエイトIDを使います。
* ユーザーがアフィリエイトIDをしない場合は、FANZA、DUGA、ソクミルに対応した横断検索ツールとして使っていただけます。<sub>同じキーワードで検索するとDUGAの変態ぶりに驚かされます…</sub>

## スクリーンショット
![sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850355/3661bc4e-d4b4-6574-54bf-62577b50724d.png)
![sample2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850355/f2ff05b3-0626-7829-3181-324b2dab42cb.png)

# 要素技術
スペック的にはこんな感じです。
- Rails 7.0.4
- Ruby 3.1.2
- Bootstrap
- Ubuntu 20.04
- Nginx + Unicorn
- API : [FANZA](https://affiliate.dmm.com/api/), [DUGA](https://click.duga.jp/aff/40413-01), [ソクミル](https://sokmil-ad.com/?affi=20131-001)

* [Ruby on Railsチュートリアル](https://railstutorial.jp/)を一通りやりました。Rubyは以前から自分用のスクリプトや[こちら](https://qiita.com/dugabot0/items/702ce68375d64fe472bf)で紹介したbotなどで使用していましたが、Railsをさわったのは今回が初めてです。AVブログパーツ程度の機能ならRailsのような高機能なフレームワークは要らなかったかもしれませんが、単純に慣れたRubyを使いたかったんです。
* ホスティングサービスは[GMOのクラウドVPS](https://vps.gmocloud.com/)を選びました。V1、メモリ1GB、2vCPU、SSD 50GBで月額1,065円（プラスでサーチャージがかかるらしいです）からになります。OSはこちらもただ慣れているという理由でUbuntu 20.04を選びました。このスペックでどの程度のアクセス数をさばけるのかさっぱり分かりません。今後が楽しみです。
* サーバーをウェブサイト用に構築するなどやったこともありませんが、Nginx、Unicorn、Railsを組み合わせるにあたって、[こちら](https://www.aise.ics.saitama-u.ac.jp/~gotoh/RoRWithNginxOnUbuntu2004.html)などを参考にさせていただきました。**埼玉大学の後藤先生、ありがとうございました。**
* サーバーのセキュリティ対策としてはさくらインターネットの[こちら](https://manual.sakura.ad.jp/vps/support/security/firstsecurity.html)を参考にさせていただきました。さくらインターネットのサイトはアダルトサイトを禁止しているので今回は使うことができませんでした。ノウハウだけいただいたみたいで申し訳ありません…。

余談ですが、AWSを使わなかったのはアダルトサイトが禁止されるかもという気がしたからです。どうもアメリカには過度なポリコレ文化が蔓延しているようで、現にDMM・FANZAではVisa、Mastercardは使えなくなってしまいました。そのため、日本の会社でアダルトOKをうたっているGMOを選びました。

# 今後の課題
* 検索、ブログパーツ作成時に3つのアダルトサイトのAPIを呼んでいるので、通信状況などによってはレスポンスが悪くなってしまいます。自前でデータベースを持ったり、描画の裏で先読みをするなどするといいかもしれません。どちらにしても今の私には難しいです…。
* 「ブログパーツ変更」で発売日、メーカー、サムネイル、サンプル動画などの表示・非表示を変更することができるのですが、現状バックエンド側で対処しています。JavaScriptを使ってフロントエンドで処理すれば、より速くなるはずです。RailsとJavaScriptを合わせて動かすにはもう少し勉強する必要があります。
* FANZA、DUGA、ソクミルの3つに対応しているのは、単純にこの3つがAPIをサポートしており、作りやすかったからです。MGS動画など、APIをサポートしていないサイトの対応もやってみたい気はしています。しかし、大量のスクレイピングをしてデータベースを持たないといけないので、こちらも敷居が高い感じがしています。
* ユーザーのアフィリエイトIDが登録されていない場合には私のアフィリエイトIDが使われ、若干のマネタイズが期待できます。そこで、広告を貼ればさらにマネタイズできるかもしれません。現状、Railsチュートリアルのデザインそのままで、味も素っ気もないサイトになっています。私にはデザインのセンス、スキル、やる気がまったくないので、通常ならうざい広告も少しはアクセントになるのではないかという期待もちょっとあります。検討中です。

# 最後に
ご要望、バグレポートなどございましたら、コメントいただければ幸いです。できる範囲で精一杯やりたいと思います。