プログラミング

【エンジニアの必須スキル】ググり方のコツ!ちょっとした工夫を紹介します!

ググり方を知ってますか?

スマートフォンが発達し今や「googleで検索を行う」ということをやったことがない人はいないのではないでしょうか。

美味しいお店を知りたい、痩せたいのでジムに通いたい、旅行で有名な観光地にいきたい。など様々な場面でgoogle検索というものを利用しているのではないでしょうか。

だれもが当たり前にやっている「ググる」という行為ですが意外と奥が深いものです。

google検索で困った経験ありませんか?

例えば、友達とご飯を食べにいきたくなったとしましょう。

学生なのでお金はあんまりありません。1000円くらいのお店がいいです。でも、静かでゆっくりできるお店でご飯が食べたいので、店内がうるさいマクドナルドやファミレス、長居できない牛丼屋などは行きたくないです。時間は夜19時くらいで場所は新宿駅の南口とします。めんどくさがりやなので遠出はしたくありません。

多くの人は「新宿 南口 ディナー 安い」とか「新宿 南口 静か」とか調べるのではないでしょうか。

「新宿 南口 ディナー 安い」の検索結果

f:id:hatorihatorihatorik:20181002163406p:plain

「新宿 南口 静か」の検索結果

f:id:hatorihatorihatorik:20181002163408p:plain

検索上位にでてきたのは、Rettyやヒトサラ、ホットペーパービューティーなどの大規模なサイト。

実際にサイトに行ってみると、3000~4000円くらいの居酒屋がたくさんでてきます。全然安くありません。本当に静かかどうかもわかりません。

結局その辺をふらふらしてよさげなお店に入る。というのが一般的でしょうか。あとはこないだ行ったお店をリピートする。とか

このように自分が求める情報をゲットすることができないのはgoogleが悪いわけではありません。自分の「ググり方」が悪いのです。googleは機械です。私たちには理解できないようなものすごく高度なアルゴリズムを何人もの優秀なエンジニアが力を合わせて作っています。それでも欲しい情報は手に入りません。これが機械の限界なんです。

必要な情報を得るためには、私たちが機械に歩み寄ることが必要です。機械の特性を理解して、適切なワードを与えることで私たちが本当に必要な情報を得ることができます。

ググり力がないと話にならないエンジニアという仕事

ググり力が一番必要な仕事はエンジニアだと断言できます。なぜエンジニアはググり力が必要なのでしょうか。

ググるのは30秒、暗記するのは数週間

どの言語を使うエンジニアでもその言語の全てを理解することは実質不可能です。私自身pythonを書いたりrubyを書いたりphpを書いたり、いろいろやっているとif文やfor文の使い方がわからなくなったりするので毎回ググります。

プログラミング言語の文法を覚えておく必要は全くないです。覚える時間が無駄だと思っています。プログラミングの文法などを完璧に記憶するには数週間かかります。一方でググるのは30秒でおわります。

圧倒的にググりの効率の良さがわかります。

コードはコピペで書いた方が早い

phpでfor文が書きたくなったら「php for 文法」などと検索して、出てきたコードをコピペ。変数名などが異なってくるのでうまい感じに調節すれば簡単にfor文が完成します。暗記して、0からfor文を書けるようになったとしてもコピペの速さにはかなわないのです。

言語は新しくアップデートされている

プログラミング言語にはバージョンというものがあります。バージョンが異なるともちろんコードの書き方も異なってきます。

毎回、プログラミングを暗記をしていると新しいバージョンが出るたびに暗記し直すことになります。人が記憶できる量は限られてますので暗記に気を取られすぎていると他のことができなくなってしまいます。

ググり力をあげるために意識すべきこと

優秀なエンジニア=ググり力が高いエンジニアといっても過言ではないと思っています。ググり力を変えるだけで、1時間かかっていた仕事が5分で終わるようになったり、0からコードを書く必要があったものが、コピペで1瞬で片付くことができるようになります。

これはRailsで開発していた時に起きるエラーです。Railsをやったことがある人ならよくみるのではないでしょうか。(やったことない人もわかりやすく説明するので大丈夫です)今回は以下のエラーを例にググり方のコツをまとめて見ました。

f:id:hatorihatorihatorik:20181002163359p:plain

1. 抽象度の高いワードはなるべく使わない

ググる時に抽象度が高いワードを使ってはいけません。なぜなら検索結果がたくさんでてきてしまうからです。

例えばこのエラーで「rails syntaxerror 解決法」と調べて見ます。

「rails syntaxerror 解決法」検索結果

f:id:hatorihatorihatorik:20181002163403p:plain

それっぽいのがいくつか出てきたな〜と思いきや実はこれらの記事のなかで、このエラーを直接的に解決することができる記事はありません。

「SyntaxError」というエラーは頻繁に起こりますし、このエラーが起きる原因もいくつかあります。「SyntaxError」という単語の抽象度が高いことが原因で関係ないことまで検索結果に引っかかってしまい、必要な情報を得ることができません。

具体度が高すぎるワードは使えない

よくやりがちなのがエラー文をそのままコピペすること。最初はそれでもいいですがいつか苦しくなります!

試しに「/home/ubunts/workspace/Blog/app/views/sessions/new.html.erb:7: syntax error, unexpected ‘,’ expection &. or :: or ‘[‘ or ‘.’ …sword_confirmation, :password, class: “form-control”);@outp… …」で検索をかけて見ます。

f:id:hatorihatorihatorik:20181002163356p:plain

当然ですが検索がヒットしません。プログラミングの初心者の方は思考停止でこれをやりがちですが、この方法ではいつまでたっても解決に辿りつくことができません。

なぜならエラー文には自分固有のPCの名前、ディレクトリ名、クラス名などが含まれているからです。

ここでいうと「/home/ubunts/workspace/Blog/app/views/sessions/new.html.erb:7:」は検索しても絶対にでてきません。ディレクトリの階層はあなた固有の情報であり、他の人はこれが異なっているからです。

「new.html.erb:7:」もnew.html.erbの7行目という意味ですが、Enter1つでこの値も変わってしまうので検索にかけてはいけません。

抽象度が高いワードと具体度が高いワードを組み合わせて検索する

今回の例ではどんなキーワードで探すのがいいのでしょうか。これは人それぞれではありますが、一例を紹介しましょう。

今回のエラーは「SessionControllerのnewアクションで発生しているSyntaxErrorです。」さらに「unexpected ‘,’ expection &. or :: or ‘[‘ or ‘.’ 」という情報がこのエラーのキーになるポイントです。

私が選んだ検索ワードは「syntax error unexpected expection」です。

SyntaxErrorというこのエラーの課題となっている抽象ワードとunexpected やexpectionの固有のワードを組み合わせることでエラーの絞り込みを行なっています。

「syntax error unexpected expection」検索結果

f:id:hatorihatorihatorik:20181002163442p:plain

2つ目にいいサイトが見つかりました。

f:id:hatorihatorihatorik:20181002163439p:plain

ググり力をさらにあげる裏技

これまではググるときに必要なワード選びやそれに到るまでの考え方を紹介してきました。しかしこれにも限界があると思っています。ここではさらに検索の精度をあげる裏技を紹介します。

googleの除外検索

Railsで開発をしていたのに、わからないことを調べたらPHPのことについて書いてあるサイトがでてきた、なんてことありませんか。railsっていうワードも含めて検索をかけているのに関係ない言語が出てくることはよくあります。

こういう時に便利なのがgoogleの除外検索機能です。除外したい文字の前に「-」をつけて検索します。例えばPHPを除外したい場合は「-php」と入力します。

googleの完全一致検索

googleはタイプミスを考慮にいれて設計してくれているため、似てる言葉が引っかかってしまう可能性があります。

こういう時にはgoogleの完全一致検索を使いましょう。一致させたい文字列を「””」で囲います。

できれば最近更新された新しいサイトを読む

冒頭でも話したようにプログラミング言語は日々新しくアップデートされていってます。アップデート後の状態で作業をしているのに、ググって出てきた結果がアップデート前っていうことも多々あります。

google検索ではサイトが最終更新された時期を指定して検索をかけることができます。

f:id:hatorihatorihatorik:20181002163437p:plain

ここの「ツール」をクリックすると、下にメニューバーが現れるので「期間指定なし」を希望の期間に指定します。1年以内なら比較的信用してもいいかなと思います。

Twitterで検索してみる

エンジニアの悩みのはけ口はgoogleだけではありません。Twitterをやってる人が多いのでは?という印象です。Twitterで悩んでいる内容のワードを検索してみると新しい解決策が見つかるかもしれません。

googleじゃなくてtwitterで調べるので「ググる」じゃなくて「ツイる」でしたね。

ショートカットでで効率的に検索する

検索をしてサイトをみる時にそのままクリックしてませんか?普通にクリックすると「戻る」という作業が必要になります。「戻る」を使ってしまうとページを読み込むのに時間がかかったりいろいろ面倒なので、別タブを立ち上げてサイトをみることをお勧めします。

Macの人はCommandを押しながら、WindowsはControlを押しながらクリックすると別タブが立ち上がりクリックした先のページをみることができます。

さいごに

最強のエラー解決法は人に聞くこと

ググり力はそう簡単に上がるものではありません。ある程度のボキャブラリーの引き出しとかセンスとか経験が必要になってきます。そういう時には是非人に聞く、ということをお勧めします。

ただし絶対にやってはいけないことがあります。それは答えだけを聞くということ。質問をしてみて相手が、どういう検索ワードで検索をしているのか、どうやって解決しているか、その思考プロセスを言語化してもらいましょう。

ググれと冷たく返さないでください

f:id:hatorihatorihatorik:20181002154725j:plain

よく初心者エンジニアに対して「質問するなまずググれ」と言っている人が多い印象を受けます。確かにググるのは大切です。でもググれっていうのはあまりにもかわいそうです。多分本人はちゃんとググっています。ググってもわからないんです。というかそもそもググり方がわからないのです。

私は3社プログラミングスクールのメンターをしており多くのエンジニアの卵と関わってきましたが、なんでわからないのかわからない、という理由でプログラミングを挫折する人が多いように思います。

プログラミングを学ぶことに最初にやるべきことはもしかしたら「Hello, World」ではなくて、「ググり方」なのかもしれませんね。