病みつきエンジニアブログ

機械学習、Python、Scala、JavaScript、などなど

僕がプログラミングを学ぶときに気をつけていること(検索編)

※この記事は、事実に基づいた定量的なものではなく、あくまで個人的な経験則です
役に立つかはわからないですが、他の人に教える機会があって、気づいたことなどをまとめています。
検索編以外があるかは謎です。

何かに躓いたとき、Google先生を使って検索するわけですが、そのときに気をつけるべきポイントです。

(1)日本語だけじゃなくて英語でも検索する

つまずいて調べるとき、もちろんブログ記事などが答えを持っていることもあるわけですが、経験則から言えば、
Stack Overflowが引っかかることが驚くほど多いです。
なので、見つからないときは英語でも検索しています。もし英語があまりわからなくても、(2)のポイントを使えば日本語の解説に辿り着けることもあるので、意識して英語の検索結果を読むことをおすすめします。

例: 「ruby インストール」で検索したあと「ruby install」で検索する

(2)その処理の肝になる関数名でググる

「ある処理を実現(解決)したい」として、調べたとします。そうすると、それを実現するブログ記事に出会うことがありますが、
必ずしもわかりやすい記事とは限りません(英語の可能性もあるし)
わかりにくいなーと思ったら、それを実現するための関数だったり、設定だったり、ユニークな名前で検索すると、
その関数を使った記事(=それを実現する記事)がごろごろ出てきます。もしくは、それに関連した便利な情報(リファクタリング出来るかも)も出てくる可能性があります。

だいたいは、その処理を実現するために使われる一つの関数というのがあります。
その関数はその処理にしか使わなかったり、その処理をするためにその関数が必ず必要だったりするので、
その関数で検索すれば、その処理を実現する記事にたどり着ける、というわけです。

例:RailsでMass assignmentをガン無視するには、assign_attribute :without_protection => false すればいいことがわかったので、
without_protectionでググったら、newするときにも使えることがわかった。

公式サイトでその処理について書いてないか調べる

自分がその記事を提供する側の人間になるには、どうすれば良いか?」というのを考えます。
"プログラミング"(つまりフレームワークや言語)の情報の広がり方は、たいてい決まっています。
開発者(コミッター)が言語やフレームワークを作成し、そのための公式ドキュメントを用意し、そのドキュメントを読んだ誰かが記事にし、ググった誰かがその記事を目にするのです。

例を取ります。
Appleのすごい人達がCocoa touch(iOS用に拡張したObjective-CAPI)を開発します。そして、「NSLogはコンソールにデバッグログを出力する関数で、引数には文字列を入れて下さい」的な公式文書を用意します(Loading…)。
誰かがその文書を読んで、ブログなりStack overflowなりに書きます。

ということなので、自分が記事を書く側に成長するために、公式ドキュメントで検索した情報について調べるのです。
そして、どうすれば公式ドキュメントでその処理に辿りつけたか、1か月後公式ドキュメントだけを読んで同じ処理が出来るか、などを気にしておくと良いと思います。

例:(2)で関数名で調べ、http://api.rubyonrails.org/を見る。