knex.js: NodeのSQL Query Builder

最近、趣味と仕事両方で使うNodeで動くちょっとしたウェブアプリを書いている。

おそらくRailsの方が素早くできそう、あるいは普段書かないPythonとかGoみたいな言語で書いてみたかったんだけど、仕事で同じ部署の人に使ったり、手を入れてもらうことを考えると、JSを書いてNodeで動かすのがよかろうと判断した。

で、SQL Query Builderが欲しくなって、色々探したら、インターフェイスがPromiseなのと(Streamもある)、開発が活発というところで knex.js というのがよさそうだった。ドキュメント( Knex.js - A SQL Query Builder for Javascript )がしっかり書かれているので、細かい使い方とかは書きません。

github.com

あと、Query Builderに加えて、おそらくRailsインスパイアのMigrations機能があって、これも必要になったら使うと良さそう。 knex.jsと同じ作者の関連プロジェクトに bookshelf.js というORマッパーライブラリがあるが、今つくっているものに対してやりすぎな気がするのでスルー。

Gitのローカルブランチを更新日時順に表示する

この間、GitHubのトレンドのリポジトリを適当に眺めたり、ソースをだらだら読んでいたら、これをみつけた。

github.com

Gitで最近更新があったブランチをおしゃれに表示してくれるやつ。ソースを読んだら、git for-each-ref っていうサブコマンドを使っていた。 こんなかんじで、更新日とブランチ名のペアの最新10件を表示できる。

git for-each-ref  \
  --sort=-committerdate \
  --format="%(committerdate:short),%(refname:short)" \
  "refs/heads" | head -n 10

と、書いてたんだけど、手元のpecoまわりの設定見たら同じようなことをやっていて、多分、昔調べたことあるな...と思った。

npm installのときのプログレスバーを非表示にする

表示が崩れたり(既に修正はされている npm@3のプログレスバーの表示崩れについて - Qiita)、非表示にすると早くなるというissueを見かけたので( https://github.com/npm/npm/issues/11283 )、非表示にするようにした。

プロジェクトレベルで設定をおこなう場合は、プロジェクトの直下の.npmrcに、全体に適当する場合はホームディレクトリの.npmrcprogress=falseという行を追加すればよろしい。

話ずれるんですけど、Progress bar noticeably slows down npm install · Issue #11283 · npm/npm · GitHubJavaScriptのプロファイリングのやりとり、面白そうですね。時間あるときにじっくり読んでみよう。

最近読んだ漫画

雑な感想を一言ずつ

佳境に向かっている。後半、地形図を見た時に「なるほどねー」と思った歴史ファンは少なくないはず。

ヤンとユリアン登場回。ヤンが原作の設定に忠実に「見る人が見ればハンサム」という描かれ方をしていてよかった。

ジョブズがアップルに復帰して、アップルが復活していこうとしている。読んでいて気持ちが高揚する巻。途中、ビル・ゲイツが出てきて、昔と今(インタビューに答えているとき)で言っていることが正反対なのが面白かった。

1、2巻に引き続き面白かった。なんとなく、今後の展開が読めてしまったので、多分、この漫画は5巻で完結するのだろうな、という気持ち。

Visual Studio Codeの統合ターミナルのシェルをzshに変える

最近、Visual Studio Codeを試していて、今日、パネルをターミナルとして利用できる統合ターミナル機能を知った。ちょっとしたコマンド操作がしたいときにいちいちVisual Studio CodeとiTermを行ったり来たりしなくて便利。

で、これ、デフォルトのシェルがbashになっているんですが、普段、zshを使っているので変えたくなった。

設定で以下のように指定すればよろしい。プロパティ名から察することができるが、OS毎にプロパティ名が決められているので、注意。

{    
    "terminal.integrated.shell.osx": "/usr/local/bin/zsh"
}

週末読んだ本

積んでいた本を2冊ばかり読んだ。

嫌われる勇気―――自己啓発の源流「アドラー」の教え

嫌われる勇気―――自己啓発の源流「アドラー」の教え

カモメになったペンギン

カモメになったペンギン

ポケモンGOプレイ雑記

以下のように楽しみにしていたポケモンGOがリリースされて、プレイしてみたので色々書いておく。ちなみに自分は普段ゲームを全くやらない。大体のゲームは始めて30分くらいで飽きる。がっつり何かのゲームをプレイするのはかなり久しぶりでおそらく中学以来。

現状、レベル21で以下のようなかんじ。

f:id:kitak:20160725094010p:plain:w300 f:id:kitak:20160725094024p:plain:w300

決意(初日)

先週の金曜日。リリースされた瞬間にインストールして、プレイ開始。ちょっとやってみて、すぐにハマってしまった。ポケモンがマップにボワッと現れるのも楽しいし、それを捕まえることができたら、さらに楽しい。仕事中なので適当なところでアプリのプロセスを落とす。
そして、このゲーム、下手にハマってズルズルプレイしたら、他のあれこれのパフォーマンスに影響しそうな気がしたので、リリース後の土日でプレイし尽くすことを決意
レベルをあげると、レアポケモンが現れたり、上位のボールが使えるようになるという話を知り、とりあえずレベル上げをおこなうことに。

レベル上げ(2日目)

翌朝、5時に目が覚めたので散歩がてら、レベル上げに出かける。レベル上げは、ポケモンを呼び寄せるお香と経験値2倍の幸せタマゴというアイテムを組み合わせておこなった(はい、もちろん課金しています。時間のある小中学生と違って、僕たちは平日、仕事があるので...)。

ただ、自宅周辺の渋谷・目黒あたりを3時間程度歩いたが、思っていたよりもポケモンが現れない。ちょいちょい進化形のポケモンが出てきて捕まえた(ヤドラン逃したのが悔しい)。お香は一定時間おき(しかもちょっと長いように感じる)にポケモンを呼ぶだけで、あんまりレベル上げに役立たないことに気づく。

家に戻って、朝食を取る。ツイッターを見ていたら、ポケストップに桜みたいなのが咲いているところはルアーモジュールというアイテムが使われていて、ポケモンが呼び寄せられることを知る(遅い...)。周辺のポケストップを調べたら、渋谷のセンター街/井の頭通り、渋谷駅前の方向が桜吹雪で凄まじいことになっていたので、再び出かける。

で、センター街/井の頭通りにいくと、当然のようにポケモンがわんさか出てくるので、幸せタマゴを使って経験値2倍にした上で、手当たり次第にポケモンを捕まえて、進化させて、経験値を得て、レベル上げする。ポケモンを捕まえたときの経験値、進化させたときの経験値はポケモンに依らず、一律同じ。そういう点では、捕まえやすく、進化させるのに必要なアメの数が少ないポッポがおすすめ。

途中、歩き疲れたので、一回、家に戻って昼食と昼寝。起きて、足が回復したら、再び夜までセンター街/井の頭通りと駅前をうろうろしてレベル上げ。渋谷のセンター街/井の頭通りと駅前、ルアーモジュールの恩恵を受けるためにトレーナー達がひしめき合っていて、世紀末を思わせる何かがあった。

この日まででレベル19まで上げた。ただ、レベルは上がったものの、レアなポケモンに全然出会えず、フラストレーションが溜まっていた。

公園に行こう(3日目)

朝起きて、散歩で近所の小さめの公園へ。突然フシギバナが出てきてオオーと思ったのだけど、逃してしまった。悔しい。その後、ルアーモジュールを公園のポケストップに挿して、ウロウロ。ルアーモジュールに釣られたのか、公園にトレーナーらしき人が何人かやってきて、世紀末を思わせる何かがあった。

その後、普段顔を出している毎週日曜朝にやっている朝活に参加。普段はプログラムを書いているけど、この日は皆でポケモンGO(おい...)。突然、レアなカブトが現れたので捕まえる(でも、これ、カブトプスまで持って行くまでの道のりが....)。
このときにレベル20になって、ハイパーボールが使えるようになった。レベル上げはここらへんで打ち止め。

リリースされて3日目になると、ポケモンの出没情報が色々ネットに集まっている。自分はエレブーが好きなので、エレブーの出没情報があるNHK放送センター、代々木公園の周辺をウロウロ、だが残念なことにGETならず。自分のようにエレブー目当てでウロウロしている人が何人かいて世紀末を思わせる何かがあった。

その後、前職の気の置けない人たちと、ピカチュウを捕まえるために新宿御苑に。新宿御苑ピカチュウの巣と呼ばれていて、コンスタントにピカチュウが出てくる。ピカチュウ4匹ほどGET。

公園、皆がスマホの画面を眺めつつ、ウロウロするという世紀末を思わせる何かがあるのだけど、出現するポケモンが同じ場所にいる人達で同期されるのが、謎の一体感を生み出していて良かった(だれかが「あ!ピカチュウでた!」と言った瞬間に自分の手元にも現れる感覚)。ポケモンGOポケモンを捕まえるにせよ、ジムを攻略するにせよ、複数人でプレイするのが楽しい。
その他、CPが低かったけれど、ストライクもGET。

閉園の時間になって、出口に向かうトレーナーの波に揉まれていたら、突然何人かが立ち止まり、ざわざわし始める(公園運営側からすれば憎かったに違いない)。どうやらハクリューが出たらしい。自分のところにも出た。だが、ノーマルのモンスターボールしか持っておらず、何回か投げたら逃げてしまった。
レベル15~20になると、以前までは赤子の手をひねるように捕まえることができていたポッポも、前より飛び跳ねたり、威嚇したり、逃げだしたりして捕まえるのが困難になってくる。それにより、前までは余るほどあったモンスターボールポケモンを捕まえやすくするズリの実というアイテムが枯渇し始めるので、いつレアなポケモンが出ても対応できるように所持アイテムを意識しておく必要がある。スーパーボールやハイパーボールのような上位のモンスターボールやズリの実は、今のところ買えない。レベルを上げるか、ポケストップで入手するしかないので、歩くしかない

その後、お疲れ様でしたで酒を飲んだ後に、その場の勢いで代々木公園にいくことに。大体、22時くらいだったと思うのだが、薄暗い代々木公園は若者トレーナーで溢れかえっていた。
ウェーイなかんじな人たちで正直怖かったのだが、珍しいポケモンが出たら大声で教えてくれて有り難かった。ここにも新宿御苑同様に謎の一体感があった。やはり、公園は良い。特別レアなポケモンも出ず、ぽよーと思っていたら、エレブーの影があって、必死に探す。何人かで探す様子は、なんとなく未確認生物を探す番組の1シーンっぽくて面白かった。無事、エレブーをGETして、解散と相成った。

ちなみに、この時、10km歩くと孵化するタマゴが2個孵化して、カビゴンとブーバーが生まれた。このタイミングで、進化しない強いポケモンを入手、育てるにはタマゴを孵化させるのがアリなことに気づく(遅い...)。
タマゴを孵化させるとアメもそれなりに貰えるから、強化もできる。一時期は、ひたすらポッポを捕まえて博士に送りつけるゲームだと思っていたが、次はタマゴをひたすら探して、孵化させるゲームになりそうな気がする。タマゴは買えないので、レベルを上げるか、ポケストップで入手するしかなく、歩くしかない。孵化させるにも歩くしかない(プラレールとか除く)。元々、歩くことを中心に置いているゲームだと思うんですが、先のモンスターボールの話も加えて、ポケモンGO、レベルが上がってくると、これまで以上に歩くことが重要になってくる気がする。

今後

この3日間でこのゲームの醍醐味をそれなりに味わえたのと、ある程度レベルが上がったので、トレードや個人間対戦のような機能が実装されるまでは、平日はもうそんなにプレイすることはなさそう。シャワーズカイリューギャラドスが欲しいので、気が向いたら、土日にイーブイミニリュウの巣と呼ばれている公園に行ったり、コイキングをひたすら捕まえたりするかもしれない。

このゲーム、色々賛否両論あると思うんですが、上に書かれているような世紀末を思わせる何かを引き起こし、間違いなく社会に影響を与えているプロダクトですし、僕のような土日、家や近所のカフェに引きこもっているような人間を公園に行かせたり、3日で30km(ポケモンGOのアプリ計測)も歩かせているのは純粋にすごいの一言だと思います。