法則を探るのがクイズのようで楽しいです。「http://click.linksynergy.com/fs-bin/stat?」これがベースURL。「id=Rfg6nizvNEs」id以降はLinkshareのサイトid。「&offerid=94348」固定値っぽい。「&type=3」固定値っぽい。「&subid=0」固定値っぽい。「&tmpid=2192」固定値っぽい。́・ω・`)ということでサイトidは各自のidによって異なります。後は「&RD_PARM1=」以降の法則が分かればPipeでも作れるということになる。以下のURLに注目してみる。http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Ftextforce-dropbox-text-editing%252Fid396444947%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30黒字はどのアプリでも一緒っぽい。違いがあるとすれば、赤字の部分。実はこの赤字の部分、iTunesリンクを2回ほど加工すると作り出すことができちゃうのです。http://itunes.apple.com/jp/app/textforce-dropbox-text-editing/id396444947?mt=8上記がiTunesリンク。ここに以下の変換を噛ませてみる。%3D」そして更にもう一回。%3D」すると...。)!http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Ftextforce-dropbox-text-editing%252Fid396444947%253Fmt%253D8後は赤字部分の前に「http://click.linksynergy.....」の部分をくっつけ、後ろに先ほどの黒字部分「%2526uo%253D4%2526partnerId%253D30」をくっつける。これでLinkshareリンクが完成です!PipeでiTunesリンクを加工するLinkshareリンクの法則をPipesを使って実現してみます。Inputを使います。Input」を選び、キャンパスへドラッグ&ドロップします。Inputは以下のように設定します。「Name」Pipe内で使う呼び名。「Prompt」入力値のラベル名。こちらも「url」と入れる。「Position」入力値の表示順番。「Default」入力値の初期値。「http://itunes.apple.com/jp/app/textforce-dropbox-text-editing/id396444947?mt=8」と入れる。「Debug」Pipe内の初期値。Defaultと同じ値を入れる。変換しないままだと、例えばRegexモジュール等で、右辺にしか入力値は使えませんが、itemにすれば左辺でも使えるようになります。Builderを噛ますと良いです。Builder」を選び、キャンパスへドラッグ&ドロップします。入力値を「description」に命名します。手順3(Renameモジュール)descriptionを後々は、LInkshareリンクにしていきますが、オリジナルのiTunesリンクを控えておく為に「temp」というitemにコピーしておきます。ライブラリから「Rename」を選び、キャンパスへドラッグ&ドロップします。As」で「temp」にコピーします。手順4(Regexモジュール)いよいよ、Linkshareリンクの法則に基づいた変換をしていきます。「description」にはiTunesリンクが入っているので、このitemに変換をかけていきます。ライブラリから「Regex」を選び、キャンパスへドラッグ&ドロップします。ここでRegexの「g」にチェックが付いてるところにご注目。「g」は繰り返しを意味してます。descriptionに「%」が複数存在する場合、その全てを「%25」に変換する。いった場合に「g」にチェックを入れます。チェックを入れない場合、最初にヒットした1つだけを変換します。用途に合わせて使い分けて下さい。ライブラリから「Regex」を選び、キャンパスへドラッグ&ドロップします。これで法則のところで紹介した赤字部分が完成しました!デバッガーで結果を確認してみましょう。Builderモジュール)Linkshareリンクを完成させるべく、今度は「http://click.linksynergy....」の部分を作ります。Inputでidを繋げます。Input」を選び、キャンパスへドラッグ&ドロップします。Inputは以下のように設定します。「Name」Pipe内で使う呼び名。「Prompt」入力値のラベル名。こちらも「id」と入れる。「Position」入力値の表示順番。「Default」入力値の初期値。各自の「サイトid」を入れる。「Debug」Pipe内の初期値。Defaultと同じ値を入れる。サイトidの調べ方は以前になしこさんがまとめて下さってます。Builder」を選び、キャンパスへドラッグ&ドロップします。Builderには入力欄を3つ用意します。1行目には「http://click.linksynergy.com/fs-bin/stat?id=」と入れる。Inputの値(=サイトid)を入れる。3行目には「&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=」を入れる。以上で、手順4の赤字部分の前に入れる文字列が完成しました。手順6(Regexモジュール)最後に手順4の赤字部分の前に「http://click.linksynergy....」後ろに「%2526uo%253D4%2526partnerId%253D30」を追加し、Linkshareリンクを完成させます。ライブラリから「Regex」を選び、キャンパスへドラッグ&ドロップします。「description」には手順4の赤字部分が既に入ってます。赤字部分の前に手順5で作った文字列を追加します。「^」は正規表現で「先頭」を意味します。Builderを紐付けます。文字列の最後を示す正規表現が「$」。赤字部分の後ろに文字列「%2526uo%253D4%2526partnerId%253D30」を追加します。以上で完成です!サイトidが「DMY」だった場合の情報の分岐AppHtmlを使う人の全てが、Linkshareをしている訳ではありません。していない人も数多くいると思ってます。いった人達の為に、サイトidに「DMY」が指定された場合だけ、Linkshareリンクを作らず、そのまんまのiTunesリンクを返すようにしてます。手順7(Regexモジュール)ライブラリから「Regex」を選び、キャンパスへドラッグ&ドロップします。現在、descriptionにはLinkshareリンクが入ってます。このリンクの中に「id=DMY」という文字列が存在する場合、手順3でコピーしておいたiTunesリンクで置き換えます。したidが入っていた場合は、この置換はスルーされるのでLinkshareリンクのままになります。「id=DMY」を「.*」で挟むことで、文字列の中のどこかに「id=DMY」があるならば、全てをitem.tempで置き換えるという指定ができます。Regexの右辺にitemを指定する場合には「${temp}」というように記載します。最後、手順3でコピーした「item.temp」を「空」に掃除して終了です。以上で完成です!Pipeが大きくなってきたんで全部表示できん...(゚Д゚;)完成系はこちら。Inputの「id」のDebug部分を「DMY」にすると、iTunesリンクが返されます。逆に「DMY」以外だとLinkshareリンクが返されます。Maker」で生成されるリンクと一緒だと思います。心配な方は確認してみて下さいまし。あとがき...今日の講座は、Pipeの講座というよりも、URLの法則性に従ってデータを加工することを主眼に説明をしてきました。idに何が指定されるのかによって、結果も変わってくるという、条件分岐もしてみました。Pipesで挫折することの多い「Loop」モジュールを解説します。やって欲しいとか要望があればTwitterやコメントにてご指摘下さい。今後のカリキュラムですが、またまた構成を入れ替えて以下のようになってます。←今ココ講座06(Loop)講座07(Dapperの使い方)講座08(Dapper情報の取得、FetchPage)講座09(NumberInput、SimpleMath)講座10(良く使う正規表現まとめ)講座11(MyPipeの可読性の向上)講座12(Javascriptとの連携)年内にどこまでいけるだろうか...。講座06まではいきたいなぁ。iPhoneに関する、はてなブックマーク新着情報です。RSS検索このサイトについて普通のサラリーマンの普通なiPhone日記です。アプリの感想とかiPhoneを使うことで加わった習慣など気の向くままに記録してみようと思います。最近、はてなからWordpressに引っ越しました。iPhoneに最適化されたBlogを作りたかったので...。TwitterのIDはhiro45jpです。お気軽にFollow/Removeして下さいな。【近況】Bookmarkletを見直してます...。本日朝、開発チームより対応完了したとの報告を受けました。お手数ですが、再度試して頂ければと思います。今後とも宜しくお願いします。詳細なご説明ありがとうございます。本件、既にチーム内で情報を共有し、対処に向けて動き出しています。ご不便をおかけしますが、少々お待ち下さいまし。今後とも変なところがあれば、ご指摘お願いします。