PHPド素人がYahoo!検索プラグインを開発〜リリースするまでのまとめ

LUXURY LAGARE

Yahoo!検索 スタッフブログ

Yahooプラグインとは?

一言で言えばYahooの検索結果に独自情報を付加できます。
プラグインを入れた人以外はそのままの検索結果が表示されますが、便利なので
今回の公開を機にユーザーも対応サイトも徐々に増えていくと思います。


早速簡単なプラグインを開発して、公開するところまでやってみました。

意外と簡単

私はperlプログラマですがphpは名前を聞いたことがあるだけで今回はじめて触りました。
そんな私でも2-30分でプラグインを開発して公開することができたので、
この喜びを一人でも多くの人に体験してもらいたいと思っています。

用意するもの

  • Yahooアカウント

今回はエディタすら使いません!!

プラグイン作成に必要と思われるスキル

  • HTMLの基本的な知識
  • いずれかのプログラミング言語でif文を書けるレベル
  • 自分でサイトやブログを作成した経験があれば尚良し

このブログを見ているなら、多くの人が上記にあてはまると思います。

せっかくなので是非チャレンジしてみてください!!

今回作成するプラグインについて

今回は入門向けということで、とあるサイトの検索結果に
「画像を貼り付ける」というプラグインを作成し、公開します。

スクリーンショットは明日貼り付ける予定。
スクリーンショットが必要な方は一旦ブックマークして明日以降ご覧下さい。

下準備

  • Yahooアカウントを用意します。
  • 自分が所有するサイトのプラグインを作る場合はサイトエクスプローラーで認証しておきます。
  • アイコンがあったほうがいいので作成するサイトの16*16 85*65のアイコンを準備します。

http://developer.yahoo.co.jp/other/searchplugin/
に詳細情報があります。ブックマークしておきましょう。


ここまでについては解説しません。

Yahoo!検索プラグイン 開発ツール 開発ガイド

http://developer.search.yahoo.co.jp/
にて作業をすすめます。ここでYahooIDが必要です。

  1. 表示用プラグイン→新規作成をクリック
  2. 基本情報の入力
    1. 名称にサイト名を入力
    2. 表示は標準型のままでOK
    3. 内容説明にプラグインの説明
    4. カテゴリ選択
    5. アイコンアップロード
    6. 利用規約に同意して次へ
  3. 基本情報の入力
    1. URLマッチングパターンの入力(例の通り)
    2. テストURLの入力(最大10個だが3個でOK)
    3. 画像取得ドメイン(サブドメは指定しなくて良い)
    4. リンク先ドメイン(今回は空でOK)
    5. 保存し次へ
  4. データサービスの追加
    1. なにもせず保存し次へ
  5. 表示の調整
    1. ブラウザでPHPのソースをいじる(下記参照)
    2. 正しく表示されているか例を見て確認する
  6. 完了
    1. この表示用プラグインを公開し、ほかの利用者からも利用できるようにする。 をクリック
  7. プラグインの公開
    1. プラグインをほかの利用者も利用できるように公開し、あわせてプラグイン一覧への掲載を希望する を選択
    2. ソースコードの公開を選択
    3. ロゴをアップロード
    4. 適用対象サイトを記入
    5. 完了をクリック

ソース全文

public static function getOutput() {
    $linkurl = Data::get('yahoo:index/dc:identifier');
    $itemkey = 0;
    $match;
    if(preg_match('/luxury-la.com\/\d+\/\d+\/(.+?)\.html/', $linkurl, $match)){
        $itemkey = $match[1];
    }
    $ret = array();

    /* If you leave these blank, the default title and summary will be shown */
    $ret['title'] = Data::get('yahoo:index/rel:Posting/dc:title');
    $ret['summary'] = Data::get('yahoo:index/rel:Posting/dc:description');

    /* Now you fill in the rest. Use Data::get and Data::xpath to get data  */

    // Image
    if($itemkey){
        $ret['image']['src'] = 'http://a248.e.akamai.net/f/248/37952/1d/image.shopping.yahoo.co.jp/i/g/' . $itemkey;
    }else{
        $ret['image']['src'] = 'SM_VAL_DEFAULT';
    }
    $ret['image']['alt'] = SM_VAL_DEFAULT;
    $ret['image']['title'] = SM_VAL_DEFAULT;

    // Deep links - up to 4
    $ret['links'][0]['text'] = SM_VAL_DEFAULT;
    $ret['links'][0]['href'] = SM_VAL_DEFAULT;
    $ret['links'][1]['text'] = SM_VAL_DEFAULT;
    $ret['links'][1]['href'] = SM_VAL_DEFAULT;
    $ret['links'][2]['text'] = SM_VAL_DEFAULT;
    $ret['links'][2]['href'] = SM_VAL_DEFAULT;

    // Key Value pairs - up to 4
    $ret['dict'][0]['key'] = SM_VAL_DEFAULT;
    $ret['dict'][0]['value'] = SM_VAL_DEFAULT;
    $ret['dict'][1]['key'] = SM_VAL_DEFAULT;
    $ret['dict'][1]['value'] = SM_VAL_DEFAULT;
    $ret['dict'][2]['key'] = SM_VAL_DEFAULT;
    $ret['dict'][2]['value'] = SM_VAL_DEFAULT;
    $ret['dict'][3]['key'] = SM_VAL_DEFAULT;
    $ret['dict'][3]['value'] = SM_VAL_DEFAULT;

    /* This is for infobar apps
       You can put a subset of HTML in here
       See the docs for more details */
    $ret['infobar']['blob'] = SM_VAL_DEFAULT;

    return $ret;
}

ソースの解説

$linkurl = Data::get('yahoo:index/dc:identifier');
でリンク先のURLを取得しています。

if(preg_match('/luxury-la.com\/\d+\/\d+\/(.+?)\.html/', $linkurl, $match)){
    $itemkey = $match[1];
}

でURLからアイテムのキーを取得しています。

if($itemkey){
        $ret['image']['src'] = 'http://a248.e.akamai.net/f/248/37952/1d/image.shopping.yahoo.co.jp/i/g/' . $itemkey;
}

でアイテムのキーから画像のURLを作って渡します。

独自のプラグインを作るヒント

$ret['links'][0]['text'] = SM_VAL_DEFAULT;
$ret['links'][0]['href'] = SM_VAL_DEFAULT;

をいじると関連リンクを4件まで設定できます。
トップページへのリンクを入れてもいいでしょうし、
少々プログラムの知識は必要ですが、カテゴリページ等にリンクすることも可能です。

$ret['dict'][0]['key'] = SM_VAL_DEFAULT;
$ret['dict'][0]['value'] = SM_VAL_DEFAULT;

をいじるとキーバリュー形式で任意の値を4件まで表示できます。
商品ページであれば価格を入れる、とか
ブックマークされた数を入れる、とかあとはあなたのアイデア次第です。

プラグインの宣伝

出来上がったプラグインのURLを自分のサイトに書いておけば
プラグインを使ってくれる人が出てくるかもしれません。
ちなみに私が作ったプラグイン
http://gallery.search.yahoo.co.jp/application?smid=jA9.s
で公開しております。

あなたが作ったプラグインの情報も是非教えてください。

ご不明な点がありましたら、

twitter @noritaka_okabe

までどうぞ。

お疲れ様でした。長文をお読みいただきありがとうございました。

PHPド素人がYahoo!検索プラグインを開発〜リリースするまでのまとめ - クリティカルスピード開発日誌 PHPド素人がYahoo!検索プラグインを開発〜リリースするまでのまとめ - クリティカルスピード開発日誌