最近読んだ漫画

雑な感想を一言ずつ

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

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

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

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のアプリ計測)も歩かせているのは純粋にすごいの一言だと思います。

node-http-proxyで通信内容を変更するローカルプロキシサーバーを構築する

フロントエンドの開発をしていて、APIサーバーへのリクエスト、レスポンスをプロキシして、そのヘッダーを変更したいことがある。Charlesみたいなツールでも同じことはできるが、変更内容を複数人で共有するのが面倒だったり、integration環境で動かすのが難しい。ということで、Nodeでリクエスト・レスポンスのヘッダーを変更するちょっとしたscriptを書いてみた。 node-http-proxy(GitHub - nodejitsu/node-http-proxy: A full-featured http proxy for node.js)を使う。このモジュール自体はリバースプロキシとして使われることを想定していそうだが、今回のような開発用のローカルプロキシとしても使える。

var express = require('express');
var httpProxy = require('http-proxy');

var app = express();
var proxy = httpProxy.createProxyServer({});

proxy.on('proxyReq', function(proxyReq, req, res) {
  // append
  proxyReq.setHeader('X-REQUEST-FOO', 'BAR');
});

proxy.on('proxyRes', function(proxyRes, req, res) {
  var originalSetHeader = res.setHeader.bind(res);

  // append
  res.setHeader('X-RESPONSE-FOO', 'BAR');

  res.setHeader = function(name, value) {
    // overwrite
    if (name === 'X-RESPONSE-FOO') {
      originalSetHeader('X-RESPONSE-FOO', 'BAR');
      return;
    }
    originalSetHeader(name, value);
  };
});

proxy.on('error', function(err, req, res) {
  res.writeHead(500, {
    'Content-Type': 'text/plain'
  });
  res.end('Something wrong.')
});

app.get('*', function(req, res) {
  proxy.web(req, res, {
    target: 'https://api.example.dev',
    secure: false
  });
});

app.listen(8080);

後は、変更内容をyamlみたいな適当なフォーマットで記述して、起動時に読み込んで、リクエスト/レスポンスのヘッダーとして追加・上書きしてあげればよろしい。レスポンスのヘッダーの上書きがちょっとトリッキーで、proxyResイベントのイベントハンドラの後に元々のレスポンスのヘッダーに対して、setHeaderが呼ばれているようだったので、setHeaderをラップして、変更したいヘッダー名の場合は上書きするようにした。

マタギを読んだ

読んだ。この間の休日に手頃な値段でジビエが食べられるお店に行ったのだけど、そのお店のトイレに置いてあった。

ケモノに向き合う人間の正の側面と負の側面の両方をうまく描いている作品だと思う。負の側面を描くために、けっこうえげつないシーンも多い。
リアリティを重視している作品かと思いきや、終盤、突然ニホンオオカミが現れたり、湖から恐竜が現れたりするので、作者や出版社に何かあったのかな...といらぬ心配をしてしまった。

マタギ(1)

マタギ(1)

これからの1日の過ごし方

下半期に入ったタイミングで、これまでの会社での1日の過ごし方を見直すことにした。

これまでの問題点として、自分の職務上、あちこちからメールやらチャットでアドホックに依頼や相談が来る。そういったあちこちから来たやつの対応が終わって、がっつり作業しようとしたら、また依頼や相談がきて… というのを繰り返して、お世辞にも効率的とは言えない時間の使い方をしていた。

そういった細切れになっている時間を種類ごとにまとめてバッチ化して、トータルでかかる時間を短くしたい、という気持ちが前からあって、今週から朝7時から16~17時を会社にいる時間と決め、さらにその時間を2分割することにした。(先週ぐらいから、とりあえず朝7時に来ていたけど、やはりバッチ化しないと意味がないことが分かった)
昼の13時まではがっつりコーディングや設計のような作業をする時間、昼休みから戻って17時までは、それ以外の細々した事務っぽい作業の時間にする。朝が早いのは、自分が農家の生まれで朝に強いのと(農家の倅は幼い頃から朝早くに叩き起こされ、親に山や田畑に連れ出されるので朝に強くなる)、最近 、急に暑くなってきたので、涼しいうちに出社したいから。

前半の朝の7時から13時までは、必死にコードを書く。TwitterFacebookをログアウトして、HipChatやSlackみたいなチャットツールも開かない。(とか言いながら、トイレのために席を立つときにちゃっかりスマホで見ている)
出社してチャットツール開かなくて大丈夫なの?って思われそうだが、そもそも昼から出社するエンジニアがそれなりにいる会社だし、本当に緊急だったら自分にmentionが飛んでスマホに通知がくるので問題ないと思う。
一時間以上、作業し続けるとへばってしまうので、お茶とかコーヒーを飲みながら仕事して、都度、トイレのために席を立つようにしている。ここらへんポモドーロ法とかをやってみるのもいいかもしれない。

昼休みから戻って、後半の14時から17時は届いたメールをチェックしたり、Wikiやドキュメントを更新したり、企画者から相談を受けたり、企画書を読んでツッコんだりする。
その他、次の仕事で使いそうな技術の検証をしたり、午前中の作業で得られた知見をまとめたりする。
と、やっているとあっという間に16時半頃で、次の日のTODOをまとめて、明日出社したらすぐに仕事に取りかかれるようにしておく( 退社前に次の日のTODOリストを書く - kitak blog )。
気をつけないといけないのは下手に次の日にやればよい仕事に手を付けようとしないこと。手を付けたら、キリのいいところまでやろうとズルズル会社に残ってしまうので、明日やれば良いことは明日やれば良いと割り切る。

退勤したら、それなりにまとまった時間が取れるので、たまには手のこんだ夕食を作るなり、本を読むなり、好きなコード書くなり、Skype英会話をやるなり、ハッピーアワーで酒を飲むなり楽しみがある。

というのが、理想。で、今日1日やってみたかんじ結構イメージ通りに時間をマネージすることができた。ただ、17時に帰ろうとしたら、突然のゲリラ豪雨でこうやってブログを書いている。とほほ。