nodebrewからnodenvに乗り換えた

複数のnodeのバージョンを扱う機会がでてきたので nodebrew が辛くなって nodenv に乗り換えることにした。 以下を前提とする。

  • fish, version 3.0.2
  • nodebrewは Homebrewでインストールしている

nodebrewのアンインストール

  • パスを外す
  • $brew uninstall nodebrew
    • (option) ~/.nodebrew を削除する

nodenvのインストール

  • $brew install nodenv
    • 一緒にnode-buildも入る。
  • $fisher add oh-my-fish/plugin-nodenv
    • パスを通しても良いが、 config.fish の行数を増やしたくないのでプラグインでやる。やってることは同じ。

github.com

で良さそう。もう一つenvの需要が出てきたらanyenvも考慮することにする。

参考

Node.js/Ruby/Pythonのバージョン管理は-env系で統一 - Qiita

UNITE2019のスタッフ業とMEGARAGEの撮影環境

f:id:uvb_76:20200114052613p:plain

1/12にタイトーステーション溝口店で行われた UNITE2019|SOUND VOLTEX 3on3大会 のお手伝いをしてきた。主に写真撮影。

unite2019.tumblr.com

台風による延期や筐体トラブル等大会自体は色々ありつつも、どうにか無事に終わって安心した。 GERBERA -For Finalists-で再開したときは本当に安堵した。 参加者、スタッフの皆さん本当にお疲れさまでした。

SOUND VOLTEXは3まで結構やってたけど、ここ最近は全然ついていけずだった。譜面も把握できていなかったので、見どころのある場所を拾って撮れなかったのが個人的にはちょっと反省。主にDoppelgangerの停止位置とか。

MEGARAGE

タイトーステーション溝口店にはMEGARAGEというイベントスペースが併設されていて、予約をすると借りることができる。飲食物の持ち込みに制限はあるけど、バーカウンターのドリンクか1Fのクレープは持ち込みできる。今回のバーカウンターではハーゲンダッツが何故か100円で振る舞われていてぶっ壊れてた。大会中みんなアイス食べ始めてた。1Fのクレープもスナッククレープがちゃんとあるので、会場を離れられないスタッフの昼飯代わりとして助かった。

www.taito.co.jp

MEGARAGEというかゲームの大会全般に言えることなんだけど、会場自体は暗いけどゲーム筐体や液晶が明るいので測光が本当にむずかしい。実質ライブ会場。

ということで所感を並べる。

  • いつものことなんだけどISO上げてでもシャッタースピードは稼ぐ。
  • バーカウンターが1段高くなっているので望遠使うと後ろからの写真はいい感じに撮れる。
    • APC-Sで200mmあれば十分すぎ。
    • 望遠50-250mm f4-5.6 しか持ってなかったので、次回は2.8通しレンタルするか70-180mm買うかすると良さそう。
  • 表彰のときは照明上げてもらうべきだった。

こんなところかなあ。まだ現像終わってないのであとから出てくると思う。

今年Swarmのチェックインで何回「はい」といったか雑なスクレイピングで数えて2019年をふりかえる。

この記事は GMOペパボ Advent Calendar 2019 - Qiita 21日目の記事です。本来であれば平成Ruby会議01に行った記事をアドベントカレンダーに残したかったのですが、20日に公開してしまったのでもう一つ書くことにしました。

20日目は Swift始めてからハマったこと時系列で全部書く - stone's throw でした。

Swarmと私

Swarm(旧Foursquare)という位置情報を取得してどこにいたかを記録するアプリがあります。私は新卒で入った会社の先輩からこのアプリの存在を教えてもらい、それから7年ほどチェックインをつけています。

今回はこのチェックインの履歴を取って今年のチェックインを振り返ろうと思います。突発的に思いついたので力技で。

履歴をとる

履歴を見るには

と良さそうです。昔はFourSquareがチェックイン履歴をGoogle Calendarのカレンダーで提供していたのですが、公開が終了されています。代わりに、IFTTTで新しいチェックインがあったときにGoogle Calendarに記録するというAppletsを作っているのですが、これも深夜帯のチェックインが前日のチェックインとして扱われてしまったりと完璧ではないようです。今回はWebサイトからスクレイピングすることにしました。

また、今後も今回のようなふりかえりを簡単にするために、新規チェックインをスプレッドシートに記録するAppletsを作成しました。これで2020年のふりかえりの材料が増えたので見直すときが楽しみです。

ということで https://ja.swarmapp.com/history からチェックインの情報を拾ってきます。特に複雑でもないのですが、無限スクロールがあるのでブラウザから2019年のチェックインを全部出してからコンソールで以下のスクリプトを実行するとArrayのJSONが返ってきます。

console.log(Array.from( $$('.activity-content')).map( e =>
  [
    e.querySelector('.activity-checkinInfo-venue').innerText,
    e.querySelector('.timestamp').getAttribute('data-created-at'),
    e.querySelector('.activity-shout') ? e.querySelector('.activity-shout').innerText : null 
  ]
))

返ってきた結果をコピーしたいので、コンソールのオブジェクトを右クリックして Store as global variable を選択したのち、 copy(temp1) をコンソールで実行します。あとは煮るなり焼くなりします。 timestampはUNIXtimeなので別途計算します。

ここまで書いてFoursquareの方にAPIが存在することに気がついたのですが、気にせずすすめます。こっちのほうが早いと判断したので良いのです。

集計する

2019年はこれまでに合計381チェックインしていました。

どこにチェックインしているか

2回以上チェックインしているVenueを並べました。

Venue 回数
東亜飯店 23
エムエムランド 15
東京国際空港 (羽田空港) (HND) 12
函館空港 (HKD) 10
玉 赤備 10
和み酒房 げん 6
越後屋 三太夫 6
タネマキ 5
カレーハウス チリチリ 5
川崎駅 4
ラウンドワンスタジアム 函館店 4
らーめん桑嶋 4
CINECITTA' 4
和泉鮨 桜丘店 3
ハノイのホイさん 3
カレーショップ初恋 3
ガパオ食堂 3
RubyKaigi 2019 3
JR 新宿駅 3
野菜を食べるカレー camp express 2
北沢カレー食堂 茄子おやじ 2
福岡空港 (FUK) 2
舞浜駅 2
舞浜アンフィシアター 2
日本オラクル株式会社 本社 2
南平台 ラウンジ 2
東京電機大学 東京千住キャンパス 2
庄や 渋谷南口店 2
肴菜家 おがわ 2
幸せのはし 2
下北沢駅 2
沖縄そば かんから食堂 2
横浜駅 2
奥芝商店 函館店 2
ベルマーレ・カフェ 2
バスタ新宿 2
ネパリコ 2
つけ麺屋やすべえ 2
すしざんまい 2
シダックス 函館五稜郭クラブ 2
カンティプール 2
うどん まる久 2
Suage 2
BEER DINING The Griffon 2

お昼によく行く東亜飯店がトップでした。東亜飯店は社内でもファンが多く、思いつきで 社内Slackに #東亜飯店 チャンネルを作ったらその当日に閉店情報が流れてきて唖然としました。二度と店名でチャンネルは作りません。渋谷のお昼の話をすると、 越後屋 三太夫 の定食が好きです。

それと今年は私用やお仕事で羽田と函館を5往復していたみたいです。自分でもびっくり。

チェックインのコメントに「はい」と何回書いているか

Twitterはい (from:uvb_76) で検索したほうが早そうですが、チェックインから発言回数をしらべます。以下の場所のチェックインで「はい」と発言していました。

  • 和み酒房 げん
  • 東京国際空港 (羽田空港) (HND)
  • 東亜飯店
  • 中華そば 櫓屋
  • 居酒屋「三代目」鳥メロ 函館五稜郭
  • ラウンドワン 福岡天神店
  • デザイン・フェスタ・ギャラリー原宿EAST
  • ソアリン:ファンタスティック・フライト
  • すしざんまい
  • BEER DINING The Griffon

というわけで「はい」の合計は10回です。ソアリン:ファンタスティック・フライトは早起きして舞浜に行く価値があるのでみんな乗ってください。

その他コメント

挨拶シリーズ

f:id:uvb_76:20191226011550p:plain
あいさつと思われるshout

どこかしらに初めて乗り込んで行くときに多くこの発言が見て取れます。

人生どうでも

f:id:uvb_76:20191226012736p:plain
飯田橋
1回でした。

関心を示している

f:id:uvb_76:20191226012842p:plain
関心を示しているshoutの図

入って中見て関心しているチェックインにつけられます。

終わりに

次はAPIからチェックインの地図を起こしたいですね。

22日目はのりたろうさんです。ご期待ください。

参考

DevToolでいい感じに要素をとったりコピーするときに参考にしました。

平成Ruby会議01に登壇してきた #heiseirubykaigi

なにをしてきたか

「やわらか増税」というタイトルで平成Ruby会議 01に登壇しました。

何を話したか

2019年10月の増税について15分話しました。当日は17時と後の時間の発表だったので、昼時点でスライドを一度アップロードして発表時間が余ったときや想定される質問を考えて補足のスライドを6枚くらい作っていました。

発表自体は早回しにした結果12分ちょっとで終わったので、補足のスライドを紹介しました。

どういう反応をもらったか

訳ありで懇親会出席できなくてフィードバックを対面でもらえなかったのでtwitterから反応を拾っていました。 https://twitter.com/search?q=since%3A2019-12-14_17%3A00%3A00_JST%20until%3A2019-12-14_17%3A20%3A00_JST%20%23heiseirubykaigib&src=typed_query&f=live

「時刻に依存したテストのcontextの切り出し漏れを防ぐためにシステム時刻を変更してテストしたいんだけどいい方法無いですか」というといかけを発表中にしたところ、@znzさんから libfaketimeというライブラリを紹介いただけました。linuxのプロセスレベルで時刻を騙せるライブラリということで、これをCIに組み込んだブランチを作ってテストを投げると良さそうですね。ありがとうございました!

ふりかえり

この発表は社内で行われているPepabo Tech Fridayというイベントで話した内容を整理してスライドとして起こしたものです。話す内容だけはまとまっていたのでそこからスライドを起こしました。

Pepabo Tech Friday 始まってます! - ペパボテックブログ

税率についての話やサービスの背景について話すとどうしても5分弱もっていかれて、開発についての話や10月1日を迎えた後の話があまりできなくて話す内容を調整するのが難しかったです。また、軽減税率をどうやって設定してもらうの?という話については一切しなかったのでそこも別の機会に話せたらな、と思いました。

話せなかった内容というと、今後また消費税の税率が変更されることを見据えた話もできませんでした。税率が変わるだけなら良いのですが、もし3つめ以降の税率区分ができたりするとどうなるか、等。予想できないので今回実装を考えませんでしませんでしたが、設計としてどうするとよいかは個人的に掘ってみたいです。

聞きに来てくれた皆様、スタッフの皆様、ありがとうございました。

Heroku Meetup #27に行ったメモ

行ってきた。

MoneyTree

https://moneytree.jp/ のなかのひとのお話

  • JPとAUで400万人が利用
  • Heroku と AWSを使って動いているよ
  • Heroku Enterprise使ってるよ

  • 32apps

  • 667dynos
  • マイクロサービス
  • python ruby いろいろ

NewRelicのApplicationがまとまってて、これどうやったら実現できるのかなと考えてた。(NewRelicは別契約?)

http://postgres.sios.com/modules/newbb/viewtopic.php?forum=1&topic_id=149&post_id=150 PgBouncerというコネクションプーリングを実現できるくんがいるよ

Heroku Platform APIを使ってみた

テラスカイなかのひと

  • SalesforceとLINEをつなぐコールセンターの運用
  • Heroku Platforma APIってなに
    • Herokuの設定の自動化とかできるよ
    • アカウントアドオンアプリケーションパイプラインプライベートスペース
  • Terraformはこれを叩いてるのかなと考えてた。
  • https://devcenter.heroku.com/articles/platform-api-reference
  • 一覧系の上限は200件、続きはリクエストが必要

EC Boosterのバッチ処理の話

  • ワーカーの再起動に影響されることなくバッチ処理を行いたい
  • 頻度少ないバッチ処理のためにつよいDynoを起動し続けるコストを下げたい

Dynoの再起動とは

再起動するときに何が起きるか

  • DynoにSIGTERMがとぶ
  • 30秒以内に落ちないときSIGKILLを飛ばす

デプロイするとなにがおきるか

  • SidekiqはSIGTERMを受け取る
  • 実行中のジョブはキュー(redis)に保存される
  • デプロイ後、キューから取り出して再実行

どうした?

WorkerDynoのsidekiqがOne-Off Dynoを作ってバッチ処理をお個合うRails runnerを実行する

dyno.createでdyno作れるのーーー

よかったところ Dynoの寿命を自動でコントロールできた

100Dynoまで同時起動できる

$1.6ですんだ

リトライが大変だった。単純にリトライを書くとworker Dynoで動いちゃうので、再度Dyno Createを行う必要がある。

AirPods Proを買った

Apple川崎によったら在庫があったので手が滑った。1ヶ月の間なら返品できるらしいし…

バッテリーの持ちは流石にWI-1000XM2のほうが圧倒的なんだけど、ノイズキャンセリングAirPods Proのほうが自然に周りの音を消してくれる印象。で、WI-1000XM2売るorAirPods Pro返品orAirPodsPro売ると考えてはいるんだけどなかなか難しい。AirPods無くしそうだしその前に手放したい気分もあるけど耳栓として残すのもありなんだよな…

音はWI-1000XM2もAirPods Proもペラい…って感想だったんだけど、イコライザ噛ませたらまあいいんじゃないって感じになった。foobar2000iOSで使えるのは便利。

WI-1000XM2を買った

気がついたら買ってた。音のなる耳栓。RHA MA750Wirelessからの乗り換え。 ノイキャンは良い。最初ずっとノイキャンOFFの状態と外音取り込みの状態で使ってて、こんなにノイズキャンセリング弱かったけ?とかやってた。

一週間使って

  • 38000は高い
  • コントローラが左手側にあるのまだ慣れない
  • 独自にイコライザが存在してて助かった。デフォルトの状態だと物足りない…
  • マイクは問題なさそう
  • 仕事で使うと1日1回のリモートミーティングのための機器切り替えがダルい(ペアリングに時間がかかりすぎる)
  • AirPods Proが普通に買えるようになったら売って乗り換えても良いな…

という感想です。