不労所得獲得装置開発その4～楽天スッキリ検索"Rtrak"～

# はじめに
2023年8月に「[不労所得獲得装置開発その3～AVアラート～（アダルト注意）](https://qiita.com/dugabot0/items/d7da6bf9dff16414811f)」で、RailsによるAVアラート開発について投稿しました。

https://av-alert.info/

当時から若干の更新があり、現在では以下の機能が実装されています。
- お気に入りのAV女優、シリーズ名、ジャンルなどをキーワードとして登録
- キーワードに該当するタイトルが新発売されるとその日にアラートメールが送信される
- キーワードに該当するタイトルがセール対象になるとアラートメールが送信される
- 全ユーザに週一でその週のベスト10タイトルがメール配信される

おかげさまでアフィリエイト収益でサーバー代くらいはなんとか稼げており、自分用にも重宝しているので持続可能なサービスになっております。現在ではメンテナンスにもほとんど時間をとられることはありません。

そこでまとまった時間がある程度できたので、今回は一転して真面目な（？）サイトを開発しました。そのサイト開発についてシェアしたいと思います。

名前はRtrak、コンセプトは「楽天スッキリ検索」です。

https://www.rtrak.jp

楽天市場の検索しにくさ、サイトの見にくさから楽天市場を敬遠している人が多いかと思います。特にエンジニアのみなさまは「シンプルイズベスト」ですよね？私もそのひとりでした。しかし、ライバルのAmazonはニセモノが横行するなど治安が悪化しています。楽天市場にはふるさと納税や日本の誇る食品、スイーツなどAmazonにはない魅力的なものが売られています。そこで楽天市場を使ってもいいかなと思えるような検索サイトを目指しました。

# 特徴

- 楽天市場全ジャンル（約15,000もあります！）のランキングを30位まで毎日更新
- これまでランキング入りした商品の価格とランキングの推移をグラフ表示
- ジャンル、価格帯、ポイント高還元率、送料込みなどの詳細な絞り込み検索機能
- 楽天市場の「<font color="red">検索しにくさ</font>」「<font color="red">ごちゃごちゃ感</font>」を排したシンプルなデザイン

価格とランキングの推移はAmazonのKeepaのようなものです。値下げ、値上げ、人気の上がり下がりが可視化されています。昨今の値上げトレンドの影響がどの程度のものなのかなども可視化されます。また、セール期間中に値上げして「xx%引き」などとうたい、実質的には値下げをしない悪徳業者もあぶり出せるかもしれません。

マネタイズは楽天アフィリエイトになります。

検索機能は楽天APIが提供するものをほぼ流用している感じです。

シンプルなデザインといえば聞こえはいいですが、私には凝ったデザインを実装する絵心やセンスがないだけです…。

# スクリーンショット

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850355/cca5e24c-36d6-e8cc-52f9-b295aba01025.png)
↑ 商品検索フィールド。キーワード、ジャンルだけでなくポイント高還元率、送料込などの条件も設定でき、「<font color="red">**お得**</font>」を追求することができます。楽天ユーザはポイント還元率を気にすると思うのですが、いかがでしょうか？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850355/48a19544-0453-e057-47a6-2b9f91bc8e4c.png)
↑ 検索結果の1件目。商品リンク、ショップ名、レビュー件数、点数、商品説明文が表示されます。<font color="red">ポイントアップ中</font>の商品については赤で強調されて表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850355/dc6f5752-dc5c-b05b-05bf-f654fdcb3897.png)
↑ 「総合」ジャンルの2位（2024年10月27日）の商品です。各ジャンルのランキングは毎日更新されます。ランキング入りした商品については価格とランキング推移が保存され、グラフで表示されます。値段（赤線）、ランキング（点線）の上下がわかります。

この商品は期間限定50%OFFをうたっていますが、事前につり上げた価格を下げただけの似非セールではないことも確認できます。ショップオブザイヤー受賞店舗なだけあり、そのようなインチキはしないのでしょう。

さば、美味しそうですね:fish:

# 要素技術

使っている要素技術はこんな感じです。
- Rails 7.04
- Ruby 3.1.2
- Heroku
    -月最大$7のBasic Dyno
    -月最大$9で10GBのHeroku Postgres（価格とランキング推移を保存するのでデータ量は大きいです）
    -月最大$3で25MBのHeroku Key-Value Store（Heroku Redisとも言う？）
- 楽天API

前回まではアダルト対象だったので、ポリコレ的なトラブルを防ぐために米国製Herokuではなく、日本製GMOのVPS（アダルト可）を使っていました。今回はその心配もなく、以前に使ったことのあるHerokuを使うことができます。Herokuの方がデプロイや設定など簡単です。VPSだと全部の設定を自分でやらないといけません。

Redisは楽天APIへのアクセスを減らしたり、各アイテムの価格とランキングデータを取得するための時間を減らすために導入しました。キャッシュが当たれば表示はかなり速いです。1秒もかかりません。ただし楽天APIの情報も各アイテムの価格、ランキングは毎日更新されるので、キャッシュの寿命は最大で24時間です。

ドメインはお名前.comで取得しました。設定サイトがもっさりしているので、他でドメインを取ればよかったと後悔しています。

# 開発のプロセス

私は[Ruby on Railsチュートリアル](https://railstutorial.jp/)を一通りやっただけの素人です。Railsの業務経験はゼロです。[前回](https://qiita.com/dugabot0/items/d7da6bf9dff16414811f)までRailsアプリを数個作っていますが、特に知識などの上積みはありません。しかし、そのころと今で決定的に異なるのはAIの普及です。今回は開発初期にはChatGPTを使い、途中からGitHub Copilotに課金して開発をかなり助けてもらいました。

これまでは開発途中で分からないことがあると、適当なキーワードでググり、たどり着いたQiitaやStack Overflowなどの回答を参考にしていました。これがChatGPT、GitHub Copilotになると、モデルの定義の仕方、コントローラの処理の実装、JavaScriptの実装などの大きなところから、ちょっとしたコードのリファクタリングまで回答が瞬時に出てきます。もはやこちらはやりたいことを伝えているだけで、適切に質問できれば、適切な回答とコードが瞬時に吐き出されます。

開発がラクになったというだけでなく、難しいくてググり方が分からなかったようなことも、AIと会話すればなんとなく答えにたどり着くのです。本当にこの1年のAIの進化には驚愕します。

自分には能力、知識はないのに、AIがあれば何でも作れるのではないかという謎の全能感まで感じるほどです。

## AIに教わったこと、やってもらったこと

AIに教えてもらったことは数えきれませんが、数例をあげます。
- ItemモデルとGenreモデルが多対多でつながる時の、モデルの定義のやり方
- 検索フォームのビューの書き方とコントローラとの接続のやり方
- 価格とランキングをグラフにして表示するやりかた。Google Chartのことを教えてくれたのもAIでした。私はGoogle Chartのことはまったく知りませんでした
- サイトにジャンルを選択する箇所があり、親ジャンルをクリックすると子ジャンルが展開されます。それを実現するJavaScript。私はJavaScriptに関してはまったくの素人ですが、AIが吐き出したコードを繋げていたらできてしまいました
- Herokuへのデプロイのやり方
- [Aboutページ](https://www.rtrak.jp/about)の文章
- 細かいコードのリファクタリング、コードが読みやすくなりました

# 今後の予定、課題

ランキングしたことのある商品は価格、ランキングを毎日APIで取得してます。データ量がどんどん大きくなるので、処理時間の増大が懸念されます。その時はまたAIに対処法を教えてもらおうと思います。

本サイトはそこそこ使えると勝手に思っているのですが、使えるかどうかは他人が決めることです。そのためには周知して使ってもらわないといけません。ここでこの記事を書いたのもそうなのですが、今回はGoogle広告を出してみました。前回まではアダルト対象だったので、広告など打てませんでした。まずは少額をつっこんでみて、どうなるか様子をみます。

XなどのSNSを活用することも考えています。[こちらの記事](https://qiita.com/dugabot0/items/702ce68375d64fe472bf)で、APIでXにツイートすることをやりました。同じように新規にランキング入りした商品をツイートしたりして、本サイトを周知できないかと考えています。課金しないといけないかもしれませんが、広告のようなものだと思えば安いものかもしれません。なお、マニュアルでSNSを運用し、フォロワーを増やして親交を深めるなどは考えていません。大テーマは「不労所得獲得装置開発」なのです。Xに張り付くなど本末転倒です。

なお本サイトにGoogle AdSenseなどの広告を貼り付けて収益を上げることもできるかもしれません。しかし、「すっきり」を掲げている以上、広告を貼り付けてごちゃごちゃさせてはこちらも本末転倒な気がします。マネタイズは楽天アフィリエイトで充分という状態が理想です。

# 最後に

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