習うよりググれ

これはKCS AdventCalendar2019 5日目の記事です

←4日目 | 6日目→

 

こんにちは、Google信者なのにiPad Proを愛用している、1年のFastriver(@fastriver_org)です。最近私も人に教える機会が増えてきたのですが、初学者が何かを勉強していくに当たって手に入れるべきスキルの一つを紹介していこうと思います。

“””検索力”””です。

話題としては全ての分野に通ずると考えていますが、以下ではプログラミングを一例として話します。適宜何かに置き換えて読んでみてください。

「検索力」is 何

プログラミングにおいて、暗記は特に必要ありません。英単語のテストは一言一句覚えなければならないですが、コードを書くのに全ての関数名を覚えている意味はないです(断言)。大切となってくるのはコードを書きたいときに「その機能が存在することを知っている」ことです。機能の存在を認知していなければ思考に入ることすらできませんが、存在さえ知っていれば後はどうにかして書き方を調べるだけになります。そして、そこから目的のコードに辿り着くことができる力、これこそが「検索力」であります。検索力を高めることによって、暗記をすることなく(=自分の脳の限界に達することなく)知識の輪を広げることができるわけです。

では目的にいち早くたどり着くにはどうすればよいでしょうか?

1.人に聞く

もし、あなたの周りにその分野の強者つよつよがいた場合はこの手段が使えます。検索力が高くない場合はこの方法が最速であることが多いです。周りの方はソースコードを見ただけで魔法のように答えを示してくれるでしょう。

問題点

あなたは聞いた人の時間を奪っています。講習などで教えてもらっている場合は良いですが、いつまでもそばに人がいるわけではありません。また、検索力を高めていくと他の方法のほうが速くなります(聞かれた人もググってることが多い)。

そこで、一人ぼっちでも調べることができるツールが存在します。

2.Google検索(Yahoo!も許す)(BingはNG)

evolving_google_identity_2x1.jpg

(引用元: https://design.google/library/evolving-google-identity/)

皆さん「Google検索」を知っているでしょうか?

知らない人が多いかもしれませんが、なんと真ん中の白四角の部分に言葉を入力するだけで、それに関連したWebサイトや写真、動画などをネット上から検索してくれるサービスなんです!!!

昨今「Google検索はゴミ」「オワコン」などの風潮も流れていますが、適切な使い方をすれば現在でも非常に有用なツールです。活用していきましょう。

使い方1: そのままコピペ

コードを書いていてRuntime Errorが出たときなどに、英語が読めないどうすれば解決できるのか分からないときにはエラーメッセージをそのままコピペして検索すると、同じ悩みを持つ人とその解決策を持つ人を見つけられることが多いです(Stack OverflowとかGitHub Issueとかが引っかかる)。注意点としては、コピペするエラーメッセージの中に自分で定義した変数名などが入っていると全文一致の確率が下がってしまうということです。そこはうまく工夫しましょう。

使い方2: AND検索乱れ撃ち

検索において最も重要なのは検索ワードです。しかし往々にして、検索したいものは分かるが名前がわからない/検索したいものが何なのか分からない という状況が生まれます。例えば

 

Untitled

この右下のボタンを知りたいと思った時にも名前(Floating Action Button)を知らなければ困ってしまいます。このような時には記憶に存在する関連したワードをAND検索していくと辿り着くことができる可能性があります。見つからなくてもN回くらいワードを変えてやり直してみましょう。

Annotation 2019-11-28 141944割とすぐ見つかった

逆に言えば、固有の名前を知っていれば検索の速度はかなりあがります。多く使う機能などは検索で引っかかりやすい名前などを覚えておくと便利です。

使い方3: 検索演算子

Google検索は検索ワードをひたすら並べるAND検索だけでなく、豊富な演算子での検索が可能です。詳しくはリンク先を見てください。

ウェブ検索の精度を高める – Google 検索 ヘルプ
https://support.google.com/websearch/answer/2466433?hl=ja

 

Google検索を使いこなすための便利な29のテクニック

https://blog.hubspot.jp/update-how-to-search-in-google-x-advanced-google-search-tips-0-0

 

この中で僕がよく使うものを軽く紹介します。

・NOT検索

「C#のLINQについて調べたいのにアイドルグループが引っかかる…」などの時には特定のワードを除外するNOT検索が使えます。「LINQ -アイドル」のように除外したいワードにハイフンをつけるだけです。

・filetype:

ネットに転がっているのはWebページだけではありません。冊子などはPDFで公開されていることが多いですが、特定のファイル形式のみを検索したいときは「[検索ワード] filetype:pdf」とするとPDFのみが引っかかります。

使い方4: 多言語検索

ネット上の日本語の記事というのは、ほんの一握りでしかありません。海外で開発された技術などではなおさら外国語での記事が圧倒的に多いです。

https://www.forbes.com/sites/niallmccarthy/2018/07/27/how-languages-used-online-compare-to-real-life-infographic/#4e586c952c7c 日本語記事は全ページの3.8%しかカバーしていない

日本語で見つからない場合は、英語ないしはその技術の母国語で検索しましょう。その言語のワードのみの羅列だけでも大体フィルタリングされて結果が出ますが、検索画面の 設定 > 言語(Languages) から検索言語を変えることもできます(この場合全ての表記が変わるので注意)。

Annotation 2019-12-02 140651

Google翻訳を使うのも良いです。しかし多分原文のほうが読みやすいと思います…

使い方5: 期間指定検索

インターネットの記事は日々更新されていきます。ソフトウェアもアップデートがかかっていきますが、「昔の特定のものだけ」「最新バージョンだけ」調べたいということもしばしばおこります。そのときは検索対象の期間指定をすると目的により近い検索結果を得られます。

Annotation 2019-11-29 091802

しかし、如何にインターネットの情報が更新されているといっても、誰かが記事を書かなければ検索には出てこないので、最先端の情報などは探しにくいです(事件を起こせばものの数時間で検索汚染は始まるが…)。そこで、リアルタイムな情報に最適なソーシャルメディアがあります。

3.Twitter

みんな大好き青い鳥です。

Tweet自体は140字以内なので情報量としては少ないですが、分野の有力者の呟きや、勉強会の様子などを見ると最最新な情報を手に入れることができます。Twitterでコミュニティを形成している所も少なくないので、チェックないしは参加すると割と有益です(僕もXamarinをやるときに #JXUG さんによくお世話になってました)。

アカウントを持っていない人(作れ)や、多少細かい検索がしたい人はYahoo!リアルタイム検索(https://search.yahoo.co.jp/realtime)もおすすめです(ユーザー名を検索結果から除外してくれたりするらしい)。

あとTwitterにも一応検索演算子はあるらしいです。

https://developer.twitter.com/en/docs/tweets/search/guides/standard-operators

4. 公式ドキュメントを読む

これが真理です。真面目な開発元であれば公式ドキュメントを読むだけでほとんどが解決されます。慣れないうちはQiitaとかに落ちている誰かが噛み砕いてくれた記事でも良いですが、ググって公式が引っかかったら積極的にこっちを見るようにしましょう。OSSであればGitHubのREADMEかIssueに大切なことが上がっているので参照するとよいと思います。

公式ではなくとも自分がある程度信用できるサイトを予め知っておく(低質なサイトを除去する)ことも大切です。検索結果を吟味することで精度もぐっとあがります。

5.自分で書く

ネットの海をいくら彷徨っても見つからない?それは非常にラッキーなことですよ。もし解決策を貴方が見つけられれば唯一の情報源になれるんです!!ということで解決したらコミュニティへの貢献、そして同じ悩みを持つ人々(未来の自分を含む)のために記事を投稿しましょう。既に解決策が載っているものであっても、環境など異なる場合有用なので、積極的に投稿していきましょう(流石に丸写しで動いた程度だと意味ない気はするが)。

この項の詳細については、こちらで書いてあるので良ければ一読をお願いします(ロ技研ADCもよろしくね!)。

おまけ1: おすすめ拡張機能(Chrome)

Chromium以外はお帰りください。

uBlock Origin

有名広告ブロックアドオン。かなり精度が良い。サイト毎に有効/無効を設定できる。低俗な広告による精神攻撃を防げる。

検索の利便性のためには多少の犠牲は必要なのだ(Googleは広告で生きてる会社なのでブロックするのは程々にしようね!)

ゴシップサイトブロッカー

特定のドメインを検索結果から消す。c●deday.meなどのコピペ機械翻訳QAサイト、●エンジニア塾のような信頼性の低いサイトなどを踏むことによる精神攻撃を防げる。

便利。

おまけ2: 情報の信頼性について

以下は割と主観的な主張なので読み飛ばしてもいいです。

 

上は主に、目的となる情報への到達手段についての話でした。しかし、辿り着いた情報が必ずしも信頼できるとは限りません。幸いにもプログラミング界隈については信用できる情報が多く(騙す必要もあまりないし、実行すればすぐ分かる)、惑わされることはほとんどありません(バージョン違いなどでそのままだと動かないことはよくある)。ただインターネット上には間違った情報/意図的に人を騙そうとした情報が無数に存在します。その辺りのフィルタリングについて少しお話します。

1. 伝聞調・2次ソース以下は信用に値しない

よく検索に引っかかるのが、「今回、〇〇が☓☓と報道していました」や、他のサイトからそのまま文章を引っ張ってきた記事です。あくまで伝聞調であるためそのサイト/会社自身が情報ソースへの責任をあまり持っていない印象です。例え有名新聞社でも個人ブログでも2次ソース以下である場合は1次ソースを確認しましょう。面倒ならその話題は話半分に留めておくべきです。

2. 中身を読め

見出しは話題によってはただの煽りなので、本文を読みましょう。

 

とりあえずはそんなところです。

←4日目 | 6日目→