「目 grep」が異様に遅いヤツら
- エクスプローラであるフォルダ内から一つのファイルを探す時
- あるソースファイルの中から特定のメソッドの宣言を探す時
- 表資料の中から今話題にしている書籍名を探す時
このような、「一覧の中から特定の文言の行を探す」ことを、ココでは便宜的に「目 grep」と呼ぼうと思う。
で、最近特に思うのが、「みんな目 grep トロすぎでしょ」という不満。
ファイル一覧なんかであれば、ファイルは大抵名前順でソート表示しているだろうから、A to Z でアイウエオ順、という並びは分かっているはずなのに、「MT_1012.xlsx
」を探し出せずに「SE_8091.xlsx
」のあたりまでスクロールしていたりする。S
まで来てたら M
はとっくに過ぎてるだろ!!バカか!!
ソースを調べる時も、「クラス」→「フィールド変数」→「メソッド」といったインデントは大枠としてあるワケだから、メソッド定義がどの辺にあるか探すのに迷うことないだろう。何を if
文の中なんて覗いてんだ!そんなとこに「メソッド宣言」があるワケねえだろ!!
ファイルやソースのような構造体ではなく、誰かが作った表資料にしたって、全体をババっと眺めて、「パーフェクト JavaScript」と記載のある行を調べたかったら、「書籍名」列の先頭にカタカナが多い雰囲気の行をパッパッとチェックしていけばすぐ探せるじゃないか。どうして「問題解決の Python プログラミング」付近でマウスポインタがウロウロしてんだよ!こっちは待ってんだよ!!
ココまで来て、「エクスプローラや Finder ならファイル名をタイプしていけばインクリメンタルで移動するだろ」とか「最初から目で探さずに Ctrl + F
で検索しろよ」とか指摘が入るかと思う。
しかし彼らは、それでも探せないのだ。
エクスプローラで見ているファイル一覧の中から「MT_1012.xlsx
」を探し出すために「M
」とタイプして、「MA_0010.xlsx
」にフォーカスが当たる。そしたら、「この行より下に MB
・MC
…と並ぶはずだから、MT_1012.xlsx
は30行くらい下のファイルから探していけば見つかるかな?」などと推測することはできない。そして「MV_1891.xlsx
」あたりまでスクロールして、思考停止してしまうのかマウスポインタをくるくるとワケもなく数秒動かして上にスクロールし直したりする。ついでに「MT
」までタイプして「MT_1001.xlsx
」にフォーカスが当たっていても、彼らはすぐには探し出せない。
ソースコードファイルを開いて検索した時も、show()
メソッドの宣言部分を探したくて「show
」という文字列で検索し、フィールド変数 isShown
や onShown()
メソッドの show
部分がハイライトされると、それらを一つずつ読んでしまい、いつまでも public show() {
という行に到達しない。それだけでは飽き足らず、ようやく public show() {
の行に移動してきたのに、どういうワケか「この行が探していた行だ」とは認識できず、次の検索候補に飛んでしまったりする。彼らは
- メソッドを探すなら後ろにカッコを付けて「
show(
」と検索したらノイズが減るかな - 何かのオブジェクトのプロパティを探すなら先頭にピリオドを付けて「
.some
」と検索したらObj.some
みたいな行だけヒットするよな
みたいな知恵も利かないし、そうやってヒットした行も読めていない。
これって別に、急にそいつに話しかけて「MT_1012.xlsx
を開いて!!」とか言ってるワケじゃなくて、そのファイル群に関する打合せを20分くらいやっている中で、「LS_0841.xlsx
の確認が終わったから、じゃあ次は MT_1012.xlsx
の記載内容について認識合わせをしようか」というような流れで、ずっとこのフォルダをエクスプローラで開いていたりするのだ。対象のファイルのことはそいつも知っているし、何度も開いているモノなのだ。
探してもらいたい show()
メソッドだってそいつが実装したモノなんだから、大体ファイルの中の上の方に書いたか下の方に書いたかぐらいの大雑把な記憶はあるだろう。
これってもう、コードが読めないとか、英語が分からないとか、長文が苦手とか、そういうレベルの話じゃないよね…。
もしかしてコイツらって、それぞれの「文字」は知っているけど、「文字列」になると認識が不可能なんじゃないか? とすら思う。「H
はアルファベットのエイチ」「o
は小文字のオー」という認識は出来るが、「Hoge
」となると読めなくなっているんじゃないか?と思ってしまう。
それに、「表」というものの構成もロクに認識できていないように思える。項目ごとに列が定義されていて、行ごとに1つのデータが格納されている、という、当たり前の構造を理解・認識できていなくて、どこの何を見たら目的のモノが探し出せるのか、実は分かっていないんじゃないかと思う。
それとも、彼らは「表形式」になると途端に文字列が認識できなくなるのだろうか?いや、そうでもないよな、コードの中から自分が書いた行を探し出せない・検索候補で正解の行に飛んでもそれを正解だと認識できないのだから、彼らは「文字列」になると認識できなくなる説が濃厚だろうか?
それに対して自分は、どうして彼らより必ず早く・速く、目的の行を探し出せるのだろうか。自分は初見の、彼らが作った資料を見せられた時ですら、作った彼ら自身より早く特定の章のタイトル行を探し出せる。それは何も、自分が「この章を読みたい」と思ったモノではなく、彼らが「『◯◯の比較結果』という章にまとめました。えーと、その行はどこだっけ…」と探し始めた時に、僕の方が必ず早く見つけ出せるのだ。こっちが先に答えを知っているから早く見付けられる、というワケではないのだ。
では、この能力の差は何だろうか?まだそれらしい原因は見付けられていない。
いずれにしても、彼らがのんびり目的の行を探している間、待たされているコッチはイライラしてたまらないので、いいからとにかく目 grep の能力値を上げておいてくれ。