読者です 読者をやめる 読者になる 読者になる

valid,invalid

関心を持てる事柄について

Rails の cookie session をデコードする

Ruby Ruby on Rails

staging のアプリケーションでのみ起こるバグを調査している折、どうやらセッションにちゃんと値をセットできていないぽいと気付いた。

そのアプリは cookie session を採用していたので簡単に暗号化された値は手に入ったが、これはどうやったらデコードできるんだろうと思って同僚にアドバイスを求めたら A simple script to decode Rails 4 session cookies · GitHub あたりに辿り着いた。

貼った gist だと諸々 require しているが、該当のアプリケーションの Rails console に入れれば以下で OK だった。

def decrypt_session_cookie(cookie, key)
  cookie = CGI::unescape(cookie)
  
  # Default values for Rails 4 apps
  key_iter_num = 1000
  key_size     = 64
  salt         = "encrypted cookie"         
  signed_salt  = "signed encrypted cookie"  

  key_generator = ActiveSupport::KeyGenerator.new(key, iterations: key_iter_num)
  secret = key_generator.generate_key(salt)
  sign_secret = key_generator.generate_key(signed_salt)

  encryptor = ActiveSupport::MessageEncryptor.new(secret, sign_secret, serializer: ActiveSupport::MessageEncryptor::NullSerializer)
  encryptor.decrypt_and_verify(cookie)
end


# Take the following value from your cookie for your web site
cookie = 'your encrypted cookie'
key = ENV['SECRET_KEY_BASE']

puts decrypt_session_cookie(cookie, key)

store が cookie でなくて memcached とかだと値を拾うための key がアプリケーションの独自ロジックで生成されたりしていてもっと大変になると思う。


余談だが、クエリストリングをセッションに格納するだけの処理がうまくいってなくておかしかったそのバグは、クエリストリングが nginx のレイヤーで落とされているために起きていた。ローカルではそのレイヤーを設けてないので再現しなかったわけだ。(本当は環境をきちんと合わせた方が良さそう)

環境

2017年1月は英語学習を頑張る月にした

年初に 2017年の目標 -1年の目標を立てるのをやめる- - valid,invalid で書いたように今年は30日ずつ何かを頑張ることにしており、1月は英語をそこそこ頑張ることにした。

1日1~2時間程度を費やすだけのそこそこの挑戦だったが、中学時代以降で最も集中的に英語の勉強をしたかもしれない。

目標

  1. リスニングとスピーキングの苦手意識を除く
  2. 語彙を200増やす

とりあえず、未だに英語が聞こえてくると鼓動が早くなるのを克服したかった。

あと、どれだけ語彙があったのかわからないが中学英語で1,200ぐらいらしいのでせいぜい2,000ぐらいだと思う。この目標は数の達成というより、語彙ってどれぐらいの期間でどれぐらい増やせるものなのか測ってみたいと思った。

オンライン英会話

リスニングとスピーキングの苦手意識

なぜ苦手意識があるかというと今まで全くやってこなかったからなので、とにかく会話しようと思ってDMM英会話を1月1日に契約した。他にも色んなサービスがあったが会社から受講料金の一部補助が出ること、hotchemi さんのブログが決め手でDMM英会話にした。

25分のレッスンを毎日受講した。料金は定額なので毎日受けることで料金の元が取れる。

仕事の忙しさは今年も変わらず、年度末まで仕事が繁忙期なので毎日やるのは厳しいのだが、朝10:00や10:30にレッスンを入れて規則正しく起きるようにした。去年を思い出すとたまに11時ぐらいまで寝過ごしたりしていたので寝坊防止に一役買っている…かもしれない。

実は1年以上前にも会社の補助が出て別のオンライン英会話サービスに挑戦していたのだが、仕事が忙しくなって止めてしまった…というのは理由の一つでしかなく、本当はあまりにも英会話が苦痛で逃げてしまった。正直今も苦手なのでレッスンのたびに汗をかくのだが、「とりあえず 30 days だし頑張るか」というゆるい気持ちと「逃げちゃダメだ」的ヒロイズムで頑張っている。

教材

知らない人と25分話すのは日本語でも苦痛なのでちゃんと教材を使ったレッスンを受けて会話が成立するようにしている。

デイリーニュースライトという Voice Of America の記事を使った教材が毎日更新されるのでこれを毎日使っている。ワールドワイドなトピックについて英語で語るのは結構楽しい。講師の国の事情や文化は特に良い。

しかしたまに “ツイッターで話題www” 的なレベルの記事が出てきてこれはあまり面白くない。デイリーニュースというワンランク上の教材もあり、こちらの方が有意義な内容が多いのだが一度挑戦した時にかなり難しく感じた。充分な予習ができれば良いがいつも朝に受講していてそれが難しいので今は見送っている。

その他

人気講師のスケジュールは公開後にすぐに埋まってしまう & 一度に複数のレッスンの予約はできないので、oinume さんの lekcije というサービスを使ってお気に入り講師の空き時間を通知してもらうようにしている。基本的には朝のレッスンが終わったらすぐに翌日分を予約しているが、土日の受講時間は結構不規則なので lekcije に頼っている。

また、いま一緒に働いている fesnow さんの勧めで、たまに会話を iPhone のボイスメモで録音して空いた時間に聞くようにした。レッスンの中で聞き漏らした言葉を拾えたり、シャドウィングに使えたり、復習になったりと良いことづくめに思えるが、自分の声によるひどい英語を聞くのは精神的にかなりの苦痛を伴うので素人にはオススメできない。

感想

今のところDMM英会話が最も実になっている感がある。英語学習で学んだことは実践しないとすぐ離れていくので、昨日言えなかったことを明日言うみたいなサイクルをガンガン回していくと良い感じ。

まだ苦手意識は消えてないので精神的な負荷も一番大きいが、知らない人と話すハードルみたいなのは想定より低かった。

発音

特に何もしていない。が、英会話の先生によると皆「英語学習の早めにやった方が良い」と言うのでやれば良かったか。

正しい発音を知ればリスニング力も上がるし、ライティング時のミススペルも減るらしい。マジか。

英会話のレッスンを録音したのを聞いてると圧倒的に抑揚がなくて凹む。それでも先生に伝わるのは日本人の英語に慣れているからだろうな…と邪推する。

語彙

iKnow

DMM英会話の有料会員になると iKnow という英単語学習サービスが無料で使えるようになる。これもほぼ毎日欠かさずやった。語彙は1ヶ月で大体300~400ぐらい増えたと思う。予想よりかなり多くて驚いてる。

iKnow は月額1,480円で英単語アプリとしてはけっこう割高な印象だがかなり良い。コンテンツも充実しているし、エビングハウス忘却曲線的な何かに基づいて過去に学んだ英単語を不意打ちのように出題してくる学習システムがとても良い。

やり方

その時点での要復習単語の数がそのままアプリの通知バッジの数字になるので、ある程度単語を勉強してから1日放っておくと簡単に100近く貯まる。これを消そうと頑張りすぎるとイタチごっこになるので、この数字を1日に1~2回ゼロにするというペースで学習した。

例文とかを読み飛ばしつつサクサクやると1日20分ぐらいで終わるが、例文やリスニングをしっかりやったり画像のイメージを脳に刻み込みながらやると大体40分ぐらいかかる。通勤・昼休み・歯磨き・就寝前のストレッチなどの時間にこまめにやっているのでそんなに負担感はなかったが本を読む時間がなくなった。

また、アウトプットの反復も大事なので仕入れた英単語や文をなるべく仕事で使うようにした。Pull Request や GitHub Issues のコメントが主で、London team も交えた週一のchat meeting や採用活動でたまにという感じ。

iKnow の Web 版はこんな感じ

f:id:ohbarye:20170201023846p:plain

スピーキング

“文法は大体わかっていて、英文は読めるのに全く話せない人向け” という日本人ホイホイな感じのレビューコメントを見て「自分だ…」と思い『どんどん話すための瞬間英作文トレーニング』を試してみた。

なるほど確かにやってみると中1レベルの簡単な日本語を見ても英文がまったく出てこなくて憂鬱な気持ちになる。が、これができるようになるとかなり会話の瞬発力が増すと思った。

1月の前半はこの本を半分ぐらいまで一気にやって多少の英作文力の高まりを実感してたのだが、他の学習に比べてあまり面白くなくて辛かったので途中で止めてしまった。

時間あれば1冊やり通したいところ。

英語学習について思ったこと

1ヶ月けっこう頑張ってみた結果、ただ本当にコツコツ継続するしかないというのがわかって、「1週間で英語をマスター」「聞き流すだけでOK」的な教材に騙されてはいけないという思いが強くなった。

また、読書聴話4分野それぞれの勉強で相互作用が生まれるのでどれか一つだけ頑張るよりも全体的に底上げするのが良さそうに思う。これは人によるかもしれない。

筋トレと同じ

やればやるほどに英会話は筋トレだと思うようになった。とにかく反復するしかない。

語彙をいくらインプットしても使わないと覚えていられない。紙の英単語帳をぱらぱらめくったり文章中のわからない単語を調べたりしても数日後にはもう忘れる脳なので、iKnow ぐらいとにかく何回も強制的にインプットさせられないと駄目だとわかった。

会話も瞬発力なので何も考えずに言葉が出てくるところまで到達して始めてそのフレーズを使いこなせている実感が湧く。用意した文章を一回綺麗に言えても次に同じことを言おうとして頭で考え始めたらまだ定着していないとわかる。

30 days challenge 自体の感想

「空いた時間はこれをやる」と決めているおかげで、「とりあえず Twitter 開く」とか「Slack 見ちゃう」みたいな時間が圧倒的に減った。SNS は楽しいが有用な情報は20%以下なのでこれはこれでよい。RSS や本を読めなくなったのはちょっと駄目かもしれない。

また、他のやりたいことが湧いてきた時にそれができないという縛りは折角のやる気を殺してしまうかもと思ったがそうでもなかった。むしろ禁欲することで翌月以降やりたいことの詳細なアイディアが色々湧いてきた。

1月はこれをやったぞと胸を張れるのは良い。

そして、30日はとても短い…。

2月以降やりたいこと

色々ある。

  • 引き続き英語
  • お金について勉強する
  • 作曲
  • DDDおじさんになってDDD勉強会する

余熱があるので英語をもう一ヶ月集中してやっても良い気がしているし、別のことをやるにしても英語に関する取り組みのどれかは2月以降も続けたい。

Cookpad TechConf 所感とメモ

ビデオ配信があると知った時は家から論理参加してもいいかな、恵比寿遠いし…と日和ったが、対面でのコミュニケーションもいくつか交わせたので物理参加して良かった。

TechConf というものの techy な内容それ自体よりもプロダクトやユーザーの価値という視点からそれぞれの取組や技術について語っており、それが始めから終わりまで一気通貫して感じられたのが良かった。プロダクト開発に関する知見もいっぱいあった。

まず rejaspotaro さんの海外展開の話が良かった。 グローバルな開発という面では弊社も頑張っているし仕事で体験している l10n / i18n 周りとかを見て「わかるわかる…」と思っていたけど、"Right-to-left writing" とかユーザー定義・セグメンテーションの話あたりから「これは…数歩先を行っている…!?」という感じがした。頑張りたい。

その他、行動ログ分析、プロトタイピング、A/Bテストの話も興味深かった。これらはあまり深く実践できているところではないので折に触れて立ち戻って復習することになりそう。

あとこのブログで何回か書いた Jasper、その開発者の丸山さんに「いつも使っています、ありがとうございます」と伝えられたのも良かった。


以下、ただのメモ :memo:

※ 内容については間違っている可能性あり。

基調講演

  • 言語数=食文化数ではない
  • 同じスペイン語圏でも食文化がまったく違う例
  • 同じ食材でも名前が違ったり
  • 言語をサポートしたからといってその国で使われるわけではない
  • 今は15言語58カ国をサポート

Go Global

Product

  • 生活習慣・味覚・宗教の違い、その他もろもろ現地の特異性を理解せずして海外展開なし
  • 気候->民族文化->生活習慣の順に構築される
  • Kano model (must-be / attractive quality) が国によって違う
    • ベトナムではカフェに wifi があるのが当たり前
    • 郵送するとものが壊れたり
  • ユーザー定義が難しい。属性よりもコンテキストが大事になってくる(なぜ料理をする、どんな状況にいる)
      1. どうやって?(直接聞いた

Development

  • l10n i18n locale
  • 言語と国の組み合わせ
  • 考えるべきこと
    • 検索 男性名詞・女性名詞 / 語形変化 /アクセント記号 .... fuzzy / strict match 正規表現・partial match などで地道に頑張ったり。検索結果のソート時にregionを考慮する。豚肉料理はイスラム圏では弾いたりする。
    • 翻訳 国によって単語を変える(premium はイギリスだと無課金ユーザーに差別的印象なので prime にしたり)。
    • その他全部

Global Team

  • バラバラの拠点でビデオ会議やったりしている
  • 公用語は英語
  • OKR で目的を揃える
  • 海外では無名だったが、海外カンファレンスに出たり大学に行って会社紹介したりすることで知名度を上げた結果採用につながったりした
  • 使っているツールは英語圏対応しているものに変える

sorah

  • global の cookpad は異なる codebase で0から作った
  • global の方の Rails は今のところ普通に運用した AWS ap-northeast-1 us-east-1 / Amazon Aurora / ElastiCache (Redis/Memcache) / Ruby2.3 / Rails4.2
  • 日本で失敗した反省を活かしている

  • Route53 Latency Based Routing で日本かアメリカのどちらかに振り分ける

  • Rails app are capable to autoscaling

  • Peak traffic

    • in Japan, Valentine.
    • in global, so various.
    • Ramadan のときは3倍のトラフィックがくる、緩やかに終わっていくが1ヶ月高負荷な状態が続く。その期間にボトルネックや高負荷なクエリが見つかったりする

バイルアプリの A/B テスト

  • Chanko
  • mobile cannot deploy so often unlike web
  • ユーザーが update してくれない

  • すでにいくつかABソリューションはある OSS もサービス(Optimizely / Firebase Remote Config / Apptimize)も

  • user-features モバイルの過酷な環境に耐える薄いライブラリ

    • ユーザーごとに適用されている機能の組み合わせをJSONで取得
    • オフライン時には最後に取得したキャッシャは1時間
    • ずっと通信できていない場合は機能を無効化する
  • なぜ内製した?既存のユーザーセグメントやログ基盤を利用したいし、ユースケースは限定的

チームでプロダクト開発をするための取り組み

  • 料理きろくのプロダクトマネジメントをやっている
  • スマホで撮影した写真のうち料理写真だけを記録する
  • 写真の判定には機械学習を用いている
  • もともとエンジニアだったが、作りたい物を一人で実現するには限界があるのでチームで開発し、チームのパフォーマンス・成果最大化へフォーカスするようになった

  • 圧倒的な技術力・ビジョン・実績で信頼を得るのは難しい

  • 凡庸でもうまいやり方がある
  • まずは信頼して任せる

よりよい検索体験の為の情報設計とプロトタイピング

  • 検索事業部にデザイナーとして参加
  • 最初はエンジニアの領域では?他にできることあるか?と思った

  • 検索における主要な動機を設定する - 検索対象を自覚していない / している など探すシナリオを分解していく

  • シナリオにアイデアが湧いたら対応が薄い箇所を特定する
  • 機能を作っただけでは片手落ち。機能とシナリオをセットで考えて継ぎ目のないデザインをする。どの動機で入ってきても目的を達成できるような流れを作る。特定のシナリオやシーンで行き止まりにならないか考える。
    • 肉or魚?->サバorぶり->揚げor照り焼き
  • 不測の事態に対応するために実際の生活の中で試す
    • 夕方ノープランで急いで買い物いって店頭で使えるか
    • 冷凍してあると思った具材が無いと気付いたときにどうなるか
  • 粗くても実際に使える、確度の高い部分から形にしていく

快適なサービス開発を支える技術

Setup

  • 開発環境のセットアップ方法を curl setup.sh で全ての環境が整うようにしている
  • 構成管理スクリプトをダウンロードする。MitamaeでChef風のRuby DSL
    • Mitamae は mruby なので依存が少なくて壊れにくい

Development

  • 共用の開発用データベースは本番のコピーになっている
  • ユーザー体験を考えて、テストデータを横行するときでも本番と同じつもりでやる
  • マイクロサービス化
    • Garage / Pact / Expeditor などマイクロサービスをサポートするツールを作っている

Testing

  • Jenkins を使って自動テスト。テストを失敗させたユーザーにSlackでメンション
  • 光速にテストするため、RRRspec / スポットインスタンスを活用

Deployment

  • Slack から Deploy するようになっている
  • デプロイサーバを一つ用意して排他制御するようにしている
  • Slack 経由でデプロイする時、可能な時間は限定している。緊急の場合はシークレットキーを渡せば実行できるようにはなっている
  • 一定期間デプロイロックもできる。その期間にデプロイしようとするとchatbotに怒られる

監視

  • Sentry
  • ジョブの失敗もSlackに通知
  • サービスの障害はZabbixで、落ちたときには電話鳴る

まとめ

  • サービス開発者の生産性第一
  • ただしユーザーが先

Real World Machine Learning

計算機環境の改善、計算機環境構築の効率化

  • 2016/7 EC2 のGPUインスタンスを画像認識に利用していた。ubuntu:trusty から手動でセットアップ
  • インフラの人が居ないと環境を整えられなかった
  • nouveau / nvidea-driver / CUDA/CUDNN / Chaier/Tensorflow/Caffte / 環境変数 etc.. 整えるのに一苦労
  • 全部のせしたAMIをPackerにより作成。手順のコード化+実行の自動化。5分でオンデマンドGPU環境ができる

ML Lundh / ML Class

  • Lunch: 週1で持ち回りで講義
  • Class: 月1で外部から講師を招いて講義

行動ログでプロダクトを改善するには

  • 検索成功率(満足度の定量化)
  • 良いシナリオと悪いシナリオを定義する
    • 良いシナリオ:セッションの最後が詳細ページで終わっている、ブックマークした、など
    • 悪いシナリオ:セッションの最後が検索ページで終わっている
  • どうやってセッション作る?ほぼSQLだけでできる。"sessionize" ユーザーごとにソート
  • lead 関数で次の行を見ることで、検索内容の推移がわかる("ランチ"->"夫 ランチ"->"肉 ランチ" etc.)

  • データでは埋まらない部分

  • ブックマーク内のフォルダ分けが正しくない
  • 検索に使った値はプレースホルダーから来ていることもある。予測変換もあれば入力範囲の狭さから言葉が限定されたりする

  • フィードバックがかかりすぎないようにする

    • ログの期間は有限にする
    • 実測値/期待値で割り引く
  • DWHは一箇所にすべき

2017年の目標 -1年の目標を立てるのをやめる-

2017年は、1年を通しての目標を立てるのをやめることにした。

これまで何度も今年の目標とか豊富とか言ってきたが中途半端に終わったという事実からいい加減学習しないといけない

A year seems too long to me

自律的な目標達成の期間として、自分にとって1年は長過ぎる。

途中で目標が変わる・仕事が忙しくなるなどの不確定要素の割り込みに加えて、挫折する・飽きる・他のことに興味が湧くなどのメンタル面の変化もほぼ100%起きる。

鉄の意志で貫ける人も周囲にはいるけども自分はそうではないので、もっと楽にやりたい。

Try something new for 30 days

「今年の抱負」の問題は目標設定のスパンが長過ぎることなので1ヶ月ぐらいにすれば良いと考えた。

考えたところでこれ何か聞いたことあるな…と思ったら Matt Cutts の "Try something new for 30 days" だった。

  • 30 days about is just the right amount of time to add a new hubit or subtract a habit
  • small changes = sustainable
  • small changes were more likely to stick

なるほど、確かに自分には 30 days challenge ぐらいがちょうど良さそうなので今年はこれを実践してみることにした。

My rules

愚直にやると12ヶ月で12個の挑戦ができることになるが先に述べたような不確定要素もある。自分流にアレンジして以下のルールでやりたい。

  • 1ヶ月で足りないと感じたらもう1ヶ月追加してもよい
  • 繁忙期やハードワークの直後などは何も挑戦しない休みの月を作っても良い
  • 2ヶ月連続で休んではいけない(最低でも6ヶ月は何かに取り組んでいる状態にする)

この挑戦の中には2種類あると思う。

  1. これまでやりたかったことに没頭する
  2. 大きい目標から逆算した 30 days challenge を通じて習慣を作る

1が Matt Cutts のプレゼンでは中心的に語られているが、2の方が自分にとっては大事なので以下に補足。

30 days cannot radically change things

わかりきっていることだけど、痩せる・英語を習得する・腰痛を治す… こういう大きい目標は30日では達成できない

大事なのはこうした大きい目標を分解して小さい目標にすることと、挑戦したことの一部を習慣として定着させること。

small changes were more likely to stick

だから30日で大きい目標が達成できなくても気にしないことにする。

Example

例えば英語の習得に30日間注ぐ月には毎日以下のようなトレーニングを行うとする(あくまで例)。

  1. オンライン英会話のレッスンを受ける 30分
  2. Podcast を用いたリスニングとシャドウイング 30分
  3. 英語で日記を書く 30分

まぁ毎日1.5時間割くのは正直シンドイけど、1ヶ月だけなら頑張れるとする。で、挑戦期間が終わった後に全ての取り組みを一斉にやめてしまうと大したものは何も残らない。が、1つでも有益な習慣が定着するのなら大きい目標の達成は時間の問題になる。(と信じる)

Conclusion

今年は

× 1年を通じて大きな目標を達成する

のはやめて

× 6 ~ 12個の小さい目標を達成する

のでもなく

○ 6 ~ 12個の良い挑戦・体験と大きい目標達成に繋がる良い習慣を獲得する

年にしたい。

少なくとも6個の挑戦や習慣づけ、印象的な体験ができればその1年は満足だと思う。

What I will do

これから決める。去年からの流れだと

  • 挑戦・体験したいこと
    • 作曲
    • OSS contribution / creation
    • 登壇
    • イタリア行く
    • Hip Hop になる
    • 口内環境改善
  • 習慣づけたいこと
    • 英語
    • 肩こり・腰痛・骨盤の歪みを直す
    • 筋トレ
    • 減量
    • 200万貯める

とか。

Effects

効用はあとで振り返る。

体験や習慣の獲得以外にも、無駄な時間が消せそうな気はする。

Risks

  • 1ヶ月ですら長いと感じてしまうかもしれない
  • この取り組み自体に飽きる
  • 習慣が増えすぎて毎日がルーチン化しすぎる(そのぶん無駄に使っていた時間が減るなら良い)

ゆるくやっていきたい。

2016年の振り返り -罪と罰-

総じて

明確な目標無く漫然と過ごしてしまった印象がある。

昨日、友人との忘年会で「お前にとっての2016年を5文字で言うと?」という雑なフリに対して「罪と罰、だな…」と雑に返してみたけどあながち間違っていなかったかもしれない。

これまで怠惰に過ごした結果(罪)としての体重増加に対し、ジム通い(罰)で贖っているのだから…。


仕事

2015年末 ~ 2016年4月まではスタディサプリのリリースでかなり忙しかった。忙しさを言い訳にはできないがそれ以外ほとんど目に入っていなかったような気がする。

それが片付いてからの開放感とふわっとした気持ちを引きずってしまっているうちにまた年度末が近づいてきて忙しくなり…というサイクルに巻き込まれた。教育サービスをやっている以上このサイクルは不可避だと思う。関わりはじめて2年目なのでそろそろ慣れていきたい。

スタイル

あまり大きく変わっていない。

11月から部分的に KanbanFlow - Lean project management. Simplified. とか、付随するポモドーロタイマーとか使い始めた。でも厳密にはやっていない。

後述する不健康具合から集中力が欠けたと感じた時にスイッチを入れるために Slack と Jasper をオフにするのは良くやるようになった。


技術

ずっと Ruby on Rails と Backbone.js を仕事で触っていた他だと、ES6 とか React.js + Redux 構成のフロントエンド領域を申し訳程度に学んだ。これは2017年から仕事でも使う機会があるのでわりと打算的なところもある。

もうちょっと違うパラダイムや考え方の言語をやってみたいというのはなんとなく思った。

その他、対外的なアウトプットとしてどっか勉強会で一回登壇したいと思っていて【RMP×Quipper】Food&Drink meetup #4に出た。

また、GitHub で 10 stars 集める程度には承認される何かは作りたいな〜とゆるふわに考えていたが進捗ダメでした。 https://github.com/ohbarye/kpt-bot が最も近いが届かず。未達だが来年の目標は20とかにしたい。

開発環境

ソフトウェア

Sierra にアップデートしたけど大きな問題がなかった。

シェルを bash から zsh (Prezto) にしてかなり良い感じ。ただ、powerline 用に入れた Ricty フォントの一部 (太字の ij ) がぶっ壊れているのが気になるのでそのうち直す。

f:id:ohbarye:20170101210717p:plain

RubyMine は機能を覚えてもさらに深い奥があって、相変わらず使いこなせているのかどうかわからない感じ。最近なんとなくターミナルも RubyMine 内で開くようになった。これは大きいディスプレイで作業している時は良いが 13 inch のラップトップだけだとだいぶキツイ。

ハードウェア

これまでハードウェアに全く凝ってこなかったしラップトップ一台で高い生産性が発揮できるほうが格好いいと思ってきた。だが、「他の方法を試してもいないのになぜそれが最適と思う?」という疑念を抱かされるちょっとしたきっかけがあって以下のキーボードとマウスを導入してみた。

Kensington SlimBlade Trackball

これは同僚推しの品。 普段から Macbook のトラックパッドを触りまくっていたので本当に代替になるのかと思っていたが1日で慣れてしまった。

Web ブラウジングGitHub で diff 見ながらのレビューの時に結構助かっている感じがある。

TrackballWorks ソフトウェアによるカスタマイズはほとんど行っていないが、マウスの移動速度だけはかなり速くしている。

MiSTEL BAROCCO MD600 分離式 メカニカルキーボード 英語配列 62キー CHERRY 茶軸

腱鞘炎と肩こり対策のつもりで買ってみたがこれが良かった。打鍵時の姿勢が変わって、背筋を伸ばして肩甲骨を寄せた姿勢で長時間タイピングできるようになった。肩こりは完治はしていないが悪化の一途に歯止めがかかっている感じがある。

また、茶軸のスコスコした打鍵感は自分にはかなり合っているようで、今のところ気持ちよくコーディングができている。

キーマクロは今のところ使いどころがあまり無い。


英語

進捗ダメでした。どうなりたいかを全く設定していなかった。

仕事で定常的にやり取りする英語(読み書き)はわりと定型化されているのでだいぶ前に能力が頭打ちになっている感がある。ある程度通じるレベルのブロークンな読み書きを脱して新しい表現を取り入れようと例文集の DUO をぱらぱらと読んで使ってみたりもしたが、定着した表現は30個もないぐらい。

リスニング・スピーキングにいたってはもっと厳しい。ぽつぽつとシャドウイングとかやっていたけどあんまり続いていない。 仕事で喋ったのは数える程度で、夏にロンドンの開発者が来てくれて2ヶ月ほど滞在していた時は毎日卓球したりたまに飲みに行ったりしたが、かなり手加減してもらっているのでぎりぎり話せている感があった。

とはいえ、全く伸びていない感じではないっぽくて、忘年会で日本語が流暢なアメリカ人と練習がてら英語で話してみたら意外といけたような気がする。宗教や移民、結婚といった common だけど deep に話せる話題で会話できてほんの少し自信がついた。


文化活動

Hip Hop

1月に Straight Outta Compton を観てから Hip Hop を少し好きになった。思想・思潮・変遷が俺が知るどの音楽よりも面白いし、知った上で聞くと不思議と "深み" を感じる。グルメな人が食材じゃなくて情報を食べてるのと同じ感じがするが、とにかく良いと感じるのだから仕方がない。

あとグローバルカンパニーの一員として、英語の歌やラップの一つもできないのは恥ずかしい(去年フィリピンの開発者が来てくれた忘年会で日本語のラップをやってしまったことをずっと後悔している)と思って N.W.A. の "F**k the Police" という曲を練習した。とりあえず2週間ぐらいかけて Ice Cube パートの歌詞もリズムも全て覚えたところで力尽きた。

Netflix

Hulu やめて Netflix に切り替えた。

Hip Hop 絡みでいうとオリジナルドラマの Get Down と Hip Hop Evolution がかなり良かった。前者は Hip Hop 黎明期のフィクションで、1970年頃のニューヨークやサウス・ブロンクスの事情とそこでなぜ Hip Hop が生まれたのかが見えてくる。対して後者はドキュメンタリーで、70s ~ 90s の Hip Hop の変遷と各時代の重要人物、アメリカ東西での差異などがわかる。たびたび挿入される各年代の有名曲から色々掘り下げて聞いていけるのも楽しい。特に Funky 4 + 1 の "That's The Joint" は仕事中も無限ループして聞いていたりする。

"SF ブラックコメディ" みたいに紹介された Black Mirror は世にも奇妙な物語みたいな感じで一話完結モノで良さそうだったのに数話観て「あまり合わないな」と思った。だが、その矢先、シーズン3の第4話である『サン・ジュニペロ』が Reddit で絶賛されているのを見て気になったので観てみたら非常に良かった。こういうのが観たかったんだよ…という感じ。なので最近は「このためだけでも Netflix に登録した価値があった」と言って人に勧めまくっている。

Hulu

Hulu やめた、と書いたけど正確に言うと「観たいコンテンツがなくなって解約したんだけど Walking Dead シーズン7が放映されて一時再契約した。で、終わったらまた解約した」。

映画

あまり観なかった。

インド映画の『PK』は宗教問題をコメディに昇華できていて良かった。主演アーミル・カーンのアンシャンレジームぶっ壊し系演技は過剰、ゆえに好きなんだけど、インドのような込み入った宗教事情がある国でこれを上演して本当に大丈夫か?と思った。「どの宗教をも貶める意図はない」と映画の前置きにもあったが、どう前置いてもそう受け取ってしまうことこそが盲信なのでは…。

アニメーションだと『君の名は』と『この世界の片隅に』を観た。

ゲーム

PS4 を買ってまず『The Last of Us』をプレイした。肝心のストーリーは一本道で若干の消化不良感はあったけど PS2 でゲーム体験が止まっている身からしたら全体的に「凄いよォ…」という印象。

しばらくして『ペルソナ5』をプレイした。とにかく良かったしサントラが欲しい。

『トリコ』とか『FF15』も気になったけど『ペルソナ5』より楽しめる気がしないので今のところ見送っている。

その他

観劇、落語、読書その他では特筆すべきことがぱっと思い浮かばないレベル。

音楽だと5月に来日した Victor Wooten のライブが凄かったのと、SUMMER SONIC で観た Pentatonix が良かったな〜ぐらい。

あと12月になんとなく思い立ってギターとベースを久しぶりに弾いて宅録の仕方を思い出したりしていた。グリスしただけで指がめちゃ痛くなった。


健康

冒頭に書いたように、2015年後半から2016年中盤まで結構不健康だった。

5月ぐらいに78kgぐらいで体重が高止まりしていた。自分の場合、1 ~ 3年周期で10kgぐらい増減するので気にしてなかったが、年々体重 Max 時の体調が悪くなってきたので見直したくなった。特に食後の胃やお腹の張りが気持ち悪くて午後の仕事の集中力に欠いたりした。

また、肩こりや背中・腰の痛みも結構あって辛かった。これらは60分2,980円のマッサージは何回か行ったが根本解決にならなかった。

ジム

というわけで8月末頃からジムに通うことにした。もう敬遠できない…。

区営のスポーツセンターなので会員費はなく、1回250円。最低週2回、多くて4回は行って筋トレ・有酸素運動・ストレッチをする。すぐ飽きるかと思ったのだが結構ハマっている。成果が数字ですぐフィードバックされるので「前回より重い重量を持ち上げられた」「前回より長く走れた」という実感が簡単に得られる。

筋トレ

1回の通ジムで、何らかのトレーニング x N 回(e.g. 腕立て15回、腹筋20回とか)を1セットとして20セットは必ずやる。だいたい、その倍の40セットやる。

本気で筋トレやっている人に比べたら全くもって俄でライトな内容なのであまり自慢することは無いのだが、オフラインのコミュニケーションでは「筋トレやってる」と宣言して、自分を追い込もうとしている。

最初はプロテインを飲まずに特茶を飲んでいたけど効果を最大化したいと思うようになり、近所のスーパーで売っているZABAS のミルクプロテインを飲むようになった。430ccで100kcal、タンパク質15g ぐらいで少なくとも特茶よりは良さそう。「プロテインは不味い」というイメージがあったけどこれは飲むヨーグルトみたいでむしろおいしい。来年はもっと本格的なやつを買う。

そういえば年越し忘年会直後に公園で5年ぶりぐらいに懸垂に挑戦してみたら数回できた。5年前は1回もできなかったので結構感動した。が、そのあと首と肩を痛めて元日から寝起きが悪かった…。

減量

「減量と筋肉の増強を同時に行うのは難しい」と『SOFT SKILLS』に書いてあったし、本当はどっちかに絞ったほうが良いのだと思う。しかし自分のモチベーションが保てるようにとりあえず全身の筋肉増強しつつ体重も減れば良いかなという感じ。

上記の筋トレ20セット後に10 ~ 20分のウォーキング or サイクリングで汗をかきつつ筋肉の回復を待って、また筋トレに戻って…を繰り返している。

ちなみに体重の方の成果は、現在 72.2kg で - 5.7kg / 3ヶ月なのでそれなりに出ていると思う。ベルトの穴は2つ縮まった。


あとはちょっとした映像作成したり香川や京都に旅行に行ったり VR を体験したり引っ越したりした。2017年も引っ越したい。

ohbarye.me with a cat eating fishes

ohbarye.me with a walking cat - valid,invalid の続き (?)。

http://ohbarye.me

f:id:ohbarye:20161231003822g:plain

というわけで、

  • クリックした場所に魚を置く
  • 猫がそこに寄っていく(スピードアップする)
  • 到達すると食べる
  • だんだん太っていく

ようになりました。

あとは

  • 猫が歩く方向を向く
  • 躍動感ある gif にする

ようにしたいけど今の自分の感じだと gif 作るのに物凄い時間を要しそう。

ES5 で書いているのが途中で辛くなってきて ES6 で書き直してみたけどどうせなら ES7 でも良かったと書いていて思った。

ohbarye.me with a walking cat

http://ohbarye.me

me

今は画面をクリックすると猫が方向転換するだけだけど、

  • 猫が歩く方向を向く
  • 躍動感ある gif にする
  • クリックした場所に魚を置く
  • 猫がそこに寄っていく(スピードアップする)
  • 到達すると食べる
  • だんだん太っていく

とかやりたい。