高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

ググって解決できないことへの対処方法

f:id:TakamiChie:20211130171903p:plain このブログはググって解決しづらかったこと Advent Calendarの10日目の記事です。

qiita.com

さて、アドベントカレンダー経由でこのブログを見つけた方には今更な話ですが、プログラミングってかなりググる(Googleなどで検索する)という行為が重要です。

久しぶりに使った言語の構文や関数の使い方、「これに関してもっと良い方法ってないのかな?」「こういうこと実現したいときってどうするのが今一般的?」いろんな理由で日々みなさまググっていると思います。

そんな中でも、ググってなかなか解決策が見つからなかったこと、あるいは解決できなかったこと、結構あるんじゃないかと思います。

なので、今回はググって解決できないことへの対処方法や、それでもググって解決のヒントを見つけるための方法について書いてみようと思います。

技術ネタは最近いつも高見知英の技術ログのほうに書いているのですが、これはプログラミングに限らず有用な情報だと思いますのでこちらに書きます。

ググって解決できないこと・困難なこととは

ググって解決できないこと・困難なことにはいくつかあります。

  • プログラミングスクールなどの長い割に解決策にならない記事ばかりが引っかかってしまい、なかなか解決策が見つからないケース
  • 言語の名前や環境の名前がほかの製品名・プロダクト・団体と名前被りしていて(いわゆるググラビリティが高くない状態)、検索が困難なケース
  • ググっても見つかる情報が古すぎて使えないケース
  • ググって見つかる情報と微妙にシチュエーションが異なってしまい、ヒントにはなるが解決策には至らないケース
  • 技術自体がマイナーでそもそも情報がないケース

最近わたしが使っているLazarusの場合、基本的に最初の「プログラミングスクールなどの長い割に解決策にならない記事ばかり…」ということ以外すべてが起こりえます。

だって国内・国外問わず使ってる人が少ないから!

さらに聖書の登場人物だのサイバー犯罪グループだの名前被りの結構多い名前で、ググってスッキリ解決できる事例は極めて稀だったりします*1

海外の記事でドキュメントや解決策のためのヒントが見つかればまだ幸い(だって翻訳すれば良いんですから)、英語圏の情報でも「断片的に使えるかな?」程度のものが見つかるかどうか程度 ということがよくあります。

ググって何も見つからず、「何も分からないと言うことがわかった」ということとか。

そういうときにはどうすればいいんでしょう?

ヒント1:検索ワードを少しずつずらしてググる

まずは、検索ワードを少しずつずらしてみること。

たとえばLazarusであれば、Delphiと言語的にかなり近いので、検索ワードのLazarusをDelphiに変えてみる*2

検索語を英語やその他の言語に置き換えできるのであればそれでも検索してみる*3

検索したいことの省略語や俗称があるのならば、それらも使ってみる。

どうしても引っかからなければ、自分の使える他の言語で検索してみるのもいいかもしれません(自分に翻訳する自信があればですが)。

わりと自明なものであれば、Googleが適当に検索語の揺れを補正して検索してくれますが、検索内容によってはそれが効きません。適宜検索ワードをこちらでずらす必要があります。

ヒント2:なるべく正式な名称を使う

次に検索語は、まずなるべく正式な名称を使うこと。

ツールバー」とか「リボン」とか「ステータスバー」とか、正式名称があるものであればそれを検索語に使ってみる。俗称や通称があるものは多いですが、やはりそれらを使ってる人は、正式名称を使っている人よりは少ないことが多い。

また、たとえばWeb MIDI APIとWeb Audio APIみたいなよく似た名前の技術は、Google余計なお世話で気を利かせて両方結果に出してくることがあるのでそれも要注意(どうしてもうっとうしいときは、検索語をダブルクオーテーションで括るなどしてもいいかもしれません)。

あとは、その言語では第三者制作のソースコード・クラスを「モジュール」と呼んでいるのか、「ライブラリ」と呼んでいるのかなど、細かな違いで検索精度が変わる場合もあります。

ヒント3:公式はやっぱり正義(なことが多い)

そしてやはり、言語環境配布元などの公式サイトはやはり正義です。困ったらまず公式サイトを探してみると何かしら見つかる ということが少なくありません。

たとえば、Lazarusの場合Lazarus Forumとか、Lazarus wikiとか*4

とはいえサイトの中には検索システムがないものもあるので、そういう場合はGoogle検索経由で探すしかなかったりしますが(Google検索のsite:指定などをしてみるのも良いでしょう)。

公式サイトが英語でしか情報を提供していない というケースも少なくないですが、Edgeのコンテキストメニューにある「日本語に翻訳」や、Googleで文章を翻訳できる拡張を使えばある程度は読めると思います。

ただ、それでもないものはないので、そこになければないですね と思って諦めることも時には必要です。

それでもダメならソースコードを当たれ

また、既に動いているプログラムのソースコードを当たるのはやはりいいヒントになります。

「このライブラリがやっているこれこれみたいなことがやりたい」というときは、ソースコードを読むのが早い。Lazarusも、Pythonも、標準ライブラリのソースコードが読める場合が多いので、活用してみましょう。

とくに、Githubなどを検索して見つかるソースコードは、現行バージョンの言語で動くかどうかまではわからないですが、標準ライブラリのソースコードなどは今確実に動く内容です。活用していきましょう。

それでもやっぱりわからなければ人に聞くのも良い が…

それでも分からなければ、Teratailなどのサイトで質問してみるのもいいかもしれません。

ただし、言語にも寄りますが、そこまでやって解決しない内容は、Teratailで質問しても解決しないことが多いような気がしています。

また、質問をするために疑問や検証内容をまとめている暇があったら自分で調べたほうが早い なんてこともあります。

とりあえずヒントをいくつか

いかがでしたでしょうか?

ひとまず自分が良くやる検索のしかた・情報の探し方についていくつかヒントを書いてみました。

プログラミングについて、ググって解決できないことは山ほどあります。そもそもググってすぐ解決できるようなことであれば、既に自分が取組む必要のない課題かもしれません。

プログラミングについてはググるのも大切ですが、あまり根を詰めず、適度にほかの情報リソースや、その他のヒントに頼って行くと良いのではないでしょうか。

*1:稀に解決できるケースといえば、あまりにもPascal言語の基本的な内容だったり、偶然検索対象の内容が基本中の基本でEmbarcaderoが出しているDelphiの情報がそのまま流用できるケースなど

*2:「Lazarus 正規表現」で検索している場合は「Delphi 正規表現」で検索してみる

*3:「Lazarus 正規表現」だけでなく「Lazarus RegExp」でも検索してみる

*4:Lazarus wikiの場合日本語化されている記事は結構少ないので、必要に応じて英語ページも参照