Knowledge Base

お知らせや身辺のことを綴っています。

技術者にとって代えがたき至高の検索ツールとしての DuckDuckGo: !Bangs のすすめ

はじめに

最近はDuckDuckGoという検索エンジンを使っています。DuckDuckGoは、Tor Browserをはじめとして、Linux MintやMidoriなどのオープンソースプロジェクトの既定の検索エンジンとして設定されていることが多いので、ご存じの方も多いと思います。

一方筆者はというと、こういった経緯から名前こそ耳にしたことはあるけれど、それまで実際に常用したことはなかったというところです。そのため、どういった機能や、利点があるのかといった実践的な事柄まで知る由はありませんでした。しかし、実際にこの数カ月間の検索をDuckDuckGoに委ねてきて、大変便利な検索エンジンだと感じるようになりました。

本記事のねらい

この理由を含め、本記事は読者の方々にDuckDuckGoがどう便利なのかについて、検索エンジン自体の歴史を踏まえつつ、DuckDuckGoの具体的な機能である「!Bangs」に触れ、これがどのように、そしてなぜエンジニアの人々にとって有用であるのかということについて述べます。

DuckDuckGoとは?

DuckDuckGoは、2008年に設立された利用者のプライバシーやインターネット上での匿名性を保護する検索エンジンです。検索エンジンには、よく知られたものであれば、Googleのようなものがあります。

既存の検索エンジンの問題点

こうしたGoogleなどの検索エンジンは確かに強力ですが、時には利用者が望まないところまでプライバシーを侵害してしまうことがあります。たとえば、うっかりログインした状態で人には見られたくないものを検索してしまった場合、それを検索した事実がアカウントの履歴に残ってしまいます。

位置情報は本当に必要か?

そして最近では、位置情報を使って近隣の利用可能な商業施設やサービスを優先的に表示してくることもあるでしょう。これは確かに便利かもしれませんが、実際に何かお店を探している時だけ位置情報を取得してもらいたいものです。こうした点は、現状Googleのような検索エンジンを使っている限り、検索エンジンのベンダーに利用者がいつ、どこで、そして実際にどのウェブサイトに訪問したのかについて知られたり、記録されたりする可能性があることを示唆します。そうして記録されたデータは、サービスの利用規約を根拠に我々の知らぬうちに利用されることもあるでしょう。

DuckDuckGoが与えた解決

DuckDuckGoは、こうした大手検索エンジンのように、ユーザーのプライバシーを損なわないことを主張しています。たとえば、ユーザーが実際にどのウェブサイトに訪問したのかを知ろうとしたり、記録したりすることはないことを謳っています。

実際に、この検索エンジンを用いる限り、背後に検索ワードを保存するような仕組みはありませんし、位置情報を求められるようなこともありません。公式が主張するように、DuckDuckGoでの検索結果は、個人化(パーソナライズド)されておらず、自分が見たい情報しか見えなくなるというフィルターバブルが未然に防がれているのではないかと考えています。

存続性について

この検索エンジンの設立と同時に、同名の法人が設立されました。現在この会社は、その他ウェブサイトのトラッカーをブロックするためのブラウザ拡張、メールアドレス保護、アプリのトラッキングから守る製品なども開発しており、今後もDuckDuckGoの継続的な経営は見込まれるのではないでしょうか。

DuckDuckGo、特に!Bangsは便利

DuckDuckGoは、ユーザーのプライバシー保護に関して秀でていますが、Web検索という単一の観点では検索結果が大手の検索エンジンとは異なるという問題があります。しかし、DuckDuckGoには!Bangsという、必要な時に特定のサイトの検索機能を拝借するための、非常に強力な機能があります。また、この!Bangsを使用すると、この問題も十分解決可能です。

"Say hello to bangs."
“Say hello to bangs.” (https://duckduckgo.com/bangs より)

本章では圧倒的な強さを誇るこの!Bangsについて解説したうえで、情報の汚濁という問題に打ち勝つための手段として、DuckDuckGoを使用することがエンジニアにとっても非常に便利であるということについて述べます。

!Bangsとは

!Bangsは、! (Bangといいます)という記号を検索ワードに入れて、あとにサイトに紐づけされたキーワードを続けることによって、さまざまなウェブサイトの検索機能を拝借する機能です。これを使うと様々な種類の辞書を提供する「コトバンク」や、英単語やフレーズを調べることができる「英辞郎」、またエンジニアの人にとって便利なリファレンスを直接検索できる場合があります。また、一時的に検索結果をGoogleに切り替えるというような使い方もできるようになります。

!Bangsを使う

fla という文字列を含む!Bangsを検索している画像
DuckDuckGo !Bangsでは使用できる!Bangを検索することができます

物は試しです。実際に、!Bangsを使ってみましょう。実際に、「こんなものまで?」と思えるような様々なショートカットがありますが、本記事では以下の表の上3つに限って紹介することにします。なお、ここで紹介したもの以外のショートカットについては、「DuckDuckGo !Bangs」で自由に検索することもできます。それだけでなく、自分の好きなウェブサイトの!Bangsを提出することができるような仕組みにもなっています。ぜひ調べてみてください!

!Bangsショートカット
!py3Python3 Documentation
!eijirou英辞郎 on the WEB
!gGoogle
!kotobankコトバンク
!ldLongman Dictionary of Contemporary English
!cppcppreference.com
!mdnMDN Web Docs
!lpmLinux Man Page

“!py3” ― Pythonの言語仕様を検索する

DuckDuckGoには!py3という!Bangsがあります。これの後に検索語句を続けて !py3 itertools accumulate のように検索してみましょう。すると、Pythonのリファレンスの検索ページで検索しているのと同様の状態になりました。!Bangで検索した単語に関しては、通常のDuckDuckGoの検索結果のページへ誘導されることなく、直接そのサイトにリダイレクトされることが大きな特徴となっています。

“!eijirou” ― 英辞郎で調べる

他には、!eijirouという!Bangsもあります。このショートカットは、英辞郎のウェブサイトで英単語やフレーズを調べることができるショートカットです。実際に !eijirou paranoia という検索フレーズを入力すると、いかなるサイトを経由することなく、ほんの少しの手間で単語を調べられるようになりました。

“!g” ― Googleで検索する

もちろん、Google検索の!Bangsもあります。!g 近所のドトールコーヒー のようにすると、位置情報に基づいた近所のドトールを検索できます。このように、Google検索の利点とDuckDuckGo検索のいいとこ取りもできるのです。

こうしたファジーな検索において、Googleに勝るものはありません。このように、DuckDuckGoは!Bangsによって、もし既定の検索エンジンをDuckDuckGoに切り替えたとしても、なるべく不便をきたさないように設計されています。また、環境を新たにした時や、共用のパソコンで作業しているときも、この便利さを享受できるようになります。

エンジニアにとっての!Bangs

私が!Bangsを支援する理由は、必然的にすでに見当をつけているサイト内で直接検索することになるので、結果、すぐに一次情報に当たれるようになるためです。

プログラミングに調べものはつきものです。例えば、あるシステムの仕様書や、ライブラリーの使い方などを知りたくなったとしましょう。この場合、普通はできる限り早くウェブ上の文章にあたって、正確な知識を得たいと思うでしょう。しかし、近年のインターネットにおいて、自分が本当に知りたい情報を見つけ出すまでの道のりは険しく、苦痛以外の何物でもありません。

というのも、例えば、「何か情報を得られるだろう」という仮定の下で、Googleで調べて真っ先に得た情報が、どこかのプログラミングスクールが提供する二次情報であったり、どこの馬の骨だかもわからない人の書いたポエムのような記事だったりするわけです。それらすべてが役に立たないというわけではないですが、こうした情報は、必ずしも正確とは言えないかもしれないし、そうして調べ得た情報は今は正確でも、1年後、5年後、そして10年後と、確かに正しい情報が存在する保証はどこにもないということにあります。まして、気持ちを綴ったポエムならその場では役立つとはいえないものもあるでしょう。したがって、あまたあるウェブ上の情報から、的確かつ正確な知識を得ることはとても重要なのです。

筆者はウェブ上の正しい情報にあたるまでの処理を高速化しようと、幾多の試みを行ってきました。ここではざっくりとそのいくつかを紹介しますが、いずれもブラウザの機能やGoogleアカウントの有無に依存するという問題がありました。こうした問題を解決するものもDuckDuckGoであると考えています。

これまでやってきたこと

よく使うサイトをブックマークに入れる

まずは原始的ですが、よく使うサイトのトップページをブックマークに入れる方法です。この方法では、サイトを見失わずにすみます。しかし、サイトを訪問して、そこからサイトマップを辿っていって、紙の辞書を引くようにインデックスを見て情報を探しに行くのは検索するのと同様手間がかかります。

ブラウザの検索エンジンの設定をいじる

この方法では、Chromeにおいて検索エンジンを編集できる機能を応用します。これを設定すると、ブラウザのアドレスバーから直接そのサイト内を検索できるようになります。以下の画像は、qwとアドレスバーにタイプした後にそのまま検索語句を続けると、Googleのサイト内が発動するようにしている設定をキャプチャしたものです。

site:<URL> <検索語句> というフォーマットで検索する設定

これを利用して、例えば以下のようにすると、PythonのリファレンスをGoogleのサイト内検索を通じて参照できるようになります。

https://www.google.com/search?q=site%3Ahttps%3A%2F%2Fdocs.python.org+%s

実際の検索結果は以下です。実際にPythonのドキュメントに絞って検索結果が表示されるようになりました。ここで、ブラウザのアドレスバーにフォーカスを持っていくキーボードショートカットは Ctrl+L なので、実際にリンクをクリックする以外は最低限のマウス操作で済んでいるうえ、必要十分な情報に当たれていることが分かります。

しかし、この検索エンジン設定を用いた方法にも問題点があります。いちいちその設定を自分で設定しなければいけないことはもちろんですが、その検索エンジンの設定は、Googleアカウントにログインしていなければ同期できず、結局不便をきたしてしまうという問題です。このように、私がDuckDuckGoを使用し始める前に思いついた、いかなる方法も何らかの欠点がありました。こうした問題を一挙に解決するものがまさにDuckDuckGoであり、私がDuckDuckGoをエンジニアの情報収集に適していると考える所以になります。

まとめ

本記事は、DuckDuckGoの!Bangsにのみ焦点を当てて、DuckDuckGoがエンジニアの情報収集にたいへん役立つということを紹介する内容でした。DuckDuckGoにはこれ以外にも技術者に便利な様々な機能やイースターエッグを有していて、便利というだけではなく遊び心のある検索エンジンだとも思います。

英語圏において、エンジニアリングの文脈でDuckDuckGoが紹介されている記事は、比較的多くみられ、これらも非常に面白いものとなっています。以下に参考記事としてリンクを記しておくので、そちらも是非ご覧になると合わせてお楽しみいただけると思います。

読者の方が、DuckDuckGoの虜になることを願って、本記事の締めくくりといたします。ここまで読んでくださりありがとうございました。

参考記事