株式会社はてなに入社しました
どういう時に自分の状態が悪いかと良くないときの対処方法
なるほどね。ヨサソウ
状態の悪さがわかる指標
- 起きてるにも関わらず出社する気が起きなくて午後までボーッとしてる
- なんかおなか空いてる気がする
- 分かってるのに分かりたくない駄々っ子状態になる
- 他人への要求水準が高くなる
改善案
- 楽しいタスクをやる
- テスト前に掃除する的なヤツ
- 寝る
- マンガ読む
- ゲームする
- 食べる
しんどいときに何やっても良くはならないので、今この瞬間の負荷を減らさないといけないと思う。なので本来は「タスクを減らすよう関係者と握る」「後で良いものを本当に後で良いとラベリングして視界/脳内から追い出す」が良い。(とは思っているものの、実践できないので、迷惑を掛けることでアラートを上げてマネージャに何とかして貰おう)
寝るのは強制的にタスクを追い出せるのでオススメです。マンガ・ゲームは、それに集中できるぐらい楽しいので追い出せるんだと思う。
楽しいタスクをやる、は「優先度の順位がおかしくなっている」「おかしくなる程度に今危ない」と分かって貰える (変な成果物がチームの手元に残る) のでアラート効果が高いんじゃないだろうか。しかもみんなの日々のツラみは何か解消されている。最高じゃん(ぉ
これらの改善案を、会話する前にやると迷惑がかかるけど、何もせずにズルズルしてると 1 週間ぐらい戻ってこれないので、一日二日で迷惑が収まるなら遊び呆ける日を作っても良いのでは!?(自己中心的な発想)
食べるのはなんか体を痛めつけてる感じがして一瞬だけ満足感ある。そして太る。
書いた後読み返してみての感想追記。
つまり逆に考えると「優先度の順位ができてない人を見かけたらタスクを奪いに行く行動をしろ」ということになる。
— Takafumi ONAKA (@onk) February 21, 2019
よく見ると自分は言われた通りの順番でやらないのに、他人には要求が高くなるわけで、本当に迷惑ですねコレ……。
— Takafumi ONAKA (@onk) February 21, 2019
去年買ってよかったアイテム ベスト3
BIBILAB はだけない着る毛布
BIBILAB (ビビラボ) はだけない着る毛布 ブラック Mサイズ 2018モデル HFM-M-BK-18
- 出版社/メーカー: BIBILAB
- メディア: ホーム&キッチン
- この商品を含むブログを見る
僕が買ったんだけど、2 週間後には妻も買ってました。
それ以前はロング半纏 (膝まであるヤツ) を着て満足してたけど、完全に世界が違う。暖房要らず。
iRing
AAUXX 正規代理店品 iRing 車載ホルダーになるフック付 iPhone スマートフォン タブレット スタンド スマホリング シャインホワイト
- 出版社/メーカー: iRing(アイリング)
- メディア: エレクトロニクス
- この商品を含むブログを見る
2 万円弱の 7〜8inch タブレットを買って、ガラスが割れたら買い換える運用をしている。なんと去年は iRing を導入した結果割ってない。いつも 8 ヶ月ぐらいで買い換えてたのに。
カードケータイ KY-01L
前の記事がコレじゃん。
電話が受けられるモバイルルータとして大活躍。会社や家に置きっぱなしだったケータイを持ち歩けるようになりました。(今まで持っていたケータイとは何だったのか……)
こちらからは以上です。
カードケータイ KY-01L を買った
電子ペーパー携帯電話を買った pic.twitter.com/9kMZ4GP7wC
— Takafumi ONAKA (@onk) November 24, 2018
ほー いいじゃないか こういうのでいいんだよ こういうので pic.twitter.com/CJHu81H22f
— Takafumi ONAKA (@onk) November 24, 2018
いやー、ようやく! ようやく僕の使い方に完全にジャストフィットしたケータイが出てくれたんじゃないか。
ここ数年、ずっとガラケー+ 7〜8インチタブレットを組み合わせる生活をしていて、今は
を使っていた。
ガラホなのは、1 年前に、ちょうど帰省の直前にガラケーを紛失したので docomo ショップに駆け込んだのが理由。重さが倍になってしまって、持ち歩くのが億劫で苦しんでいた。
7〜8インチタブレットが好きなのは感覚の問題で
- 電子書籍をヘビーユーズしているので小説/技術書/マンガが読みやすいディスプレイサイズが欲しい
- コードが読めるサイズだとノート PC が無くてもコードレビューができる
- あまり周りに利用者が居ないのでちょうど良いデバッグ端末になる
- ゲームをタブレットで遊ぶと迫力があって楽しい
- ギリギリ尻ポケットに入る
が魅力なのです。
というわけで、ケータイに求めるのは Wi-Fi モデルのタブレットでできないことで、つまり通話とテザリングと (タブレットが無い緊急時に) Web が見られることの 3 点。まさにその用途だけに特化したものが出てくれるとは思ってもみなかった。最高では!?
一つだけ諦めたのはキャリアメールで、これはタブレットから IMAP で行うよう切り替えた。最近はサーバ落ちたときにもメール通知という手段を使わなくなってきたし、だいたい家と会社の往復しかしてないし、数十分放置して問題になるような SPoF もほとんど無いし、もう諦めても良いだろう。。
マルチテナントで ActiveSupport::CurrentAttributes を使おうと考えた
マルチテナントのアプリケーションを作っていて、サブドメインでアクセスしたらそのテナントのデータを表示したい。
apartment gem を使うのが一般的だと思うが、 builderscon tokyo 2018 で つらくないマルチテナンシーを求めて: 全て見せます! SmartHR データベース移行プロジェクトの裏側 という発表を聞いたので、せっかくなら organization_id を全テーブルに持たせる感じのデータ構造にしようと考えた。
以下のような作戦です。
(1) サブドメインを rack middleware で見て、 ActiveSupport::CurrentAttributes に保存する
class OrganizationInjector def initialize(app) @app = app end def call(env) req = ActionDispatch::Request.new(env) Current.organization = Organization.find_by!(subdomain: req.subdomain) @app.call(env) end end
(2) モデルでは default_scope
で制御する
class Article < AR::Base default_scope { Current.organization && where(organization: Current.organization) } end
というわけで
よっしゃ ActiveSupport::CurrentAttributes 使っていくぞ!!!
— Takafumi ONAKA (@onk) October 8, 2018
となりました。
検索して全部見る
使っていくぞ!!! と叫んでコードを書き出して、ふと
「Current.organization
作るんだったら current_user
じゃなくて Current.user
でも良いなぁ」
と思ったので、GitHub でひたすら ActiveSupport::CurrentAttributes
を使っているコードを検索して、検索結果を 100 ページまで全部見た。
このときに、ちょっとでも参考になる可能性があるな、と思ったらとりあえず ghq get
して 中を読む ようにしているんだけど、その過程で 3 つの良い出会いがあった。
(今回は検索結果 100 ページで中を見たのは 17 レポジトリなので、異常に S/N 比が悪い。検索力が低い……。
operator_recordable に出会った
https://github.com/yujideveloper/operator_recordable
record_with_operator gem、便利なのでメンテしてあげて欲しい……。 https://t.co/6eCDVImOL8 https://t.co/PShswFCPwI
— Takafumi ONAKA (@onk) September 13, 2017
CurrentAttributes は使わない?w https://t.co/j7FpvXJj16
— Takafumi ONAKA (@onk) September 14, 2017
と以前から妄想していた、record_with_operator の AS::CurrentAttributes 版があるのを知った。
動く実装がなくなって久しいので完全に最高。
rectify に出会った
https://github.com/andypike/rectify
導入しやすい trailblazer みたいなヤツです。
個人的には Rectify::Command の記法と、テストの stub 方法が充実しているのが気に入った。 まだ日本語の記事無いっぽいので狙い目。コードリーディング会で読むのにちょうど良いサイズだと思う。
動画も見た。 http://andypike.com/blog/conferences/rubyc-2016/
このレールは良いレールなので選んでも良いなぁ。
rails_multitenant に出会った
https://github.com/salsify/rails-multitenant
グローバルな変数に入れて default_scope でやるって発想は完全に同じで、
実装方法が AS::CurrentAttributes
ではなく自前なのが違う。
グローバルなコンテキストに GlobalContextRegistry
って名前を付けてるのが最高。触ると危ないヤツは危ないことが分かる名前であるべきだ。(なので AS::CurrentAttributes のクラス名は Current
ではない方がヨサソウ)
中身は Thread.current
ですね。
自分で Thread.current
扱ってるよりもみんなの目を通ったコードの方が安全だろう、というのが AS::CurrentAttributes を使おうと思ったキッカケなので、gemify されてるならコレにしようかな。サクッと読める (すぐ自前に乗り換えられる) サイズなのも良い。
salsify は salsify_rubocop がとても似た音楽性を持っていて好きな会社なので、gem を使えて嬉しい。
全部見た結果
current_user を Current.user にする必要があったら設計おかしいよねという結論になった。(知ってた
— Takafumi ONAKA (@onk) October 8, 2018
分かっていたけど監査ログとマルチテナント以外の使い道は無さそうだなぁ。(この用途で使いたいから別にいいんだけど。
— Takafumi ONAKA (@onk) October 8, 2018
という印象です。他の使い道がある場合は教えて欲しい。
「試用期間が明けたらブログ書くぞ」と思っていたが 3 ヶ月前に終わっていた
京都への観光旅行で終わってしまうと怖いと思って明けるまで待っていたんだけど、どうも有休発生と混同していたっぽい。 よく考えたら半年って長いよね。
というわけで株式会社はてなに入社していました。
マンガチームで GigaViewer というマンガビューワを作っています。 また CTO 室を兼務し、生産性向上に向けての取り組みを行っています。
さぁ日記書くぞ!