転職してから1ヶ月経ったらしい

実は転職初日に書こうと思っていたのに気づいたら1ヶ月経っていた😇
一応、ネット上では明示的には所属組織を明らかにしていないマンなので、その辺りはふわっとさせておく。

転職の動機

一言でまとめると、いわゆる音楽性の違いというやつ。
もちろん下記以外にも他にもいろいろある。

経営の意思決定内容に一社員として納得感が持てないことが多くなってきたことによる、経営方針へのミスマッチ。詳しい話はNDA的によくなさそうなので割愛。

個人的にソシャゲのガチャが好きではなかったのに、それを提供する側になっていたことによる、事業内容のミスマッチ。他と比較するとガチャの厳しさはゆるかったが、それでも違和感を感じてしまっていた。

個人的にどうありたいかという方針と会社の方針がずれることは仕方のないことだと思う。無理に合わせたりするのではなく、その時々で方針がマッチするところに所属するのが幸せそうだ。

転職先はどう選んだか

人づてだったり転職サイトとかで興味のある会社へ話を聞きに行った。話を聞きに行った場合は中のエンジニアの方と話すスタイルだった。

急いで今すぐに転職したい感じではなかったので、中の人と話してみて自分の中の条件と合う会社があれば、1社ずつ順番に受けていこう、ダメだったらまた探す所から始めよう、という感覚で転職活動を行っていた。新卒の時の、並行して何社も受けて、いろんな会社で面接をして、最終的に決めた会社以外は辞退して、、、みたいな構図が個人的にはかなり心理的な負担だったため、そいう方針にした。

会社を選ぶときの条件というか基準はこんな感じだった。
ミッションへの共感は一番強く、他はだいたい順不同。

  • 会社のミッションに確かな価値を感じ、を自分もそれ実現したいと思えるか
  • 技術的に広い範囲を触ることができるか
  • オープンな社風か
  • 働き方に自由があるか
  • 確率によらない価値を提供する事業を持っているか
  • 強い人が多いか
  • (家から近いか)
  • (他にもいろいろあった気がする)

話を聞きに行くこと5社目くらいで、今の会社にたどり着いた。
最初に話を聞きに行った後のタイミングで「ここだな」と確信した記憶がある。
自分でもかなりマッチしていると確信していたので、これは通るという謎の自信があった。
無事選考1社目で内定をいただき、初めての転職活動を終わらせた。

実際に転職してみて

外から見て感じていたイメージや、面談面接時に聞いたイメージ通りの雰囲気だったので安心した。社内の価値基準が社員に浸透しているのが日常から受け取れる。
イメージ以上だったのは、全体的なテンションの高さ。

働く時間は明らかに増えた。前職が業界内では残業がかなり少ない部類だったので想定通り。早くコードベースに慣れるために時間をかけてる感じがする。
ハードめに働けるのは個人的には20代のうちくらいかな、という感覚があるので頑張っていきたい。

夕飯を会社負担で食べられるのが地味に便利。好きなカレー屋さんのカレーを会社で注文できてしまい、完全に太る気配が忍び寄ってきている。

Web系の会社らしく、GitHubにSlackにMackerelにKibanaにみたいな感じで使用するツール等が前職とあまり変わらず、ツール的な意味で馴染むのは簡単だった。
コミュ力が足りないので人的な意味で馴染むのは数カ月掛かりそうだ。

最後てきとうになったけど、あとは、やっていきの気持ちだ。

ニート日報 2016-10-02

ニート最終日

最終日も特に特別なこと無く終わり。
マイクラをやっていた時間が多くて、この先心配になってしまう。

dotfilesのセットアップをmakeに移行する作業をひとまず終わらせた。
もう少しやりたかったけどマイクラに時間を吸い取られてダメだった。
強い自制心が必要だ。

ブログじゃないサイトのトップページもデザインなしのやつを作ろうと思っていたけど、これもマイクラに時間を(ry

最終日になって、もっともニートっぽい1日を送った気がした。

全体を振り返って

自制心を保つために設定したTODOだったが、とくに技術系の「やっておくと何かの役に立つけど緊急ではないもの」に手を出すモチベーションがなかなか上がらなかった。
残ったものは、働きながらの日常でこなしていくことになるだろう。
残したと言いつつ、前からやりたかったことはチマチマで進められたからある程度は満足している。

とくに後半は休養という名目でダラダラしていたのが目立った。
しかしそのおかげで、退職直前から続いた体調不良も治すことができた。
が、体調のために関西旅行を犠牲にしたのは痛かった。
数年以内に大きな休みを作って行くぞ。

23連休という膨大なお休みだったけど予想通り終わってみればあっという間だった。
またいずれ、落ち着いたタイミングで長期休暇が取れたら嬉しい。
(退職じゃなくて普通にまとまった大きな休みが取れたらいいなーという希望)

というわけでたくさん休んだことだし、明日からお仕事頑張るぞい!

TODO進捗

https://gist.github.com/mihyaeru21/7ec2e6b408d0c7f546274fd4b5a1e610

  • dotfilesのセットアップ移行完了

ニート日報 2016-10-01

ニート22日目

ニート生活残り2日。
前日から急に生活のリズムが崩れて睡眠時間帯が6時間くらいずれてしまった。

あとちょっとで終わるところだった本を終わらせた。
人工無能の本はちょっと古いけど、それなりにRubyの練習にもなった。

dotfilesを整理していたらMinecraftを始めることになってしまった(?)。

天一の日

天一botが今回限りで活動終了なのが悲しかった。
↓が天一に行ってきた様子。

Minecraft

なんと残すところ1日ちょいの段階でマイクラを始めてしまった。
閉じた?鯖でまったりやってる。
初めてだからいろいろと新鮮で面白い。
これは時間を吸い取られてしまうのもわかる。

TODO進捗

https://gist.github.com/mihyaeru21/7ec2e6b408d0c7f546274fd4b5a1e610

  • 恋するプログラム終わり
  • dotfilesの整理

ニート日報 2016-09-30

ニート21日目

ニート生活残り3日。
医者へ行ったのとキャズムを読んだだけ。
まさかのタイミングで不眠になってしまった気がする。

キャズムの感想はこっちに書いた。
家よりも喫茶店で本を読むと捗ることに気づいた。
読み進めるのにエネルギーが必要な本は喫茶店で読むようにしてみよう。

TODO進捗

https://gist.github.com/mihyaeru21/7ec2e6b408d0c7f546274fd4b5a1e610

  • キャズムを撃破

「キャズム2」を読んだ感想

入社までに読んでおくべき本その2のキャズム。
なんとか読み切ったので若干雑だけど感想とかまとめ。

本の大雑把な内容

(主に)いわゆるハイテク系の事業をスケールさせるための「マーケティング」に関する知識体系をまとめた本。
ハイテク系かつ主にB2B向けのモデルっぽい。

キャズムとは、アーリーアダプターとアーリーマジョリティの間に存在している溝のこと。
この溝を乗り越えるためのマーケティングの話がメイン。
一般的に想像される特定部署のみが動くマーケティングではなく、企業の全部署が一丸となって行う活動と捉えておくのが安全。

マーケティング手法は、製品のテクノロジーライフサイクルごとに適切なアプローチを選択する必要がある。
どのグループが何に価値を感じるかは次の箇条書きの通り。

  • イノベーターには、テクノロジーに
  • アーリーアダプターには、製品に
  • アーリーマジョリティには、市場に
  • レイトマジョリティには、企業に

キャズムを乗り越えるための戦略の立て方をかなり詳細に、かつ具体的な例を伴って紹介している。
それぞれに実際の事例も紹介している。
ホールプロダクトの概念がとても重要。

感想的なやつ

「あなたのチームは、機能してますか?」と比べると若干の読み難さを感じた。
あっちが異常に読みやすすぎた感じだ。

戦略は、本で事例だけ見るとそんなに大変そうには見えないけど現実は異常に大変なんだろうなと感じた。
多くの経営者はキャズムを知識として知っているが実践するのは非常に難しいと本の中でも触れられていた。

この本を読むまで、アーリーアダプターとアーリーマジョリティはほとんど似たような印象を持っていたが、実際には全く違う価値観を持ったグループだった。
アプローチの仕方も全くと言っていいほど違って困惑するレベル。
これは強く意識しないでいると自然にキャズムにハマってしまうのは当然な感じだ。

マーケティング主導で機能開発するフェーズも必要だという観点を与えられたのが貴重だった。
あー、でもよく考えたら当たり前のことだ。
自分の中でのマーケティングの定義が「製品の中身には関与せず広告とかを手がける人」という感じで狭く偏っていただけだった。

この本でも「あなたのチームは、機能してますか?」でも、(新興企業では)特定の部署が独立して動くことよりも、全社で1つの目標に向かって全部書が共闘することの重要性が語られていた。
重要なのは個人の成功、部署の成功ではなく会社全体の成功だということを常に頭に入れておかねば。
それと、開発以外の広い視野も。

ニート日報 2016-09-29 LINE DEVELOPER DAY 2016

ニート20日目

ニート生活残り4日。
夕方までLINE DEVELOPER DAY 2016だった。
必読の本の2冊目を読み始めた。
前日のついったTLの影響で、久しぶりに蒲田のらーめん 潤へ行った。

LINE DEVELOPER DAY 2016

去年も参加したLINEの開発者向けイベント。
参加無料にも関わらず、内容はとても充実してるわ、開場が綺麗だわ、おみやげがすごいわで、とにかくLINEすごいって感じだった。

参加者用のLINE Botが新機能のデモンストレーションをしつつ、便利に情報を提供してくれたのが良かった。

夕方、疲れてしまったため帰宅ラッシュが始まる前に帰った。
以下、気になったセッションの感想をちょこっと。

LINEが乗り越えてきた困難な問題

LINEにて過去に起きた障害の話。
まさに障害報告という感じだった。

普段は1日に10件くらいしかない重いAPIが全ユーザから同時に叩かれるとは……とんでもないインパクトだった。
障害が起きてから改めてサービスの構成を俯瞰すると、たしかに問題になりそうな気配はありそう。
定期的に現状のアーキテクチャに疑問を保つ必要があるんだなーという感想を抱いた。

Security x LINE Platform

LINEの暗号化とかの話。

標準のTLSじゃなくて改造?したものを使っていたとは知らなかった。
通信の暗号化だけではなく、そこに載せるメッセージ自体も暗号化していたようだ。
ECDHで会話相手(グループも)と鍵を共有しているっぽい。
これによって、運営ですらメッセージの内容を覗き見ることができないようになったのでよりプライベートな会話()が楽しめるようになった気がする。

後半に言っていた、端末のHTTPS通信に自分で中間者攻撃を仕掛けて通信内容をアレするやつ、まじかーって感じだった……。
セキュリティ系は本当に必要な知識が多くて辛い。
この件については、SSL Pinningしましょうという話だ。

LINEに感謝している様子です

昼飯代としてヒカリエのギフト券2000円分が参加者に配られた。
それを使い、三浦三崎港 恵みにてほぼ2000円でランチをいただいた。

参加アンケートに答えると貰えたお土産。
タンブラー、スマホとかタブレットを立てるやつ、ビーコンが貰えた。
LINEにビーコンの機能が追加されたので、その機能を遊んでもらうために配るという太っ腹な戦略。
ありがとうございます!

TODO進捗

https://gist.github.com/mihyaeru21/7ec2e6b408d0c7f546274fd4b5a1e610

  • キャズムを50ページくらい読んだ

ニート日報 2016-09-28

ニート19日目

ニート生活も残すところあと5日。
信じられない。
お昼に新宿で某氏と飯って新宿で映画を見る作戦を決行。

新宿マン

お昼は鳥料理が美味いお店でチキン南蛮定食を食べた。
野菜の種類が多かったし、鶏肉が柔らかくて美味かった。
若干ご飯が多かったから、また行くとしたらご飯少なめで頼もう。

お昼後、ついに君の名は。を見る決意をしてTOHOシネマズ新宿へ。
14時20分の上映で見れると思ったら14時20分の時点でまさかの満席だった。
16時55分の回のチケットを買ってルノアールへ避難。

ルノアールにて「あなたのチームは、機能してますか?」を半分くらい読んだ。
この本は家に帰ってからも読んで読み終わった。
感想とかはこっちに書いた。

君の名は。の感想

絵が綺麗だった。
とくに星の描写が好きだった。
あと新海誠映画の定番?である、歌の内容とストーリーのコラボが良い具合だったように感じた。

ストーリーについては、中盤から予想した終わりにだいたい向かっていったのが、見ていて心地よかった。
大体予想通りではあったけども、ちょいちょい予想とタイミングをずらしてくる感じも良かった。

ネタバレせずに感想を書くと小並感になることがわかった。

TODO進捗

https://gist.github.com/mihyaeru21/7ec2e6b408d0c7f546274fd4b5a1e610

  • 本を1冊読んだ

「あなたのチームは、機能してますか?」を読んだ感想

次の会社に入社するにあたり、事前に読んでおいてくれと渡された本のうちの1冊。
入社まで1週間を切ったので重い腰を上げて読んだので感想まとめ。

本の構成

会社の経営陣立て直しストーリーに沿って、チームにおける5つの機能不全について、その中身と対処法をまとめた本だった。
ストーリーの後に比較的堅めなスタイルで5つの機能不全のモデルを載せていた。
診断用項目がついており、これをコピーしてチームで使用することでチームの現状把握に使えそうな感じだった。

5つの機能不全

  1. 信頼の欠如
  2. 衝突への恐怖
  3. 責任感の不足
  4. 説明責任の回避
  5. 結果への無関心

本の中では信頼の欠如を三角形の底辺として信頼の欠如を三角形の頂点とする図で説明されていた。
それぞれ、の機能不全は三角形の置いて土台となっている機能不全によって引き起こされているという説明。
説明責任の回避は、「戒める責任の回避」という感じの言葉のほうがしっくりすると思った。

これらを、自分が理解した内容として改めて言葉で言い直してみる。

信頼が無ければ建設的な意見の衝突ができず、
建設的な意見の衝突ができなければ決定事項に責任を持てず、
決定事項に責任を持てなければ決定と違う行動を戒めることができず、
決定と違う行動を戒めることができないと「チームの」結果がどうでもよくなる。

ざっくり感想とか

ストーリーはフィクションだがリアリティがあった。
そのおかげか、没入して読むことができた。
登場人物たちの議論と現実の会社での体験とを照らし合わせたことで、物語と内容への共感度合いが高かった。

いくら個々として優れていたとしても、チームとして機能していなければ圧倒的に効率が悪いというメッセージが強く伝わってきた。
5つの機能不全を改善していくプロセスは簡単ではなく苦痛を伴う、そして継続的に意識しなければだんだんと機能不全に陥ってしまうことも理解した。

現実と照らし合わせ、それぞれの機能不全を具体的に思い浮かべた。
たしかに本で触れているように、それぞれの機能不全に陥っている理由として、その土台となっている機能不全の具体的なところもある程度思い当たった。
自制心を強く持って意識していないと自然と機能不全へと陥ってしまうという説明にも納得した。

この本を渡されたということは、これらの機能不全に陥らず上手く機能させる振る舞いを要求されていると感じた。
次の職場では、5つを適度に思い出し意識するように心がける。
だけではなく行動にも反映させる。

ニート日報 2016-09-27

ニート18日目

とにかくサボっていた分のブログを書きまくった日。
あとISUCONの感想を書いた。
他にやったことと言えば、人工無能の本をちょっと進めたくらい。

アニメのダンガンロンパの絶望編を見終わった。
未来編を見てなかったから少し見始めた。
あと、リゼロを見終わってしまった。
終わり方からの予想だけど、原作からストーリーを変えてなさそうだから素直に2期に期待。

それくらいだ。以上。

TODO進捗

https://gist.github.com/mihyaeru21/7ec2e6b408d0c7f546274fd4b5a1e610

  • 人工無能の本を少し進めた

ISUCON6で予選敗退してきた

今年も毎年恒例となっている同期チームで参加した。

素振り

素振りとしてPixivの社内ISUCONの問題をやった(某コミュニティでやった)。
素振り時に良かった点はこんなところだった。

  • 個々人の作業環境と本番環境を分ける
  • git管理して、本番への反映は本番でpullする感じ
  • アクセスログ、スロークエリの解析を行い、きちんとボトルネックを把握する
  • ログをリポジトリにぶち込んで見やすくする

事前準備

会社の会議室を広々と専有し、スクリーンに常にカンバンを表示したり、さっとホワイトボードが使えたり、ブラインドを開けて景色を良くしたり、とにかく作業しやすい空間を作った。
良い広さで、普段の業務もあんな感じの広々空間でできたら幸せだろうなとか思った。

当日のタイムスケジュールを大雑把に作った。
本当に大雑把で、これくらいしかなかった。

  • ○時までにしっかり作業を開始できる準備を完了させる
  • ○時になったらいったん手を止めて現状確認会をする x 2
  • 17時半になったら最終スコアを出す準備をする

Azureに慣れるため、チームメンバー全員でAzureのテンプレートから各自の環境を作る素振りをした。
最初はAzureの仕組みがよくわかっておらず、1つのリソースグループに同じテンプレートから複数個のインスタンスとかを立ち上げようとしていたができなかった。
そこで、人数分のリソースグループを作り、そこにテンプレートから作成する方法を試した。
このやり方で良かったらしく、無事、人数分の環境を作る方法を理解できた。

あとは、時間までGitHubのカンバンに必要タスクを追加していった。
その際、脳みそを空にして取り組めるような内容のものには、脳みそを空にして実行できる手順を書くようにした。

本番

自分がやったこと+感想

  • アプリをgitに載せて個々の環境でも動作を再現できるようにする
    • perlディレクトリ内に.gitignoreがあり、localディレクトリがignoreされていることに1時間くらい気づかず時間を無駄にしてしまった
  • Slow Queryをpt-query-digestで解析してボトルネックを探す
  • entry検索のボトルネッククエリを改善しようと、keywordの長さをカラムに持たせつつindexを貼った
    • 要件的に全件必要で、どうせフルテーブルスキャンになるから完全に無駄だった(というか複雑性が増しただけだった)
    • アプリを読めば、フルテーブルスキャンにならざるをえないことがわかったはずで、すぐにキャッシュの実装に入るべきだった
  • MySQLの設定をチューニング
    • たいした数ではないinsertがボトルネックになっていたので、パラメータをまともな感じにした
    • 結局insert自体は早くならなくて完全に無駄だった
  • keywordsをRedisにキャッシュする
    • 実装でハマってしまい3時間ほど無駄にしてしまい、これをやっているうちに競技時間が終わってしまった
    • なぜか更新タイミングの問題だと思い込み、更新をロックするように実装したが、もちろん意味がなかった
    • Perlが外部と文字列をやり取りする場合に文字列をEncodeする必要があることを完全に忘れていたのが問題だった

チームメンバーがやったこと

  • テーブル情報を抜き出す
  • アクセスログの解析
    • nginxが解析に必要なログを吐き出す設定
    • alpを使って解析
  • Perlの鯖をStarletからGazelleに変更
  • 定番のnginxの設定をぶち込む
  • PerlのWorkerを増やす
    • 2コアしかないマシンなのにWorkerを20にしたら地味に大きくスコアが上がって草生えた
  • keywordsのselectをhtmlfyを呼び出しているループの外へ移動
    • これでスコア上がった
  • isutarを破壊してisudaに統合
    • web部分だけ統合
    • 時間無くてDBは統合できなかった
  • isupamへのリクエストをkeyword/descriptionを結合した文字列にしてまとめた
  • BIGINTだったカラムを全てINTに変更

良かったこと+感想

  • GitHubのProjectを使い、やれること、誰が何をしているかを把握できるようにする
  • 会議室を広々と使い、話す時にさっとホワイトボードが使える状態
  • 効果がなかったが経験としてよかったのは、テーブルの構造を変えたこと
    • 過去2回のISUCONでは、怖くてテーブルの構造を変えることができなかったが、一歩踏み出すことができたのは大きい
  • 2年前からの1段階目の目標として「スコア1万を超える」というのがあり、目標を超えられた
    • 今回は22,220だった
  • 過去よりもいろいろなことにスムーズに取り組めるようになっていた

今回は、アプリのコードを読んでいじる部分の重要性が高かったように感じた。
MySQLだけ見たりnginxだけ見てもほとんど意味なかった。
総合的に判断する必要があるなーという学びを得た。

次回あればやりたいこと

細かいこと大きいこと含め、備忘録として次回やりたいことをざっと書いておく。

  • 素振りは複数回実行する
  • みんなでサービスを触りつつコードの理解に時間をかける
  • DB起動時にBuffer Poolにデータを載せる
  • 正規表現があったら事前コンパイルしておく
  • 自分の作業環境を使いやすく整える
  • nginxでgzip圧縮
  • チームメンバー的に読みにくいコードを、さっと読みやすい形式にスタイルだけリファクタリング
  • 過去問に対する他チームのアプローチを勉強する
  • Redis/Memcachedを事前にちゃんと使う

終わりに

多大なる時間と労力をかけて準備してくださった運営の方々、ありがとうございました!
今回も楽しく勉強になりました。