せっかく作ったiPhone/iPad用電子書籍アプリのテンプレートが全くと言っていいほど売れませんでした
有吉さんの電子書籍アプリはバカ売れのようですが・・・

私自身が電子書籍として販売できるようなコンテンツをもってないのがいかんですな~

電子書籍アプリはその機能よりも中身だと思うんです。

犬のしつけなどペット関連のノウハウやダイエット法など、自身の経験を文章に起こして販売してみると、意外に大ヒットする事もあるようですよ~

書籍化やDVDにしてAmazonで販売となると敷居が高いですが、iPhoneアプリならPDFファイルがあればオッケーなんです。

Macがなくて諦めている方や、デベロッパー登録などに自身が無いと言う方はご相談下さい。せっかく作ったテンプレートが無駄になるくらいなら、必要な方に低料金で使って頂きたいので、ヤフオクで販売した価格の3980円でテンプレートの販売からアプリリリースのお手伝いまでさせて頂きます。


本出したいな~って思ってる方、ご連絡お待ちしております。


独学で1年ほど勉強したおっさんのコードを眺めてみるのも、iPhoneアプリ開発の参考になるかも?です。git-hubなどでは細切れのコードしかないことが多いですが、開発初級で使うようなメソッドを前後関係も踏まえてみる事が出来るのもプロジェクト丸ごとみるメリットがあると思います。電子書籍アプリのサンプルテンプレートとして有名な「Reader」のコードを見たけどいまいちよく分からなかった方にもおすすめできます。

アフィリエイトサイトで商品検索フォームなどを作成するする場合、Webプログラミングが必要になってきます。

で、今回はWebプログラミングの部分はPHPで行います。

HTMLとCSSの習得も大変なのに、さらにスクリプト言語もなんて!!

と、うんざりしてしまいますが、乗り越えた先には売り上げゼロからの脱出が待っている!!

なんて妄想を膨らませて乗り切って行きましょう。


では、今日から私が勉強して行く過程を備忘録も兼ねてアップして行きます。



とりあえずやりたいことは、「iPhoneアプリやアフィリエイトサイトでのキーワード検索」。そして、「検索結果の一覧を価格の安い順などユーザーの指定にあわせて表示する」です。


そこで、この一連の流れを切り分けて考えてみる事にしましょう。


まずはキーワードの入力と送受信について。


iPhoneアプリでは「テキストフィールド」でキーワードを入力し、検索ボタン等を押したタイミングでNSURLConnectionクラスなどを利用してサーバーと通信を開始します。アフィリエイトサイトでは「inputタグ」でキーワードを入力し、こちらも検索ボタンを押したタイミングで「formタグ」によって指定した送信先ファイルのスクリプトを実行するといった感じでしょうか。

どちらもキーワードの入力と送信ボタンを押す所までは非常に簡単に出来ますね。問題は入力したキーワードの送信方法と受信方法と言う事になります。

では、送信方法について見て行きます。
送信方法には、「GET」と「POST」の2種類あります。いろいろなサイトを見てみましたが、この2種類以外は書いてませんでしたので、この2種類から選べばオッケーということでしょうね。

「GET」と「POST」の違いについては、検索すれば情報はたくさん出てきますので細かいところは省略しますが、送信出来るデータ量の違いとブラウザのアドレス欄に表示されるかどうかと言ったところですかね。


今回は送信するデータ量も少ないですし、アドレス欄に表示されても全く問題ないと思いますので、「GET」を使ったデータ送信を行います。


「formタグ」と「inputタグ」は以下のようにしてみました。「formタグ」と「inputタグ」には他にも属性がいろいろとあったりしますので、興味のある方は調べてみて下さい。
「action属性」にはデータを受け取るPHPファイルを指定し、「inputタグ」の「name属性」には受け取り側で識別出来るように名前を付けておきます。

<form action="submittest.php" method="GET">
<p><input type="text" name="keyword"><input type="submit"></p>
</form>

たったこれだけで送信出来るんですね。意外に簡単でした



今度は受信方法について見てみます。

「formタグ」の「action属性」で指定したファイルに以下の内容で記述します。

<?php
print htmlspecialchars( $_GET["keyword"] );



PHPは終了タグは省略できるそうです。HTMLも終了タグを省略出来たりする物もある見たいです。



フォームを作成したHTMLファイルとPHPファイルをサーバーに転送してみて下さい。送信ボタンを押すと、入力フィールドに入力した文字列が表示されるはずです。


そうです。たったあれだけで受信もできますた。


ここまでは意外に簡単でしたね~


送信ボタンを押したら文字化けするって方は、作成するファイルはすべてUTF-8で作成し、ブラウザのエンコーディングもUTF-8にしてみて下さい。私はブラウザはsafariを使用してるのですが、文字化けで丸一日くらい悩みました。いろんな小難しいサイトも見たりして試したのですが、結局ブラウザのエンコーディングがSHIFT-JISになっていた事が原因でした。まずはブラウザの設定から確認するべきでした。iPhoneアプリ開発で使ってるXcodeが基本UTF-8なので自分の環境はUTF-8になってる気になってました



さて、ユーザーに入力してもらった文字列をPHPで受け取る事が出来たので、今度は受け取った文字列をもとに各ASPへ商品検索リクエストを送るところまでを見て行きます。


商品検索リクエストは基本的にリクエストURL+パラメータでオッケーのようなので、このパラメータ部分は変数で、リクエストURLは定数で保持する事にします。今回のケースでは、変数や定数でデータを持つ必要性はあまりないかもしれませんが、何をどういう順番でやっているのか理解するためにあえてやってみます。


変数や定数が???な方は「そふぃのPHP入門」がとても参考になると思います。このブログではウンチクはとりあえず置いといて、まずはアフィリエイトサイトを作ってしまう事を優先させたいって方針を採用しております

アフィリエイトサイトが出来上がったら、やって来たことを振り返りながら勉強してみるのもいいと思います。勉強してる間にも売り上げがあった方がいいですよね?


そんな訳で、リクエストの送信について見て行きます。

今回はYahooショッピングの商品検索APIで試してみます。
Yahooショッピングでアフィリエイトする場合は、YahooデベロッパーネットワークでのアプリケーションIDの作成と、Yahooショッピングアフィリエイトプログラムに参加する必要があります。その他にバリューコマースアフィリエイトプログラムへ参加する事でバリューコマースのアフィリエイトIDで商品検索APIを利用する事も出来ます。

詳しくはYahooデベロッパーネットワークで確認して下さい。


YahooアフィリエイトIDでのリクエストURLプラス固定パラメータを作成してみました。赤字の部分はご自身のIDへ置き換える部分です。(受け取るデータはjsonを指定してます。)

http://shopping.yahooapis.jp/ShoppingWebService/V1/json/itemSearch?appid=<アプリケーションID>&affiliate_type=yid&affiliate_id=<アフィリエイトID>&query=



上記のURLは固定の値として扱うので定数で保持します。定数は「define("定数名","値")」で設定できるので、下記のようにリクエストURLを定数にします。

define("REQUEST_URL,"http://shopping.yahooapis.jp/ShoppingWebService/V1/json/itemSearch?appid=<アプリケーションID>&affiliate_type=yid&affiliate_id=<アフィリエイトID>&query=");


続いてリクエストURLと検索キーワードを結合させた文字列を変数に代入します。

$request = REQUEST_URL . htmlspecialchars( $_GET["keyword"] );


アフィリエイトリンク作成用のリクエストURLで商品検索リクエストを送信し、レスポンスをjsonで受け取ります。

$json = file_get_contents($request);


受け取ったjson形式のデータをパースして連想配列にします。

$json_dic = json_decode($json, true);


パースが失敗した場合はNULL値が返ってくるらしいので、失敗した場合はエラーと表示させて処理を終了させます。

if ($json_dic === NULL) {
    print "エラー";
    return;
}

var_dump()でパースしたデータを格納した変数の内容や命令の返り値を画面上に出力して今回のテストを終了します。

var_dump($json_dic);



コードを通して書いてみると以下の通りです。


<?php

define("REQUEST_URL,"http://shopping.yahooapis.jp/ShoppingWebService/V1/json/itemSearch?appid=<アプリケーションID>&affiliate_type=yid&affiliate_id=<アフィリエイトID>&query=");

$request = REQUEST_URL . htmlspecialchars( $_GET["keyword"] );

$json = file_get_contents($request);

$json_dic = json_decode($json, true);

if ($json_dic === NULL) {
    print "エラー";
    return;
}

var_dump($json_dic);


これでASPへのリクエスト送信とデータ受信までは出来ました。


次回は受け取ったデータを、商品一覧として表示するところまでやってみたいと思います。





新しいテーマがまた1つ。


iPhoneアプリからバーコードやキーワードで商品を検索し、結果をiPhoneに返す処理はどうしたらいいのか。


iPhoneからサーバーへ、バーコードやキーワードを送信。


サーバーがASPへ該当する商品があるか問い合わせる。


ASPから該当する商品の情報がサーバーに送られてくる。


サーバーからiPhoneへ商品データが送られてくる。


流れとしてはこんな感じかと。


iPhoneとサーバーのやりとりは、多くの情報がWeb上や書籍で公開されています。


しかし、サーバーとASPのやりとりから情報の加工までを具体的に解説してる情報は調べた限りないように思います。


ASPに商品情報を問い合わせるためのAPIは公開されていて、その使用方法も具体的に書かれていますが、動的に問い合わせを行う方法やその情報を価格順にソートしたりなどの加工方法は詳しく紹介されていません。


サーバー内でのデータの加工とiPhoneからのリクエストの受け答えにはMySQLとPHPの組み合わせがスタンダードなようだと言う事がわかったのですが、アフィリエイトでこんなふうに使ったらいいよ的なのがないんですよね。


こちらもやはり基礎から勉強していくしかないのか~


HTML5にCSS3にMySQLにPHPと覚えなければいけない事がてんこ盛りです


どんな順番で勉強して行くのがベストなのかをとても分かりやすく、読みやすい文章で紹介しているサイトを発見したのでリンクを貼っておきます。

Webデザインレシピ