コードDJ 第6回 – はやい!もうついたのか!
毎週火曜日、Help me, hackers!に上がったコードを紹介していくコードDJ 第6回。
おい!ワールドカップ見てない癖に適当に話を合わせるのは辞めろ!DJ?モチロン見てたよ。本田のシュートは凄かったよね!・・・くらいやがれ!これが俺のワールドカップに対する知識の全てだ!
komagata a.k.a. DJです。
今回紹介するのはコレ。
無印良品のサイトの表示をデフォルトで「安い順、150件表示」にする – Help me, hackers!
まさに「プログラマーにとって解きたくなるような問題」といったセンスの良い問題を投稿してくれたのは@monoooki a.k.a. 前田製作所。
そして解決してくれたのはお馴染み@milk1000cc a.k.a. 牛乳嫌いプログラマ on Rails。(@milk1000ccはDJのストーキング情報によれば最近PONPONというグルーポン情報まとめサイトをRails, Herokuで公開したらしいRails野郎だ。)
二人ともありがとう!
しかし、ちょっと待ってくれ。コイツをどう思う?(@阿部高和)
% heroku console
>> Task.find(106).created_at
=> Tue, 06 Jul 2010 04:16:07 UTC +00:00
>> Task.find(106).comments.correct.first.created_at
=> Tue, 06 Jul 2010 07:02:54 UTC +00:00
「すごく・・・早いです・・・。」(@道下正樹)
タスクが登録されてからわずか3時間足らずで解決されている。(@荒巻)
たしかにDJも「これは解きたくなる問題だな」とは思ってはいたが、あまりにもはやすぐるでしょう?
本題のタスクの内容は、
こんな感じで無印良品ネットストアのデフォルトは「おすすめ順」「50件表示」になってる。それを「安い順」「150件表示」をデフォルトになるようにして欲しいというタスク。
あるある。確かにハードに使ってるサイトでこういうちょっとしたところを俺仕様にしたいことある。
それを通常ならありえない速さできょうきょ参戦(@ブロントさん)してくれたグリモンコードがコレ。
(右上のrawのリンクをクリックでグリモンスクリプトインストール)
// ==UserScript==
// @name AutoMujiSort
// @namespace http://www.milk1000.cc/
// @include http://www.muji.net/store/cmdty/section/*
// ==/UserScript==
(function() {
var OLD_PATTERN = { sort: 4, count: 12 };
var NEW_PATTERN = { sort: 0, count: 150 };
var $ = function(selector) { return document.querySelector(selector); };
if ($('select[name="sort"]') && $('select[name="sort"]').value == OLD_PATTERN.sort &&
$('select[name="count"]') && $('select[name="count"]').value == OLD_PATTERN.count) {
$('select[name="sort"]').value = NEW_PATTERN.sort;
$('select[name="count"]').value = NEW_PATTERN.count;
(typeof unsafeWindow != 'undefined' ? unsafeWindow : window).sort();
}
})();
きれいなコード。DJ以前はグリモンのコード「嫌だなぁ、嫌だなぁ、怖いなぁ」(@稲川淳二)なんて思ってたけどこの連載のお陰でむしろ好きになってきた。読み易い。
11行目のquerySelectorを$に割り当てるのはECMAScripterお馴染みパンチライン。最初のvarはconstにしたら速くなるのかも?
17行目のunsafeWindowを見てるのは多分ブラウザによって違うところなんだろう。
DJそろそろ気付いてきたんだが、今、タスクの需要と供給は依頼が少ない状態にある。特にJavascriptのタスクは監視してるイカレタHacker達が飢えた獣のように跳びかかり、瞬時に解決されてしまう。
成果物の公開方法やパッケージング方法、環境作りが楽なグリモン・JavascriptはHacker側にとって非常にやりやすい。そういう事情を踏まえた依頼の仕方もセンスが問われている。
センスを磨くか、金を積むか。そういう仕組みになっているらしい。