Introduce
この記事の読了時間:約8分24秒
唐突ですが皆さん、お米は好きですか?
コシヒカリという偉大な恒星を筆頭に、ななつぼし、つや姫、あきたこまち、ミルキークイーンなどなど、最近ではかなりのブランド米が発明~生産されています。
んで、つい先日。たまたま近所のスーパーで「ななつぼし」を買って炊いて食べたんですが、いつものお米との違いに驚愕したんです。
お米=コシヒカリ、お米とはこうだ!という固定観念が崩れ、こんなにも味や食感に違いがあるのかと、湧いてくる好奇心。
自称「米をおかずに米を食う」というワタクシは、そうして「美味しいお米」を探す旅に出たのでした。。。
旅から戻り、それぞれのブランド米の特徴を書き連ね、販売されてるお米にはアフィリエイトバナーを貼って、完成したウェブサービスこそ「オコメノハナシ」!
、、、アフィサイトかよ!!
というワケでw 今回は新作ウェブサービス「オコメノハナシ」のカンタンな機能説明と、制作に関するよもやま話なんかをご紹介♪
そーいや作ったコトの無かった、アフィリエイト中心のサービス。
とはいえただバナーを貼っつけまくっただけじゃ無く、マジで調べまくった「ブランド米のそれぞれの特徴」をテキスト化+味覚チャート化して、楽天で売ってるヤツだけにはオマケでアフィバナーを貼った、そんな感じです。
いくつかお米を食べ比べたりしたことがある方は分かるかもですが、とにかくお米って、それぞれのブランドで味や食感に違いがあるんです。
いつも何も考えず惰性でコシヒカリ買ってた自分としては、それが結構びっくりで。
とはいえ調べてみると、分かりやすく一覧化されたブランド米の辞典的なサイトが無くて、あってもほんの少しのブランド米しか掲載されていなかったり。
なので、調べついでにテキストにまとめつつ、未経験のアフィサイトとしてリリースしてみようと思い立った訳です。
サイトを見て頂けると分かるかと思いますが、モノ自体は非常にシンプルで、特徴概要とブランド名、特徴詳細と味覚チャート、アフィバナーが貼ってたり無かったり、それがダダーっと1ページに羅列されてます。
今んとこDB使ってないし、基本はテキスト主体なのでそんな重くもないし、一気に見れたほうが良いかと思ってページング機能は未導入。
ひたすらスクロールして読みまくって、気になるお米があったらバナー踏んで買ってくれるといいよ!
前述のとおりデータベースは使ってないんですが、代わりに下記のようにテキストファイルで各ブランド米の情報(名称・特徴概要・特徴詳細・味覚チャート用の値)を保持しています。
上記をfile_get_contentsで読み込み→implode関数を使って★ごとに配列に分割→foreachで回して記事表示、という流れです。
アフィバナーについては、楽天の一択なんですが、ここで困ったコトが。。。
最初はフツーに上記foreach内でrakutenSDK使って、ひとつずつ「楽天で販売してるか→してればバナー画像とアフィURLを取得して表示」としたかったんですが、これだと楽天側の「1秒に1リクエスト」というAPI利用上限を超えちゃう。
とはいえ50個以上もあるブランド米の、ひとつひとつを調べるのは面倒すぎる。
なので考えた結果、一旦別のPHPで「1秒に1回、全ブランド米の販売有無を調べて、有ればバナー画像とアフィURLを取得して別テキストに保存」として、生成した別テキストを記事用foreach内で使えるようにしました。
set_time_limit(300);//数が多くてPHP側のタイムアウトにひっかかるので、タイムアウト上限を大きく設定 require_once(__DIR__.'/../sdk/autoload.php'); $client = new RakutenRws_Client(); // アプリID (デベロッパーID) $client->setApplicationId('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); // アフィリエイトID $client->setAffiliateId('xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx'); $okome_txt = file_get_contents(__DIR__.'/../okome.txt');//記事用テキストファイル読み込み $data_base_array = explode('★', $okome_txt);//★で配列化 $title_array = array(); foreach ($data_base_array as $k => $v) { $data_the_array = explode("\n", trim($v));//記事用配列を更に配列化 $title_array[$k]['title'] = trim($data_the_array[0]);//そこから記事タイトル(=銘柄名)を配列化 } $return = array(); foreach($title_array as $k => $v){ sleep(1);//処理を1秒待つ $response = $client->execute('IchibaItemSearch', array('keyword' => $v['title'], 'hits' => 4, 'genreId' => 110472, 'sort' => '-itemPrice')); if($response['hits'] > 0){ $return[$v['title']] = array(); foreach($response as $item){ $return[$v['title']]['url'][] = $item['affiliateUrl'];//各銘柄に紐づくアフィURL $return[$v['title']]['img'][] = $item['mediumImageUrls'][0]['imageUrl'];//同バナー画像URL } } } $put_data = serialize($return);//配列をテキスト化 file_put_contents(__DIR__.'/../affiliate.txt', $put_data, LOCK_EX);//ファイルに書き出し
こうすることでサービス側では、楽天APIの上限が影響することもなく、SDK呼び出しの処理を行う必要も無くなったので、非常に軽くなったと思います。
また、味覚チャートは「Google chart API」を使っています。
<img src=" https://chart.googleapis.com/chart? cht=r//チャートの形(r=レーダーチャート) &chs=180x160//生成する画像のサイズ(横x縦) &chxt=x,y//グラフの軸の設定 &chd=t:80,60,80,40,40,80//各チャートの値(1個目~2→3→4→5→1個目、最大を100として) &chm=B,58ab11aa,0,1.0,5.0//グラフに囲われた中の色 &chco=58ab11//グラフの線の色 &chxl=0:|%E9%A3%9F%E5%91%B3%7C%E5%A4%96%E8%A6%B3%7C%E9%A6%99%E3%82%8A%7C%E7%B2%98%E3%82%8A%7C%E7%A1%AC%E3%81%95%7C1:||1|2|3|4|5//各チャートの項目名 " alt="味覚チャート" />
これは前述の記事用テキストに記載してある「4,2,4,3,3」みたいな数字を抜き出して、5=100となるようにそれぞれ20倍した数を当てはめてます。
もしなかなか良い感じにアクセス増えたり注目されるようなら、今後はコレに「オススメ炊飯器」や「美味しいお米の研ぎ方炊き方」みたいなコーナーも作って、お米のポータルサイト的にできたら面白そうだなーと思ってます。
最終的にはEC付けて農家さんからの直販とか、もしくはお米屋さんにバイアウトなんかも夢ありますねー!
みんな、米食えよ!
関連する記事
同じカテゴリーの記事
コメントを投稿する