アフィリエイトの基礎知識
アフィリエイトとは | アフィリエイトの歴史 | アフィリエイトの始め方 | アフィリエイト比較 | アフィリエイトの税金 | アフィリエイト用語
総合アフィリエイト
A8.net | バリューコマース | リンクシェア | JANet | アクセストレード | TGアフィリエイト | バナーブリッジ | Cross-A
物販アフィリエイト
電脳卸| Amazonアソシエイト・プログラム | 楽天アフィリエイト
情報商材アフィリエイト
クリック保証アフィリエイト
携帯アフィリエイト
ポケットアフィリエイト | Smart-C | Moba8.net | アクセストレードモバイル | Cross-Aモバイル | モブリ
メールマガジンアフィリエイト
空メール登録システム
空メールでメールマガジンに登録できるシステムを作ろうと思い、色々と検索していますが、なかなかしっくりくる方法が見つかりません。簡単なようで意外に高度なテクニックのようです。
送られてきたメールを「.forward」ファイルなどでプログラムに送り、プログラムでメールのヘッダから送信元メールアドレスを取得する、という大体の流れは分かりましたが、受信するメールアドレスの設定など細かい部分がいまいちよく分かりません。サーバー環境に依存する部分なので、なかなかそのものズバリの答えが見つからない状況です。
メールアドレスを入力してもらって登録・解除をする仕組みならすぐにでも作れると思うのですが、携帯サイト向けのシステムとして作りたいので、そうなるとメールアドレスを入力するだけでもユーザーにとっては結構な負担になってきます。できるだけそういう障壁は取り除きたいところです。
無料メールマガジンスタンドを利用するという手もありますが、今後は自分のスキルを高めるためにもできるだけプログラムを自作していきたいと思っています。各種スタンドの集客力も捨てがたいところですが。
データ保存は並列的に
携帯サイトのCGIを大幅に書き換えています。当初は出力するXHTMLのヘッダを修正してCSSをインライン記述するくらいで終わる予定でしたが、Perlを読み込んでいくうちに色々と問題点が出てきたので、抜本的に書き換えることにしました。
一番の問題点は、保存するデータの量が増えるにしたがって処理するデータの量も増えてしまうような仕組みになっていたことです。データをひとつのファイルに次々と追加していく部分があったのですが、データの量が膨大になるとそれを呼び出すだけでも膨大なデータを処理しなければならなくなることに気付きました。
このままでは将来的にデータの処理時にとんでもない負荷がかかることになってしまうと思い、データをひとつのファイルに直列的に保存するのではなく、個別のファイルに並列的に保存することにしました。これならファイル名を指定すれば一発で呼び出しができるようになります。最初から気付けという感じではありますが。
以前も書きましたが、後先を考えずにプログラムを組むと大変なことになりますね。データ量が増えた時のことやアクセス数が増えた時のことなど、様々な場面を想定して対策を講じておく必要があるのだと再認識しました。
CGIでContent-lengthを取得
CGIでDoCoMo向けのページを出力する際には、HTTPヘッダに「Content-length」を記述することが必須とされています。というわけで、その「Content-length」を取得する方法を色々と調べた結果、以下のような記述で成功しました。
$file = <<END:
<html>
<body>
コンテンツ
</body>
</html>
END
binmode STDOUT;
print "Content-type: application/xhtml+xml; Charset=Shift_JIS\n";
print "Content-length: ", length($file), "\n\n";
print "$file";
要するに、いきなりprint関数でページを出力してしまうのではなく、その内容をいったん変数に格納し、その内容のバイト数をlength関数で調べてから、改めてprint関数で出力するというわけです。
ちなみにWindowsサーバーで改行コードが自動変換されてバイト数が変わってしまうのを防ぐためにbinmode関数を記述していますが、Linuxサーバーでは不要です。
あとは、変数に「モバイル向けAdSense」の実行結果をどう格納するかということでちょっと悩みましたが、「モバイル向けAdSense」を外部ファイルに保存してバッククォートで呼び出すという方法を紹介しているページがあったので、それに倣ってやってみました。
$file = "<html>\n";
$file .= "<body>\n";
$file .= `perl adsense.pl`;
$file .= "コンテンツ\n";
$file .= "</body>\n";
$file .= "</html>";
以下同じ
「モバイル向けAdSense」のコードを任意の名前で保存して(この場合は「adsense.pl」)、その実行結果を呼び出して変数に格納するわけです。ドットとイコールで変数の文末に代入できるというのがポイントですね。これを知るだけでも苦労しました。
Perlが分からない方にはちんぷんかんぷんでしょうが、今後CGIでDoCoMo向けのページを作成する機会があれば参考にしてください。
携帯サイトのヘッダ
docomoの「作ろうiモードコンテンツ」のページを見ていたら、CGIでページを出力する際には「Content-type」と「Content-length」の記述が必須だということが書かれていることに初めて気付きました。
これまでは「Content-type: text/html」と記述してきましたが、docomoの場合は「Content-type: application/xhtml+xml」と記述しなければならないそうで、書き直さなければなりません。
ただ、XHTMLに対応していない旧機種ではこの記述だとページそのものが表示できないそうなので、機種ごとに記述内容を変える必要もありそうです。
それから「Content-length」ですが、分かりやすく解説されたサイトがなかなか見つからなくて苦労しています。とりあえず出力する内容をヒアドキュメントに格納してファイルサイズを調べ、それをぶち込めばよさそうですが、色々と書き換えが必要になりそうで大変です。
あと、XHTML内の「DOCTYPE」もキャリアによって内容を変えた方がいいようです。そうなると全ページにSSIを記述して振り分けることになりますが、果たしてそこまでやる必要があるのかどうか……。つくづく携帯サイトの大変さを実感しています。
CGIをレンタルするか配布するか
せっかくPerlを勉強したので、CGIをコンテンツにしたサイトを作成しようと考えています。そのサイトの形態について、CGIをレンタルすべきか、スクリプトを配布すべきか悩んでいます。
CGIを設置できるユーザーよりも設置できないユーザーの方が多いでしょうから、より多くのユーザーを獲得するにはレンタルした方がよさそうに思えます。ただ、そうするとコンテンツを管理しなければならなくなり、サーバーの負荷も心配になってきます。
かといってスクリプトを配布するとなると、継続的に広告を配信することが難しくなりますし、著作権表記を削除されたり、無断で二次配布されたりといった問題が起きることも考えられます。
アフィリエイトで収益を得るにはレンタルサイトの方が効率がよさそうなので、そちらをやってみたい気持ちはあるのですが、例えば掲示板をレンタルしたとしても全ての書き込みを管理するのは現実的に難しいでしょうし、かといってあまり手間がかからないCGIをレンタルしても収益にはつながりにくいでしょうし……落としどころが難しいというのが正直なところです。