ニート日報 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を事前にちゃんと使う

終わりに

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

ニート日報 2016-09-26

ニート17日目

残すところニート期間はあとちょうど1週間。
来週から働くというのが信じられない。

全ての時間を座れると思っていたアクセル・ワールドを最新刊まで読み終わった。
これで明日からいろいろ復帰できる。

あと部屋の掃除をした。
机の引き出しにぶち込みまくっていたいらない物を判別して捨てるだけの簡単なお仕事。
ちょっとスッキリした。

TODO進捗

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

  • アクセル・ワールド完了

ニート日報 2016-09-25

ニート16日目

前日同様、アクセル・ワールドを読む機械で終わる……はずだった。
が、夜になぜかリムジンに乗った。

リムジンの様子

CA系列の某氏に誘われ、新橋にてリムジンに乗ることになった(謎)。
IT系のエンジニア野郎のみ8人という謎面子で乗った。
4500円で乗れた。
たった1時間くらいだけど思っていたよりも安い値段で乗車できるようだ。

内部は想像よりも狭く、8人は完全に定員ギリギリという感じだった。
内部にはお酒(ワインとウイスキー)とかお菓子が設置されていて、自由に飲み食いできるスタイルだった。

新橋とか汐留とか付近の東京のオサレスポットを少し巡るルートだったようだ。
途中で下車し東京タワーとリムジンをバックに記念撮影とかした。

結論:4人くらいで乗るのがちょうど良い

TODO進捗

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

  • アクセル・ワールドを読む機械