顧客が本当に欲しいものを聴く
「穴とドリル」の寓話を知っている人は読まなくていい
「聴く」のが依頼を受ける側の任務
ある雑貨店に客が来た。店員にこう尋ねた。
客: 「ドリルはありますか」
業務でドリルを使わ無いだろうビジネススーツ姿の客に、店員は続ける。
店員: 「ドリルですか、揃えておりますが 3 万円以上の高価なものしか残っていません」
客: 「うーん、仕方ないですね... ではその中から一番安いものを買わせてください」
この店員は客の話を聴いていない。ただ単に話をそのまま処理しているだけ。客も損だ。
客はなぜドリルが必要なのだろうか。
人の話を聴く店員が対応していたらどうだろうか。
客: 「ドリルはありますか」
店員: 「ドリルですか、揃えております。失礼ながら、なぜドリルが必要なのでしょうか」
客: 「会社に書類がたくさんありまして。ホッチキスでまとめるには一部が厚すぎるので、穴を開け、紐を通してまとめたいんです」
店員: 「なるほど。ちなみに、千枚通しではダメですか」
客: 「千枚通しというものを知らなかったです。その道具を見せてもらえますか」
その後、客は千枚通しを購入する。
客はドリルではなく、それよりは安価で、本当に欲しかった千枚通しを購入できた。
「聴く」ための手段
- なぜ、で話を持ちかけてきた背景を聴く
- なぜ、それが必要なのですか
- なぜ、その案を実現していこうという話になったのでしょうか
- 具体的に、で相手の想定物を聴く
- 赤いオブジェクトとは、具体的にどのようなものでしょうか
- 短めの期間でとは、具体的には 1 週間の期間でしょうか、1 ヶ月ぐらいの期間でしょうか
- 例えば、で相手の想定物を聴く
- プライバシー保護用の処理とは、例えばどのようなものでしょうか
- バッファを持たせておくようにとは、例えば1日ぐらいを見積もっておけば良いでしょうか
つまるところ
すぐにハイというな、ということだ
報連相が失敗するパターン「相手に何をして欲しいかを伝えられていない」
相手に何をして欲しいかを伝えられていない 報連相は失敗する
よく聞くのが「単なる事象・結果を述べている報連相」だ。
- 報告です、依頼されていた調査が終わりました
- 報告です、レビュー用の資料作りました
- 連絡です、共通モジュールのここを編集しました
- 相談です、レビューの指摘内容を理解できたかどうか怪しいです
報連相を受け取った側は何をしてよいのかわからない。
何をしてよいのか分からないから、報連相してきた側に問い詰める。
「それで、私は何をすればいい。それを言いに来ただけか」
この問い詰めが報連相の失敗だ。
相手に何をして欲しいかを添える
問い詰めをなくすには「相手に何をしてほしいか」を報連相に添えることだ。
- 報告です、依頼されていた調査が終わりました
- (加えて) 調査内容を明日の 16時までにレビューしてもらえますか
- 報告です、レビュー用の資料作りました
- (加えて) 資料内容に誤りがないか、今日の定時までにチェックお願いできますか
- 連絡です、共通モジュールのここを編集しました
- (加えて) 皆さんの編集モジュールには影響ないと思いますが、問題あれば教えてください
- 相談です、レビューの指摘内容を理解できたかどうか怪しいです
- (加えて) 14時ごろに口頭で質問させてもらってもよいですか
ビジネスで大事なこと
「相手に何をして欲しいかを伝えること」 である。
金をもらって仕事をする以上、職種が何であれあなたはビジネスマンだ。
ビジネスマンは仕事を前に進めなければいけない。
仕事を前に進めていると必ず、課題が出てくる。
課題を解決するために、自分以外のヒトに動いてもらわないといけない場合がある。
その時、あなたは明確に「ヒト = 相手に何をして欲しいか」を伝えられているだろうか。
「これよく分からないんですよね」「難しい課題に当たってしまって困っているんですよね」
では相手は動かない。
どうすればよいか考えよう。
ページネートのリソースを1ページずつ巡回し、ページにある各々のリンクへ 1 階層潜り込んでスクレイピングする
http://mat5ukawa.hateblo.jp/entry/2018/06/05/002826
より
- 各ページを巡回する
- 巡回ごとに各々のレコード詳細リンクへ 1 階層潜り込む
- 潜り込み先でスクレイピングする
クエリ抽出されたページのレコード探索に利用すれば良いと思う。
import scrapy class Spider(scrapy.Spider): start_urls = ['http://localhost:3000/seeds'] name = 'spider' def parse(self, response): # scrape resource's id id = response.xpath("//div[@id='page_num']/text()").extract_first() yield { 'id' : id } # scrape resource in each link for link in response.xpath("//table/tbody/tr/td[2]/a/@href").extract(): yield scrapy.Request(response.urljoin(link), callback = self._parse_link) # transit to next resource next_page = response.css('a[rel="next"]').xpath("@href").extract_first() if next_page is not None: next_page = response.urljoin(next_page) yield scrapy.Request(next_page, callback = self.parse) def _parse_link(self, response): detail = response.xpath("//p[@id='name']/text()").extract_first() yield { 'detail' : detail }
$ scrapy runspider crawler/main.py -o outfile.json
outfile.json
[ {"id": "page number is 1"}, {"detail": "e8b5202869b74aa1ffd0eadff7c3664f"}, {"detail": "8de50ac9ae0edd7b6d62a84af338186c"}, {"detail": "6f5a8295e6ccb687ceb9c4789f6e63f7"}, {"detail": "cb4e15e1100ae6aed7b2cfea3ce1842b"}, {"id": "page number is 2"}, {"detail": "0e89ba31a9592c3058fe87f5bef28e33"}, {"detail": "eed30fcd7d827f33127375ec44e7748f"}, {"detail": "18b84f501753059fab3cd3402703d2d9"}, {"detail": "dda2c6b55c0aedb84834f8a16aa9d024"}, ... ]
使ってはないが参考にしたページ
探索が二次元になるので、記載の仕組みを用いてより深層へスクレイピングする場合は計算量と相談。