先日、ナイントゥさんからこんな相談がありました。
ナイントゥ:
「カレンダーをJavaScriptで実装したいんですけどアドバイスください。」
なんてザックバランな質問でしょう?
この質問だけでは、広すぎて回答できないのはわかりますよね。
そこでこのように質問返しをしました。
土屋:
「カレンダーって言っても色々あるよね。単純に月ごとにカレンダーを表示させるだけなのか?Googleカレンダーなどと連動させて予定を公開したいのか?はたまた、日めくりカレンダーなのか?どんなことをしたいの?」
そうです。目的が分からないまま質問には答えられないのです。
ナイントゥ:
「このような日めくりカレンダーを実装したいのです。」
デザインがあると意思疎通もしやすいですよね。
これでようやく私も目的が把握できたわけです。そして技術的な視点で言うと、365枚の画像を見ている日に合わせて変えたいということです。
ただ、そのままプログラムを教えたら彼はコピペして終わってしまうので、やっぱり本人の力で考えて実装してほしいと思いました。そこで私はこんな質問を投げかけました。
土屋:
「ナイントゥはそれを実現するために、どんなキーワードで検索して調べるの?」
エンジニアの仕事は検索が付き物です。
特に彼はすぐ答えを聞きがちなので、検索する力を身に着けてほしいと思っています。
ナイントゥ:
「“カレンダー JS”とかで検索したら出てくるんじゃないんですか?」
土屋:
「それじゃダメだ。範囲が広すぎるよ。最初に俺が質問した、月ごとにカレンダーを表示させる事例や、Googleカレンダーなどと連動させて予定を公開する事例が出てきて本来やりたいことにたどり着けないよ。検索するときは実装レベルで粒度が細かい方が目的にたどり着けるよ。」
ナイントゥ:
「そそそそうなんですか、、やってみます。。」
おそらく、この要件を実装するときに、頭の中でフローチャートが考えられると適切な検索ワードが出てくるのだと思いますが、彼にはそれがないため広い範囲でしか出てこないのだと思いました。
もちろん、ミャンマー人なので日本語の壁もあると思いますが、彼は日本歴15年以上です。。
ちなみに、ナイントゥさんが言った「カレンダー JS」で検索した時の結果がこちら。
1つ目に出てきたQiitaの事例は月別にカレンダーを表示させる事例でした。
今回の要件をプログラムレベルで考えたときに、取得したい値が見えてくると思います。
それは...
- 表示している日
- 表示したい画像
この2つの値が取得できれば、後はif文でなんとかなりそうです。非常にシンプルです。
ですので、検索キーワードとしては...
- JavaScript 日付 取得
- JavaScript 日別 画像
等が妥当な検索キーワードでしょう。ちなみに結果はこちら。
うん、いかにも目的の成果が得られそうなタイトルです。
この事例は非常に簡単な事例ですが、実装が複雑になってもいかに細かい粒度で検索できるかで、プログラミングのスピードも変わってくると私は思います。
この記事はナイントゥさんに向けて書いた記事なので、ぜひ本人に読んでもらいたいと思います。