zowのアフィな日々 - 2ndシーズン -

日々のアフィリエイトの事とか

妄想というかなんというか、将来の展望?

アフィ関連からは若干外れるし、だからと言って表ブログに書く内容でもないのでこっちに書いてみる。

サラリーマンをやめたのがリーマン・ショックの時だから2008年末になる。今年でニートになって8年目だ。正直な話、辞める前からスカウトとか今まで付き合いのあった会社とか多方面から仕事のお誘いがあった。けども再就職は頑なに断った。なぜか?っていうのが今回のテーマ。

20年近くIT業界で働いてきて、もうこの業界の体制というか業界の構造自体に嫌気がさしたから再就職するのを拒んでる。その当時で月収100万ぐらいはあったんだけども、リーマン・ショックが起きて、これからIT業界は間違いなく不況に陥るなー、って肌で感じてたのでいいタイミングだしって事で辞めた。給料下がるの目に見えてたしね。その時に持ってた大体300万ぐらいの蓄えを実家に渡してそのままニートになって8年、って感じだ。

で、辞めたはいいが、ずっとニートで居るわけにもいかんしなー、って事でアフィを始めたんだが、これが面白い。正直お金が稼げるっていう事じゃなくて、IT技術とマーケティングを駆使してGとGを利用しているユーザにどうアプローチするかっていうのが面白い。Gに対するハードルを超えて、そのハードルの向こうにいるユーザに対して物を売る。そういった事をトータルで見て面白かった。なのでGに対抗するべくSEOとプログラミングを勉強したし、ユーザに対抗するべくマーケティングの勉強もした。7年間やってきて一通りというかかなり深い部分までの知識と技術と経験が身についたと思う。あとはそれを踏まえて稼ぐだけだ。

だが実際は稼げてない。いや厳密に言うと稼いでいない。どうやったら稼げるのかは頭で理解しているんだが、それを実行する前に考え込んでしまう。「これではダメだ」と。実際にアフィサイトを作って稼いでいた実績もあるし、同じことをやれば稼げるのは判っている。でもそれではダメなのだ。なぜか?「稼いでいる」だけじゃダメなのだ。「稼ぎ続けなきゃいけない」のだ。もう就職しないと決めた以上、アフィリエイトで稼げる状態を維持し続けなければいけないってことだ。

世のアフィリエイターはある程度稼ぐと法人化して人を雇う方向に向かって行くと思う。人を雇わないにしても記事の外注やサイト作成のアウトソーシング化を念頭に事業拡大を考えていくはずだ。アフィリエイトは個人でやるとある一定のラインで頭打ちになるからだ。それを人的リソースで補う形でそういった形になっていくと思う。だが俺はそれが嫌だ。というより、そういう必要があるとはどうしても思えない。個人の持つリソースだけでもっと稼げる可能性があると思っている。

数年前にGにサイトを全滅させられた時に思ったのだが、いくらサイトを作ったところでそのサイトには必ず寿命がくると思う。一度作ったからと言ってそのまま10年も20年もそのサイトが生き続ける事なんてありえない。なのでアフィリエイターは常にサイトを作り続ける事になる。非常に面倒くさい。その時代によって商材は変わるだろうけども結局は一緒だ。サイトを作るのだ。やることは「ほぼ毎回変わらない」。同じようなことを繰り返していかなければならない。

そう、毎回考えるポイントは「ほぼ毎回変わらない」というところだ。商材が変わってもやることは大して変わらないのである。ルーチンワークと迄は言わないにしてもそこまで変わらない。商材の事を調べてキーワード調べてライティングしてサイトを作るのだ。一つ一つの作業を見ると大したことはやってない。なので外注が可能になるし、他人に任せてサイトを作ってもらうことが出来る。アフィリエイト事業として考えた時、この毎回変わらない作業というのをいかに体系化して他人にやらせるかというのが事業化の鍵になってくる。

ここからが本題だ。

私は他の大多数のアフィリエイターが持っていないものを持っている。ITに関する技術だ。「wpインストールできます()」とかそういうんじゃない。プログラミングだけじゃなくてITに関する技術全般だ。SIでPLをやっていたぐらいなのでサーバやそちらの技術と経験に関してはそこら辺の現役SEよりもあると自負している。SIで仕事をやる前は某大手プロバイダで働いてたし、もっと前は交換器とか弄ってた。さらにアフィを始めて独学でプログラミングを勉強したことによってほとんどのレイヤの技術が身についてしまった。無いのはクライアントアプリケーションの開発経験ぐらいだ。なので全体的なレイヤでアフィに関する事を俯瞰して見ることができる。局所的な技術の話じゃない。俯瞰して見れるというのが鍵だ。そして一つの結論に行き着いた。「アフィにまつわる殆どの作業は自動化できる」ということだ。Gにペナ喰らってサイト作りなおすのめんどくせー、という段階から思考してこの結論に辿り着いた。もちろん人力でやらなければならない部分はある。ライティングだ。だがそれ以外は自動化できると断言する。

そういった事を踏まえて、現在、アフィのシステム化の手始めにクローラを作っているのだが、これが遅々として進まない。はっきり言ってクローラを作るだけなら簡単だ。でもクローラを作っているのだけども実際はクローラだけ作ってる訳じゃない。クローラと他の部分との連携を考慮して作らなければならないからだ。アフィにまつわる作業全体を自動化するという前提でいるからこそ作業が複雑になって進まなくなる。そしてそんな状態が半年以上続いている。非常によろしくない。

そこでもっと根本的なシステム全体の設計を見直すことにした。もちろんクローラは絶対に必要な部分なので作るんだけども、そこから連携するあらゆる技術との繋がりをもう一度考えなおした。最近ツムツムに現実逃避してたけども、ただツムツムやってた訳じゃない。ツムツムやりながらどうするかをずっと考えてた(という言い訳にしとく)。そしてある程度まで考えがまとまったので文章にしてアバウトに考えを残しとこうと思った次第である。

プログラム間の連携を考える時、ある程度の塊をイメージしている。タスクというか、もっと小さい塊だ。httpリクエストするモジュールだとか、取得したhtmlをスクレイピングするモジュールだとか、そういった小さい塊同士を非同期で連携させていく感じになる。だがこれでやると各モジュール間の連携がかなり複雑になってしまう。スムーズに動いてる時はいいのだが、問題があった時の事を考えるとややこしい事になる。なのでそこをシンプルにする方法を考えた。もっと大きい塊にするのだ。「モジュール単位」とか「タスク単位」じゃなく「人間単位」にするのだ。

アバウトに言うと、システム全体を「会社」として見る。そこからタスク単位じゃなく人間単位で作業をさせるイメージだ。クローラは言わばウェブブラウジングで、作業を請け負った(例えばライバルサイト調査)人間がやる作業の一つの工程に過ぎないことになる。つまりhttpリクエストしてhtmlを解析してキーワード分析して云々・・・、ってのを1人の人間(プログラム)が請け負うことでモジュール単位の連携では無く、一つの大きな作業の塊を一つのプログラムが担当する形だ。例えば3000サイト分析してくれという依頼があったら300サイトずつ10人が分析を請け負うことになる。そして最終的に出来上がった3000サイト分の分析結果を上司の人間がサマってこっちに教えてくれる形にしようと思う。ライバル調査の部署はそういう感じで、もちろん、他にサイトを作る部署とか、サイトを管理する部署とか、市場調査する部署とか、商材を調査する部署とかいろんなのを作る。部署間連携は上司が行って、部署内連携は上司から部下に指示を出させる感じ。

つまり会社組織みたいなシステム構造にしようと思う。そしてそれを実現するためには各人間(プログラム)のマルチスレッド化が必須になってくる。正直RubyPythonではしんどい。なのでGolangErlangを利用しようと思う。前にScalaを勉強しかけてJava判らないと無理って事で挫折したけども、GolangErlangもそこまで重厚な作りではないと思うので、勉強期間は短く済むだろう。RabbitMQが基幹になっているので、相性を考えるとErlangで作る方が良いのかな?とりあえず勉強してみてから決める。

若干技術的な話が入ったのでこっちのブログっぽくないが、アフィの体系化と綿密に関わってくるのであっちでは話せない。まぁRubyで作ると向こうでは語っちゃってるので一応Rubyでも作るけども、実際は並行してErlangでクローラじゃない物を作っていくことになるだろう。今回表ブログにソースをほとんど貼ってないのはこういう事になるのを見越してだったんだけども、連携を考えないシンプルなRubyスクリプトをサクッと作ってあっちの記事は収束させようと思う。

ところでシステムを会社として見立てるなら、俺はどういう立場なのかな?客なのか社長なのか。それともライティングする部署の平社員だろうか・・・。効率化しすぎてシステムに使われないようにしなければ。