massa142's blog

くり返す このポリリズム

2020年1月の振り返り

お仕事

去年のおわりから「これからのプロダクト開発」についてずっと話してきて、年明けからチーム体制も変わって新しいフェーズに入ってきてる。まだまだ途中だけどみんなと良い議論ができている感触があるので、このまま頑張って「正しいものを正しくつくる」フットワークが軽い体制になれるようにしていきたい。

そのためにはドメイン知識・ホテル業界についてもっと学ぶ必要があって、だいぶ大変だけどチームで対話を増やして取り組めているのが楽しい。個人的にもレベニューマネージメントについて勉強したり、現場に行ってみたり、他のチームの業務に顔出してみたりしてみて、ほんとに学びが多い。

1月で担当した主な開発は、レベニューマネージメント業務効率化のためのGAS実装とhelpdesk対応。GASはあまりやったことなかったけど、これでだいぶ詳しくなれた。underscoreGS便利ですね。あとhelpdesk対応・運用業務が現状まあまああるんだけど、理想はNoOpsだよねということでチームで勉強できたのがよかった。

NoOpsに限らず、理想・夢をちゃんと言語化して現状とのギャップをチームで共有するのは大事だなあと。無意識に持っちゃう現状維持バイアスを引き剥がせる。

イベント

読んだ本

買ったもの

自宅トレ頑張るために、ヨガマットとウォーターダンベルを購入。ウォーターダンベルはそこまで重さはないけど、引っ越しのときとか置き場所に困らないからよさげ。

姿勢を良くしようという試みで、骨盤サポートチェアと加圧シャツを買ってみた。骨盤サポートのやつは座ってみるとほんとに骨盤がスッと立つので気持ちいい。加圧シャツも胸をはれるようになるし、冬だとあったかいので気に入ってる。

@iktakahiro2019年 今年買ってよかったものを読んで、窒化ガリウムタイプの充電器とSONYのワイヤレスイヤホンは購入。この充電器はApple純正に比べてコンパクトで軽いので、持ち運びが捗る。ワイヤレスイヤホンのほうは買ったまままだ開けてないや。冬の間は防寒のためにヘッドホン一択なので。春になったら試してみよう。

Perfume Closetで新作が出たのでシャツとかニットとかを散財購入。あと前に買って気に入ってたキャップとジャケットをリピートして買っておいた。

KPT

KEEP

  • 手書きの日記
    • 自分の言葉で感情・思考を吐き出すいい練習になってる
  • Scrapboxでの思考整理
  • 本をいい感じのペースで読めている
  • 皇居ランもいいペースで走れてる
  • 指のストレッチ
    • 特に薬指の柔軟性・独立性があがるとタイピングに繋がるのではと思ってはじめてみた
  • ちゃんと寝る
    • Fitbitで睡眠ログとるようにしてから可視化されてよい
    • やっぱりちゃんと寝たほうが心も体も健康的
  • 夜ご飯の糖質制限
    • これから体重を落としていく

PROBLEM

  • 本を読んでの学びを残してない
    • あとでブログに書こう
  • Uber Eats頼みすぎ問題
    • 人間はこうも怠惰なのか・・・
    • もうちょっと節約していこう
  • 部屋でのトレーニングさぼってる

TRY

  • 簿記3級に向けての勉強
  • 確定申告チャレンジ
  • Perfumeライブに備える
  • KONAMIジムを再開
  • Nike Training Clubやる回数を増やす

2019年の振り返り

個人

2019年は失うものが多かったです。
自分のダメなところを思い知らされたけど、これを機に人として成長していくしかないなと思ってます。

自分のなかで整理できるようになるまで時間がかかって、今年はインプットもアウトプットも少なかった。 年始に立てた目標もまあボロボロだったし、途中からは執筆なども書ける状態じゃなくて、色んな人に迷惑をかけてしまい本当に申し訳ないです。

ただその分、内省することが増えていて、そういった自分の思いや感情をこれから表にもっと出していきたいなぁと思ってます。

ここで自分の将来について改めて考え直すと、1日1日の過ごし方がこれまで以上に大事になってくるんだなと感じてます。20代までの貯金・延長線上で生きていくのではなく、勉強や筋トレ、プライベートなどこれから1日1日を丁寧に過ごしていこうと。

チーム

この1,2ヶ月ずっとチームで話していたけど、ただ仕様通りに作るのではなく、「正しいものを正しくつくる」ことができるようにしていきたい。個人としてもチームとしてもまだまだ足りてないことだらけだけど、ここを来年は頑張っていきたい。

技術的負債・思想的負債・組織的負債など色々な負債があると感じているけど、それらを解消していってビジネス要求とか業界の変化にすばやく対応できるようになりたい。そのために大事なことは「フットワークを軽く」(個人的にはこれを来年のテーマにしたい)すること。Be Agileの精神にも一致していてすごく好きです。これを意識すると、仮説検証のやり方や、いらない機能を削りましょうという判断、テストの責務などあらゆることの判断基準になっていいなあと実感してます。

また偉大なプロダクトは偉大なチームからしか生まれないと思うので、もっといいチーム・自律的な組織にしていきたいです。そのためにザッソウやWorking Out Loud、OODAループをもっと強化していきたいし、チーム内・会社内での会話をリアルでもSlackでももっともっと増やしていきたいなぁと思ってます。

おわりに

おちこんだりもしたけれど、私はげんきです。

来年もよろしくお願いしまっす!

「確率思考の戦略論」を読んだ

動機

感想

  • 負の二項分布やポアソン分布などの統計学が、現実世界で役に立っていることが理解できて面白かった
    • 統計についてもっと勉強したくなる
  • 数式多くて難しそうだなーと思ってたけど、組み合わせと極限の高校数学がわかってればまあまあ理解できた
  • なんでも数字や掛け算に落とし込んで、コントロール可能因子だけに集中するという思考は尊い
  • IT業界にいると既存のムダを省いてコストダウンを実現しようという文脈が多いから、業界のために適切な値上げに挑むというUSJの話は新鮮だった

読書メモ

第1章 市場構造の本質

  • 消費者の頭の中には、今までの購入経験から買って良いと思ういくつかの候補となるブランドがある < "Evoked Set"
  • 市場競争とは、1人1人の購入意志決定の奪い合いであり、その核心はプレファレンスである
  • 全てのカテゴリーにおいて市場構造の本質は同じであり、それはプレファレンスに収束される消費者の購買行動によって決まる
    • 負の二項分布(NBDモデル)
  • ブランド間のシェアも、消費者のプレファレンスによってダイレクトに決定される
    • デリシュレーNBDモデル

第2章 戦略の本質とは何か?

  • プレファレンス x 認知率 x 配荷率 の掛け算で戦略は決まる
  • コントロール可能因子だけに集中する

「起業のファイナンス」を読んだ

動機

  • 資金調達のニュースとか聞くと確かにめでたいけどお金集めればいいってもんでもないよねと感じていたので、ちゃんとファイナンスについて勉強したかった
  • Tech以外の人との共通言語の1つはお金だと思うので、ここの知見・知識を深めて視野を広げていきたい

感想

  • ずっとベンチャーで過ごしているので馴染みがあるけど、よくわかってない用語とかを理解できてよかった
  • 起業に関するお金の全体像を広く浅くイメージできる
  • 資本政策ははじめが大事で、会社がうまくいかなかった場合をちゃんと想定した契約を結ぶ重要性がわかった
    • 起業するってすごいなと改めて実感する
  • ストックオプションは技術的に奥が深くて面白い

ファイナンス・会計のことがわかると、色んな会社の見え方が変わってきそうで面白いなーと思ってる。引き続き、以下の本とかを読んで勉強していきたい。

「失敗から学ぶRDBの正しい歩き方」を読んだ

失敗から学ぶRDBの正しい歩き方 (Software Design plus)

失敗から学ぶRDBの正しい歩き方 (Software Design plus)

動機

  • データベース設計のリファクタリングをしていてRDBに関する本が読みたくなった
  • ロックについては毎回調べてもすぐ忘れるので、ちゃんと頭の整理をしたい

感想

アンチパターンとして言語化されることで、頭のなかで漠然とよくないよねと思っていることを明確にすることができた。各章のはじめにはそのアンチパターンを簡単な現場ストーリーをもとに紹介しているんだけど、むかし運用していたプロダクトを思い出させられてすごく懐かしくなった。

またRDBSQLの書籍だとPostgreSQLだけを扱ってるのが少なくないけど、MySQLPostgreSQLの挙動の違いがあるところはちゃんと説明してくれていてわりやすかったです。そーだいさんの人柄がでてる優しい文章で読みやすく、各章深掘りはせず詳しいことを知りたい場合は参考文献に逃しているので、基本をおさえる・振り返るために最適な一冊だなと思います。

読書メモ

第2章 失われた真実

  • 履歴データはRDB内にどれくらいの期間もっておくべきか難しい
    • ある時期よりも前のものは削除するかS3に退避させるのがいいんだろうなー

第3章 やり過ぎたJOIN

  • JOINのアルゴリズム
    • Nested Loop Join (NLJ)
    • Hash Join
    • Sort Merge Join
    • MySQLではNLPしかサポートしていない
  • JOINは必要最低限
  • INDEXを適切に活用する
  • JOINするテーブルは小さくしてからJOINする
  • 複雑なクエリになった場合はViewを活用する

第4章 効かないINDEX

  • INDEXが使われる条件
    • 検索結果がテーブル全体の20%未満
    • 検索対象のテーブルが十分に大きい
  • PostgreSQLには式INDEXという機能がある
  • あいまい検索でINDEXを利用するケースは前方一致のみ

第5章 フラグの闇

  • 「とりあえず削除フラグ」アンチパターン
  • テーブルに状態を持たせず事実のみを保存する
    • 「削除済み」のためのテーブルを定義する

第6章 ソートの依存

  • WHERE句狙いのINDEX
  • ORDER BY句狙いのINDEX
  • OFFSETで指定したデータ範囲が大きくなるとINDEXは効かなくなる
  • 実行されないとわからないORDER BYの問題

第7章 隠された状態

第8章 JSONの甘い罠

  • APIの戻り値を格納するのに便利
  • ユーザーが任意で登録する値でスキームレスなものとかも

第9章 強過ぎる制約

  • 外部キー制約が生み出すデッドロック
    • MySQLだと、外部キー制約の子テーブルを更新すると、親テーブルの共有ロックを自動的に取る
  • 強い制約はアプリケーション側の責務として持たせる

第10章 転んだ後のバックアップ

  • バックアップの手法
    • 論理バックアップ
    • 物理バックアップ
    • PITR(Point In Time Recovery)

第11章 見られないエラーログ

第12章 監視されないデータベース

第13章 知らないロック

  • ロックの種類

    • 排他ロックと共有ロック
    • 表ロックと行ロック
  • PostgreSQLはSELECTでも「AccessShareRock」という一番小さなロックを取得

  • MySQLの特徴的なロック
    • 対象が存在しなくてもロックを取るギャップロック
    • 対象よりも1つ先の行までを取るネクスキーロック

第14章 ロックの功罪

  • トランザクション分離レベル
    • read uncommitted: ダーティーリード発生
    • read committed: ファジーリード発生
    • repeatable read: ファントムリード発生
    • serializable: 完全な直列処理
  • MySQLのデフォルト: repeatable read
    • 後勝ちのロストアップデートが起こりうる
      • SELECT ... FOR UPDATE で排他ロックを取得すればOK
  • PostgreSQLのデフォルト: read committed

第15章 簡単過ぎる不整合

  • 非正規は用法用量を守ってお使いください

第16章 キャッシュ中毒

  • キャッシュは麻薬

第17章 複雑なクエリ

  • スパゲッティクエリは分解して、アプリケーション側で加工する
  • SQLが書きにくいなというときは、テーブル設計に問題が隠れている

第18章 ノーチェンジ・コンフィグ

  • Database as a service
    • コンフィグの管理を自分たちで行わない

第19章 塩漬けのバージョン

  • バージョンアップする文化を作る

第20章 フレームワーク依存症

  • ORMが発行するSQLRDBMSに最適化されたものではない

「楽天IR戦記」を読んだ

楽天IR戦記 「株を買ってもらえる会社」のつくり方

楽天IR戦記 「株を買ってもらえる会社」のつくり方

動機

  • どこかのタイムラインで面白かったという書評をみた(誰が書いてたかは全く覚えてない)
  • 普段自分が関わらない仕事がどんなものか知りたくなった

感想

  • IRというものにまったく馴染みがなかったけど、どういった仕事なのかざっくり想像できるようになった
    • 上場することへの意義・責任というものが実感できる
    • IR用語もちゃんと解説してくれるので、めっちゃ勉強になる
  • 楽天という企業はやっぱりすごいなと思う
    • ITだけじゃなくて銀行・投資・通信事業など企業の幅が広いなーと改めて感じた
    • 三木谷さんの判断力・体力・政治力・プレゼン力の凄みが伝わってくる
  • 本当はこんな簡単な話ではないと思うけど、よく聞く以下のトピックについては興味深かった
  • 著者の人がいまはアライドアーキテクツの社外取締役なんだと、読んでる途中で気づいてびっくりした

「エンジニアリング組織論への招待」を読んだ

動機

  • 去年話題になった本で流し読みしたままだったけど、最近組織について考えることがあったので改めて読み直してみた
  • 同僚がこの本で紹介されている認知の歪みを社内LTで話していてためになった

感想

Chapter 1の「思考のリファクタリング」がなんといってもこの本の醍醐味だと思う。誰にでも刺さる内容だし、頭ではわかっていても実践できていないことがよくあるのでいつ読んでも新しい発見がある。

不確実性にまつわる以下の言葉は、チーム開発をするうえで胸に刻んでおきたい。

  • "不確実性の発生源は「未来」と「他人」"
  • "不確実性を下げるには、情報を生み出すこと"
  • "エンジニアリングの本質は「不確実性の削減」である"

ちょっと昔にゲス極で『私以外私じゃないの』という曲があって、当時は「なに当たり前のこと言ってんねん」としか思わなかったけどこの本を読んだあとは深い歌詞だなぁと思えて不思議。


ゲスの極み乙女。 - 私以外私じゃないの

あと次の2つは大学生のときに習ったスポーツ心理学でも同じことが言われていた。

  • 「雨が降った」というのはただの事実であって、それ自体に意味はなくてそこからネガティブな思いを抱くのは認知の問題
  • コントロール可能因子を判断して、それだけをコントロールするように努める

個人的にスポーツ(部活)と仕事を結びつけるのは、根性論とか青春を叫ぶ人がいて苦手なんだけど、思考法・心理学の面では確かに役立つことが多いなあと思い直すことができてよかった。

読書メモ

Chapter 1 思考のリファクタリング

  • エンジニアリング
    • 「曖昧さ」を減らし、「具体性・明確さ」を増やす行為
  • 不確実性の発生源
    • 「未来」と「他人」
  • 「不確実性を下げること」は、「情報を生み出すこと」
  • エンジニアリングの本質が、「不確実性の削減」である
    • 要求仕様、実現手段が確実であるという状態は決してありえない理想
  • 他人が介在する問題について、私たちは感情的にならざるを得ない生き物
    • 「私以外私じゃないの」問題
  • どんなに自分が正論だと思っていることも、その人自身の世界の中で認識できる範囲の中での正論にすぎず、正解ではない
    • 自分は論理的でなくなる可能性があり、人が論理的でなくなる可能性があるのかを知った上で問題解決に臨む
  • 事実はありのまま、ただあるだけ
    • 「雨が降った」は事実
    • 憂鬱な思いがしたり、いらだったりするのは認知
  • 認知の歪み
    • ゼロイチ思考
    • 一般化のしすぎ
    • すべき思考
    • 選択的注目(心のフィルター)
    • レッテル貼り
    • 結論の飛躍
    • 感情の理由づけ
    • 認知的不協和
  • 怒りは、知的な能力を使って、危機を乗り越えようとしている状態
    • 怒ってる人は、「私は怒っていない。論理的に考えている」と思う
    • 「怒り」が発生しているそのときは「自分」ないし「自分の大切にしているもの」に被害が及びそうだと感じている、ということ
    • 「怒り」を感じたときは、同時に「何が大事なのか」を知るとき
  • 怒りを感じたときには、「それは自分にとって大事なことで、その発言は大事なものをぞんざいに扱われたようで悲しい」と伝える
  • 自分は論理的に考えることができていると思い込むことこそが、非論理的な思考を生み出す元になる
  • 未来は市場は「不確実性」で満ちているから、人には決して予測できない
    • この「不確実性」を確実なものにするには、行動して確かめる以外の方法はない < 経験主義
    • 今わからないということ自体が、次の一手への重大なヒント
  • 「コントロールできないもの」をコントロールしようとして、ストレスを感じてしまう
  • 「観測できないものは制御できない」
  • 「コントロールできるもの」を操作し、そして、「観測できること」を通じて、その結果を知識にするだけ
  • 自分自身の認知の歪みをパターンとして記憶することで、自分自身の過ちに気が付きやすくする