google
SearchEngine

I'm feeling lucky を使いやすく改造

I'm feeling luckyは素晴らしい

昔はGoogle検索には I'm feeling lucky のボタンがあったけどね。愛されなかったから消えてった。

でも機能自体はまだあるし、使い方によってはだいぶ良い機能だと思うんすよ。
実際に僕はデフォルトの検索エンジンにしてる
これを使って数日しか経ってないけどね

I'm feeling lucky の悪いところは、自分が求めていないページに飛んでしまった場合、
もう一度検索単語を入力しないといけない点。これが理由でみんなに嫌われる。

逆にいいところといえば、無駄なクリックを省けること。
余談だが、実は I'm feeling lucky は、あんまり検索単語との関連性がなさそうなページがトップヒットのとき、
そのページにリダイレクトせずに検索結果一覧を表示する。かしこい。

改造案

さっきも言ったとおり、

[ 検索 ] -(I'm feeling lucky)-> [ なんかのページ ] -(ブラウザバック)-> [ どこか ]

ってなるのがイラツキポイント。いい感じのサイトが開けなければ当然ブラウザバックしたくなるけど、
ブラウザバックしてしまうと、もう一度検索文字列を打って、
さらに使用検索エンジンも手動で買えなければいけない。手間が多すぎる。

でも、こんなかんじならいいよね:

[ 検索 ] -(I'm feeling lucky)-> [ なんかのページ ] -(ブラウザバック)-> [ 検索結果一覧 ]

これなら、もし仮に自分が欲しい情報じゃないものがヒットしても、ブラウザバックしてしまえばいいからストレスが貯まらない。
パソコンに慣れてない人ならまだしも、エンジニアならブラウザバックなんて息をするように出来るでしょう

じゃあ、I'm feeling luckyをしたときに、historyに検索結果一覧のページを追加しといてあげればいい。

となれば、それを解決するようなchrome拡張を作るか、または検索エンジンをラップするようなwebページをつくってしまえばいい。
今回は後者の方法をとった

完成品

こんな感じになる:https://youtu.be/YlytwnEhJos

https://ahyahya.github.io/Feeling-Lucky-Wrap#%s

↑これが実際の完成品になる。

導入は、ブラウザの設定から、規定の検索エンジンに上のアドレスを追加するだけ。

chromeの場合は、chromeの設定(chrome://settings/searchEngines)から、検索エンジンの追加をして規定にする。

どうなってるの

やってることは多くない。

例えば、入力が[検索文字列]だったとき、つまり%s=検索文字列 のときのことを考えたい。

簡略化のため、以降

A = https://ahyahya.github.io/Feeling-Lucky-Wrap#検索文字列
B = https://ahyahya.github.io/Feeling-Lucky-Wrap/redirect#検索文字列
C = http://www.google.com/search?q=検索文字列
D = http://www.google.com/search?hl=ja&btnI=I%27m+Feeling+Lucky&q=検索文字列

として説明する。

規定の検索エンジンを適切に設定できていれば、検索するとAが開かれる。

Aでは、localStorageに、isRedirect = true のようにセットし、Bへリダイレクトさせる。理由は後述

Bは、CあるいはDへとリダイレクトさせるページである。localStorageのisRedirectがtrueの場合は、履歴に自分自身を追加しCへリダイレクト、falseの場合はDへリダイレクトする。
リダイレクトする前にisRedirectはfalseに変えておく

なぜこのようにisRedirectを設定しているかというと、Bがブラウザバックで開かれてたのかどうかを判定する必要があるからである。
このように実装すれば、BがAからのリダイレクトで開かれているのか、又はそれ以外の方法で開かれているのかがわかる。

ブラウザバックでページに訪問されたかどうかって、こういう判定方法以外にあるんですかね?