Showing posts with label web. Show all posts
Showing posts with label web. Show all posts

5/22/2013

京巡りガイドの機能を僅かに追加しました。

京都における観光地やホテルなどのルート案内、および情報を閲覧をできる「京巡りガイド」ですが、検索ページ・詳細ページにおいてバス停に付帯情報がある場合に表示するように機能を追加しました。

検索ページや詳細ページにおいて、バス停の立つ場所が色々と分かれて複雑である場合、京都市バス®サイト内の説明ページへのリンクを表示します。


また、「○○経由のみ停車」「○○ゆきのみ停車」「○○ゆきバス停は1本東」などの付帯情報がある場合も、一緒に表示します。


なお、今回も登録データを追加しており、1,000 件を超えました。

また、これは登録側のことですが、Google Maps のマイマップではデータの管理を行うにあたり、UI がだいぶとイケてないので、マイマップを DB にすることをやめ、独自でバックエンドをこしらえました。ただ、近日中に全て WordPress として稼働させる予定です。

【京巡りガイド】
http://guide794.info/

5/21/2013

foursquare API が少し変更されてました。

https://api.foursquare.com/v2/venues/search? を使ってる部分があったんですが、最近どうも取得できなくなったようなので、その修正をしている内に、いくつか変更されてる点が分かりました。

以前
  • client_id と client_secret を渡せば取得できた
  • v は必要なかった
  • query はエンコードする必要なかった

- 現在
  • oauth_token を渡さないと取得できない
  • v を付けると取得されるデータの構造が変わる
  • query はエンコードしないと取得できない(日本語の場合)

v を付けなかったときの構造は、response > groups > 0 > items でしたが、v を付けると、response > venues へ構造が変わります(v は YYYYMMDD の日付)。

最初エラーを見たときは、v を付けろって話だったので、今後は付けたときの構造になっていくような感じがします(v を付けなくても取得はできます)。

4/05/2013

以前にも lifehacker さんには ご紹介 いただきましたが、再度掲載されました!

今回は「広告非表示」と「上に戻るボタン」を追加で紹介いただいています。

ありがとうございました!

Facebookの機能を3倍アップできる拡張機能 : ライフハッカー[日本版]

3/28/2013

Sleipnir Mobile の「ほかのアプリから開く」が便利

本日、Sleipnir Mobile がアップデートされましたね!早速アップデートするんですが、そのリリース通知エントリーで気になる部分がありました。

iOS なのに、どんなアプリからもページを次々に開ける!Sleipnir Mobile for iPhone / iPad 2.3 をリリースしました! (フェンリル | デベロッパーズブログ)

「どんなアプリからもページを次々に開ける」?
ちょっと意味がわかりかねます、と思って読むと、「コピー」という動作を行うと、バックグラウンドで Sleipnir たんがリンクを開いてくれるようなのです。しかも余計な文字が混ざってても大丈夫とか。こういう余計な文字が混ざってる状態から URL を抜き出すのって、意外と面倒な処理ですが、やってくれてるようです。

ということで、実際にやってみました。

設定する
まずは Sleipnir を開いて、下のバーの右から 2 つめを押します。


次に、設定画面左上の歯車アイコンを押します。


「アシスト」の「ほかのアプリから開く」を押します。


デフォルトではオフになってるので、「オン」にします。


いざ実食
まずは Twitter から。
コピーする


開かれる


** Facebook
コピーする


開かれる



** tumblr.
コピーする


開かれる



** Safari
コピーする


開かれる


開かれてるか確認
上記 4 回の動作で 4 つのタブが生成されています。


状況によっては「おぃ!」っていう場面があるやもしれませんが、非常に便利ですね!

iTunes App Store で見つかる iPhone、iPod touch、iPad 対応 Sleipnir Mobile - Web ブラウザ

3/22/2013

myFacebookStyle を新タイムラインに対応させました

Facebook の見た目を自由に変えられる Chrome 拡張「myFacebookStyle」ですが、この度新タイムラインに対応させました。

今回は非常に多くの class が変更されており、以前から酷かったのですが、変わらず「._4lh」とか「._5vf」とか全くもってわけわかめなクラス名が付けられており、難儀しました。Facebook さんは、意味の通るクラス名を付けてほしいとですよ...。

Chrome ウェブストア - myFacebookStyle

3/21/2013

Facebook の見た目を自由に変えられる Chrome 拡張「myFacebookStyle」ですが、この度右側に出てくる広告を非表示にする設定を追加しました。

オムニバーのアイコン、もしくは右クリックによるコンテクストメニューから管理パネルを表示させると、以下のように「広告」が表示されます。


この設定が「表示する」の場合はこのような状態です。


「表示しない」にした場合、このような状態になります。


Chrome ウェブストア - myFacebookStyle

3/05/2013

README.md に変更しました

github での README を、全て README.md 形式に変更しました。

これにより、読みやすくなったと思います。

はてな記法っぽくて凄く使いやすいですね、Markdown。


↓参考にしたところ。ありがとうございました。
脱GitHub初心者を目指す人のREADMEマークダウン使いこなし術 | ゆっくりと…

「jquery.utility.js」を公開しました。

先日リニューアルした「京巡りガイド」の開発時に派生してできた「jquery.utility.js」を公開しました。

jquery.utility.js

tx()やcreate()、isMail()などの機能を提供するjQueryプラグインです。

.create(tagName, elements)
.create() は、ほぼ .append() と似ていますが、生成する方法が異なります。
第一引数 tagName は、'div' や 'span' などのタグ名を記載します。
第二引数 elements は、生成する要素に与えるデータを Object 形式で定義します。
'css' の場合は、$(selector).css({color: 'rgb(255, 0, 0)'}) と同じ形式です。font-size などハイフンが入る値の場合は、css: {'font-size': '1.2em'} のように引用符で囲んでください。
'data' の場合は、data: {name: 'user name'} のように Object 形式で指定します。name-01 などハイフンが入る値の場合は、data: {'name-01': 'user name 01'} のように引用符で囲んでください。
また、上記以外の場合、'title/text' のようにスラッシュで区切ることで、同じ値を複数の属性に定義できます。
$('#create')
  .create('input', {
    id: 'create_input',
    'placeholder/title/value': 'Fill in your name'
  })
  .create('a', {
    id: 'a',
    href: 'http://jquery.com/',
    'title/html': 'A',
    data: {
      href: 'http://jquery.com/',
      tag: function() {
        return 'a';
      }
    },
    css: {
      color: 'rgb(255, 0, 0)',
      'font-size': function() {
        return '1.2em';
      }
    }
  })
;

.tx(string)
.tx() は、要素に title と html に同じ値を入れたい場合などに使用できます。
img 要素と input 要素(type:image)に使う場合は、alt と title に string が入ります。
input 要素(type:text)、input 要素(type:search)、input 要素(type:url)、input 要素(type:tel)、textarea 要素に使う場合は、title と placeholder に string が入ります。
その他の場合は title と html に string が入ります。
強制的に上記の 2 つの属性に string が入るので、個別に指定したい場合は、.tx() を使わず、.attr() などで個別に指定してください。
$('body')
  .find('#tx1').tx('tx1').end()
  .find('#tx2').tx('tx2').end()
;

.changeClass(remove, add)
.toggleClass() は、あれば削除、なければ追加をしますが、.changeClass() は、強制的に第一引数を削除、第二引数を追加します。
$('#changeClass2').changeClass('blue', 'red');

.doScroll(target)
.doScroll() は、画面スクロールを行います。引数 target が以下の場合、次のような挙動になります。
  • 与えられている場合:target の場所を position() で取得し、スクロールします。
  • 与えられない場合:ページの一番上(x: 0, y: 0)へスクロールします。
$().mobile() で true と判定された場合は、上記の場所へのスムーススクロールのアニメーション無しのジャンプになります。
$(document)
  .on('click', '#btn_doScroll1', function() {
    $().doScroll('#btn_doScroll2');
  })
  .on('click', '#btn_doScroll2', function() {
    $().doScroll();
  })
;

.isMobile(target)
.isMobile() は、アクセスしたデバイスがモバイルかどうかを UserAgent で判定します。引数 target が以下の場合、次のような挙動になります。
  • 与えられない場合:iPhone/iPad/iPod/Android であるかの結果を true/false で返します。
  • 'iPhone' の場合:iPhone であるかの結果を true/false で返します。
  • 'iPad' の場合:iPad であるかの結果を true/false で返します。
  • 'iPod' の場合:iPod であるかの結果を true/false で返します。
  • 'iOS' の場合:iPhone/iPad/iPod であるかの結果を true/false で返します。
  • true の場合:iPhone/iPad/iPod/iOS であるかの結果を Object 形式で返します。
var isMobile = $().isMobile(true);
$('#isMobile')
  .create('p', {'title/text': 'mobile: ' + $().isMobile()})
  .create('p', {'title/text': 'iPhone: ' + $().isMobile('iPhone')})
  .create('p', {'title/text': 'iPad: ' + $().isMobile('iPad')})
  .create('p', {'title/text': 'iPod: ' + $().isMobile('iPod')})
  .create('p', {'title/text': 'iOS: ' + isMobile.iOS})
;

.isMail(value)
.isMail() は、判定する値がメールアドレスかどうか(xx@xx.xx)を true/false で返します。引数 value が以下の場合、次のような挙動になります。
  • 与えられている場合:与えられた value がメールアドレスかどうかの判定をします。
  • 与えられない場合:$(this).val() を値として、メールアドレスかどうかの判定をします。
$(document)
  .on('keyup', '#isMail', function() {
    $('#result').tx('isMail: ' + $('#isMail').isMail());
  })
;

.addJS(file)
.addJS() は、head 要素の一番最後に JavaScript ファイルを追加します。
$().addJS('sample.js');

.addCSS(file)
.addCSS() は、head 要素の一番最後に CSS ファイルを追加します。
$().addCSS('sample.css');

.print(target)
.print() は、console.log() を行います。引数 target が以下の場合、次のような挙動になります。
  • 与えられている場合:console.log(target) を実行します。
  • 与えられない場合:concole.log($(this)) を実行します。
var isMobile = $().isMobile(true);
$('#print')
  .print(isMobile)
  .print()
;

確認環境
  • Chrome/Safari/Firefox/Opera/IE8+
  • iPhone/iPad/iPod touch/Android

サンプルの実行結果は、jquery.utility.js | Archives | Flügel でご覧ください。

3/04/2013

「京巡りガイド」の機能を少し変更しました

先日 リニューアルした京巡りガイド ですが、機能を少し変更しました。

変更点は以下の通りです。
  1. 詳細ページでの出発地が「現在地」の場合、および「現在地最寄りで検索」を選んだ場合に現在地の再取得と「現在地最寄りで検索」のヒット件数の更新を行うように修正。
  2. 路線ページで、路線中にある駅名やバス停名を押すことで、出発地はそのままで目的地を変更して詳細ページを表示する導線を追加。
  3. スマートフォンで本サイトを表示した場合、画面下部のメニューに「現在地地図」を追加。

今後、機能の追加・変更・削除や、神社仏閣・飲食店などのスポットデータの追加があれば、モーダルウィンドウでお知らせします。

2/28/2013

「京巡りガイド」をリニューアルしました

去年一度リニューアルした「京巡りガイド」ですが、この度またリニューアルしました。

京巡りガイド
動作環境:iPhone/Android 4/Google Chrome/Safari/Firefox/Opera

このウェブサービスは、京都市には色んな名所旧跡があるけど、それらはなかなか電車で行きづらいところにあるけど、バスだと巡りやすいということを踏まえ、様々な神社仏閣・名所・ホテル・飲食店などを電車とバスでルート案内する目的で作っています。
これに付随して、ホテルなら楽天トラベルなどで予約を、飲食店なら食べログで情報取得を、すぐにできるようにしてあります。

京巡りガイド | Archives | Flügel にて詳しい説明をさせていただいておりますので、ご興味があればご一読ください。

今回の変更点は以下の通りです。

1. jQuery Mobile の撤廃し、独自 UI へ変更
前回のリニューアルでは、jQuery Mobile を使ってみるという面があったので、全面 jQuery Mobile でしたが、個人的な好き嫌いもあって今回全て撤廃し、UI は独自に構築しています。jQuery Mobile に頼っていた画面遷移は Backbone.js を使っています。

2. 内部構造の一新につき、より正確なルート案内を実現
今までは、データベース代わりに使っていた Google Maps のマイマップで得られる KML を分解して使っていましたが、今回はその KML から一度 json に変更したものを読み込んでいます。それにより、内部での情報管理や計算がしやすくなり、データの読み込みスピードも速くなりました。また、最初のリリースから手をつけていなかったロジックも全面的に変更し、ルートの計測がより正確になりました。

3. ルート案内には徒歩時間も考慮
上記とも関連しますが、今回は出発地と目的地で案内する最寄りの駅やバス停までの徒歩時間もルートの時間として計算していますので、今までよりももっと現実味のある案内になりました。なお、徒歩時間は、一般的には分速 80m ですが、道路区画や信号等も考慮しなければならないので、分速 60m で計算しています。

4. Twitter/Facebook/foursquare への同時投稿
以前から Twitter と Facebook への投稿はできましたが、今回は Facebook/foursquare でのチェックインも可能にしております。

5. Facebook/foursquare でのチェックインは予め ID があるのでそのまま投稿
チェックインを行うには通常、その場所(大抵は現在地)から検索して、該当の場所にチェックインという流れですが、データには予め該当するチェックイン ID を記録しているので、検索せずにそのままチェックインできます。

6. スポットデータを約 900 件へ増加
このウェブサービスで使用しているデータは、上述したように、Google Maps のマイマップ機能を使って、ひとつひとつピンを立て、そのピンに様々な情報を記録し、データベース代わりとして使っています。このピンを今回約 900 件へと増加させました。

7. Android 4 での GPS 対応
以前は iOS 端末と Android 2.x 系でのみ有効だった GPS 機能を、今回は Android 4 にも対応させました。


京都での観光の際に、お役に立てたら幸いです。
京巡りガイド

1/24/2013

Sleipnir 4.0 でツイートできそうなのにどれを押しても無反応の場合の対処

Sleipnir 4.0 for Mac がリリースされましたね!
Web ブラウザ Sleipnir 4 for Mac - アドレスバーすら取り払った究極の先端的ウェブブラウザ

アドレスバーを取り払うというある意味賭けに出ましたが、使う内に慣れるような気はします。


URL を表示させたい場合は、上の画像のドメインが表示されている部分をクリックすると、表示されます。


元ブラウザ開発テスタのぼくの血が、久しぶりに騒ぐ現象に出会いました。。

さて、この Sleipnir の左上に、矢印のアイコンが表示されています。それを押すと、ツイートできるような画面が表示されます。が、できないという現象です。ツイートはおろか、キャンセルもできない、ブックマークを押そうとしてもダメ、他のタブを開こうとしても無反応でした。これを Twitter で問いかけたところ、開発担当の方とやりとりすることができました。現象を説明していくと、どうやら以前のバージョンでの設定が残っていたらしく、これが邪魔していたようです。教えていただいた以下の要領で解決しました。

  1. 一度 Sleipnir を落とす
  2. ターミナルで「defaults delete jp.co.fenrir.sleipnir kTwitterUsername」を実行する
  3. Sleipnir を再起動する


https://twitter.com/fenrir_iphone/status/294370681766961152

この現象で困ってる方は、是非試してみてください。

12/29/2012

CSS3 によるローディングアニメーションを生成する jQuery プラグイン jquery.cssloading.js をリリースしました

CSS3 によるローディングアニメーションを生成する jQuery プラグインを作ってみました。iOS や Android といった、スマートフォン用のプラグインという位置づけです。cssloading() でアニメーション開始、stopcssloading() でアニメーション停止を行います。アニメーションの形やスピードなどは、プロパティを与えて設定します。
GitHub: jquery.cssloading.js

☆確認環境
iOS/Android

☆プロパティ一覧
  • type:アニメーションの形(dot/line/square/block/eddy)
  • width:表示されるアニメーションのサイズ(数値)
  • color:色(CSSで定義できる値)
  • size:表示されるひとつひとつのサイズ(数値)
  • items:表示されるアイテムの数(数値、「type」が「dot」の場合は円を構成する数、それ以外は1行の数)
  • speed:アニメーションのスピード(ミリ秒)
  • clockwise:右回りか左回りか(「true」が右回り、「false」が左回り)
  • direction:アニメーションを行う起点の方向(「left」「right」「top」「bottom」)
  • shape:表示されるひとつひとつの形(「circle」「square」)

☆使用できるプロパティの種類
  • dot:direction/shape以外
  • line:width/clockwise以外、「direction」は「left」または「right」
  • square:width/direction以外
  • block:width/clockwise以外
  • eddy:width/direction以外

☆ファイルの読み込み
<script type='text/javascript' src='http://code.jquery.com/jquery-latest.js'></script>
<script type='text/javascript' src='jquery.cssloading.min.js'></script>


☆html
<button>Play/Stop</button>
<div id='loading'></div>


☆JavaScript(dot)
// 開始
var option = {
  type: 'dot',
  width: 100,
  color: 'rgba(0, 102, 255, .9)',
  size: 3,
  items: 30,
  speed: 1000,
  clockwise: false
};
$('#loading').cssloading(option);

// 終了
$('#loading').stopcssloading();


☆結果
flugel.bizでご確認ください。


☆JavaScript(line)
// 開始
var option = {
  type: 'line',
  color: 'rgba(255, 255, 255, .9)',
  size: 5,
  items: 10,
  speed: 1000,
  direction: 'left',
  shape: 'square'
};
$('#loading').cssloading(option);

// 終了
$('#loading').stopcssloading();


☆結果
flugel.bizでご確認ください。

その他のサンプルは jquery.cssloading.js | Archives | Flügel にて公開しています。

12/07/2012

jquery.twitter.widget.js をリリースしました

Twitter のウィジェットを仕事で使うことになったんですが、Twitter API が 1.1 になったので、既存のウィジェットを使うと 来年 3 月 5 日以降サポートがされなくなる らしいのです。そこで、本家のウィジェット も新しくできたらしいので見てみたら、カスタマイズしづらいって思ったので、その案件専用のウィジェットを作りました。でもこれを汎用的にしておくと、他の案件でも使えるかもしれないし、これを使って幸せになる人もいるかもしれないので、jQuery プラグインとして作りました。

wings1685/jquery.twitter.widget.js


【使い方】
ダウンロード後(必要であれば解凍後)に生成された「jquery.twitter.widget.min.js」をhtmlに指定します。
<script type='text/javascript' src='http://code.jquery.com/jquery-latest.js'></script>
<script type='text/javascript' src='jquery.twitter.widget.min.js'></script>
また、生成された「twitter.php」をどこかのディレクトリにアップロードします。ここではサンプルとして、「/api/」にアップします。


【機能詳細】
「$(selector).twitterWidget()」でターゲットとするTwitterユーザのツイートを取得し、表示します。表示する内容やツイートを表示する速さなどはプロパティを設定することで変えられます。

プロパティ一覧
  • screen_name:対象とするTwitterアカウント名
  • count:最大表示件数(最大200件)
  • speed:ツイートを表示していくスピード(秒)
  • exclude_replies:リプライのツイートを表示するかどうか(「true」で排除、「false」で表示)
  • include_rts:リツイートを表示するかどうか(trueで表示、falseで排除)
  • dateformat:日付のフォーマット(「Y年M月D日 h時m分s秒」など)
  • path:「twitter.php」までのパス(「./api/」など)
  • src:表示する部分のソース
  • src.header:ヘッダ部分
  • src.body:本体部分
  • src.footer:フッタ部分
  • src.reply:リプライ部分
  • src.retweet:リツイート部分
  • src.favorite:お気に入り部分

src内で指定できる予約文字列
  • $icon$:アイコン(a要素で囲まれたimg要素として書き出します)
  • $screen_name$:アカウント名(a要素で囲まれて書き出します)
  • $name$:表示名(a要素で囲まれて書き出します)
  • $description$:プロファイル文章(Twitterの設定で「URL」を指定している場合はこれも書き出します)
  • $text$:ツイート文章
  • $created_at$:日付(a要素で囲まれて書き出します)
  • $logo$:ロゴ(ツイッターロゴをa要素で囲まれたimg要素として書き出します)
  • $reply$:リプライアクション(「src.reply」で指定していればこの内容で書き出します)
  • $retweet$:リツイートアクション(「src.retweet」で指定していればこの内容で書き出します)
  • $favorite$:お気に入りアクション(「src.favorite」で指定していればこの内容で書き出します)
  • $action$:上記の「$reply$」「$retweet$」「$favorite$」をまとめて書き出します
※「src.header」「src.body」「src.footer」で指定できる予約文字列です。
必ず「$」で囲んでください。



【使用例】
ヘッダは「tw_header」、本体は「tw_body」、フッタは「tw_footer」というクラスを持ったdiv要素の中に書き出されます。
任意で指定したソースで書き出されるので、CSSでお好みのスタイルを付けてください。

html:
<div id='twitter'></div>

JavaScript:
サンプル1
ヘッダとフッタなし、リプライ等のアクションはテキスト表記、スピードが5秒ごとのサンプルです。
var option = {
  screen_name: 'wings1685',
  speed: 5,
  dateformat: 'Y/M/D h:m:s',
  path: './api/',
  src: {
    body: "<div class='tw'><span class='tw_text'>$text$</span> <span class='tw_date'>$created_at$</span><div>$reply$$retweet$$favorite$</div></div>",
    reply: 'Re:',
    retweet: 'RT',
    favorite: '★'
  }
};
$('#twitter').twitterWidget(option);


サンプル2
ヘッダとフッタあり、リプライ等のアクションは画像指定、スピードが10秒ごと、リプライのツイートなし、リツイートなしのサンプルです。
var option = {
  screen_name: 'wings1685',
  speed: 10,
  exclude_replies: true,
  include_rts: false,
  dateformat: 'Y年M月D日 h時m分s秒',
  path: './api/',
  src: {
    header: "<div class='clearfix'><strong>$icon$</strong><span>$screen_name$</span><span>($name$)</span></div><p>$description$</p>",
    body: "<div class='tw'><span class='tw_text'>$text$</span> <span class='tw_date'>$created_at$</span><div>$action$</div></div>",
    footer: "<div class='tw'>$logo$<span>Twitter</span></div>",
    reply: "<img src='./reply.png' alt='' title='' />",
    retweet: "<img src='./retweet.png' alt='' title='' />",
    favorite: "<img src='./favorite.png' alt='' title='' />"
  }
};
$('#twitter').twitterWidget(option);


【サンプルソース】
ひとつのhtmlにまとめた例をサンプルソースをとして以下に挙げます。
<!DOCTYPE HTML>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>jquery.twitter.widget.js</title>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script src="./js/jquery.twitter.widget.min.js"></script>
  <script>
    $(function() {
      var option = {
        screen_name: 'wings1685',
        speed: 10,
        exclude_replies: true,
        include_rts: false,
        dateformat: 'Y年M月D日 h時m分s秒',
        path: './api/',
        src: {
          header: "<div class='clearfix'><strong>$icon$</strong><span>$screen_name$</span><span>($name$)</span></div><p>$description$</p>",
          body: "<div class='tw'><span class='tw_text'>$text$</span> <span class='tw_date'>$created_at$</span><div>$action$</div></div>",
          footer: "<div class='clearfix'>$logo$<span>Twitter</span></div>",
          reply: "<img src='./reply.png' alt='' title='' />",
          retweet: "<img src='./retweet.png' alt='' title='' />",
          favorite: "<img src='./favorite.png' alt='' title='' />"
        }
      };
      $('#twitter').twitterWidget(option);
    });
  </script>
</head>
<body">
  <div id="twitter"></div>
</body>
</html>


【確認環境】
jquery.twitter.widget.js は下記のブラウザでお使いいただけます。
  • Chrome
  • Safari
  • Firefox
  • Opera
  • Internet Explorer 7 以降

【実行結果】
flugel.biz でご確認ください。

10/30/2012

localStorage へのデータ保存・読み込みに json を使う

localStorage を使う場面が増えてきたように思うけど、localStorage には Object をそのまま保存できないので、色々なキーで保存・読み込みをしないといけなくなり、相当めんどくさいです。間違えやすくもなりますしね。でも、json 形式で保存すると、そのままの形式で保存できるし、間違いもグッと減るし、なにより楽でいいですね。

【保存する場合】
var opt = {
  browser: 'Chrome',
  OS: 'Mac OS 10.8.2'
};
localStorage.setItem('data', JSON.stringify(opt));

【読み込む場合】
var data = JSON.parse(localStorage.getItem('data'));
console.log(data);

【結果】

Search Capsule をリリースしました。

Google 検索や iTunes 検索をはじめとする様々なウェブサービスの検索結果ページへ、この「SearchCapsule」1つでジャンプできる Chrome の機能拡張をリリースしました。既存の60種に加え、簡単な操作でウェブサービスの追加もできます。
※以前「goSearchForYou」としてリリースしていた拡張のリニューアルです。

Chrome ウェブストア - SearchCapsule

インストール後、F12 もしくは Alt キーと一緒にクリックすると、検索ボックスが表示されます。


このウェブサービスを選ぶセレクトボックスは、ただサービスを表示するだけではありません。例えば、SearchCapsuleで「YouTube 動画検索」を行ったとします。すると、その直後からは「YouTube 動画検索」が一番上に表示されます。


これは検索を行う度、独自にポイントを計算しているので、よく使うサービスほど上位に表示されるようになります。この自動並び替えを使いたくない場合は、オプション画面の「使用頻度による自動並び替えを有効にする」のチェックを外します。外している間も計算自体は継続して行いますので、再びチェックしたときには、過去のポイントが全て反映されます。



SearchCapsuleを呼び出したり引っ込めたりするには、ショートカットキー(以下の通り)を使います。
-開く時(どちらもオプション画面で変更可)
--F1~F12 キー
--Shift / Alt / Command(Mac) / Ctrl(Win) キーを押しながらクリック
-閉じる時
--検索ボックスから離れたところをクリック(オプション画面で設定可)
--開く時のショートカットキー(オプション画面で設定可)

ショートカットキーを変更したい場合は、オプション画面で変更できます。



なお、テキストボックスに文字が入っている場合、セレクトボックスの項目を変更することで、検索を開始します。この自動発動をやめたい場合は、オプション画面の「ウェブサービスの切り替えでの自動検索を有効にする」のチェックを外します。


方向キーの「↑」と「Return キー」もしくは「Enter キー」を一緒に押して検索すると、新規タブで開きます。



各ウェブサービスの編集モードも備えています。「項目の非表示」「項目の並び替え」「名前の編集」「項目の削除」の操作をすることができます。


チェックを外すと、セレクトボックス内に表示されなくなります。もちろん、チェックを再び入れると、表示されるようになります。



項目名をドラッグ&ドロップすることにより、並び替えることができます。



鉛筆ボタンを押すことで、名前の変更ができます。



ゴミ箱ボタンを押すことで、項目を削除できます。削除した項目の復帰はできません。



オプション画面で「表示時にショートカットキーを押すことで非表示にする」のチェックを外している場合、開く時のキー(初期値は F12)を文字が選択された状態で押すと、入力ボックスに選択した文字が挿入されます。



初期値として定義されているウェブサービスは以下の通りです。
Google/Google[画像]/Google[地図]/YouTubeGoogle[ニュース]/Google[ブログ]/Google[書籍]/Google[ショッピング]/iTunesストア/Wikipedia/amazon/駅探乗り換え/えきから時刻表/Chromeウェブストア/livedoor[天気]/Yahoo![ニュース]/Yahoo![ショッピング]/Yahoo![オークション]/Yahoo![ファイナンス]/Yahoo![知恵袋]/OKWave/Goo[郵便番号]/Goo[国語辞書]/Goo[英和辞書]/Goo[和英辞書]/Goo[車]/Goo[バイク]/食べログ/ぐるなび/Twitter/Facebook/tumblr./flickr/Pinterest/github/ニコニコ動画/Ustream/価格.com/ヨドバシカメラ/ビックカメラ/ベルメゾン/ニッセン/セシール/楽天[市場]/楽天[オークション]/楽天[トラベル]/じゃらん/JTB/はてな[ブックマーク]/はてな[ダイアリー]/HOMES/チケットぴあ/映画.com/QLife/クックパッド/素材辞典/Cosmeet/リクナビNEXT/リクルート進学ネット/マイナビバイト

ウェブサービスを追加する方法はとても簡単です。
追加したいウェブサービスのウェブページを開き、対象とするテキストボックスでクリックした上で、F9 キー(オプション画面で変更可)を押します。すると、追加画面が表示されるので、項目名を入力し、「追加」ボタンを押します。追加できるウェブサービスは、<form>要素内にテキストボックスを持ち、実行先がJavaScriptでなく、文字コードがUTF-8・Shift_JIS・EUC-JPのどれかの場合です。


追加したウェブサービスは、一番下に追加されます。


追加済みのウェブサービスの場合は、項目名を変更することができます。


また、他のChromeと設定情報を共有したい場合は、共有元のChromeでオプション画面を開き、「エクスポート」を押してファイルを保存します。次に、共有先のChromeでオプション画面を開き、ファイルを選択して「インポート」を押すと、共有元の情報に上書きされます。Chrome間での同期はできません。


Chrome ウェブストア - SearchCapsule