petitviolet_blog

@petitviolet blog

自宅にセイルチェアを購入した

タイトル通り、セイルチェアを購入した。

家の椅子がIKEAでかった数千円の椅子を7年以上使っていたけれど、最近は1時間も座っていると腰が痛くなってきて非常につらい状況になっていた。
大学の研究室ではアーロンチェアだったし今の職場ではバロンチェアを使っていて家の椅子だけクオリティが異常に低く、ITエンジニアとしてあるまじき状態だった。

よっしゃオフィスチェアを買いに行くぞと思って、何かと話題の大塚家具で試座が出来るということで行ってみた。
みなとみらいの大塚家具。

www.idc-otsuka.jp

店員はわりといた中で1時間くらい一人でうろうろ椅子に座りまくる不審人物してたけど、声をかけられることもなく非常に快適でいい体験だった。
セイルチェアは座り心地とブランドのわりに値段が比較的良心的だったのでこれにした。でもコンテッサを躊躇なく買える大人になりたい。

これで家の作業環境が一気にグレードアップしたのでいろいろと捗りそう。

Web APIの設計について話した

社内の大新年勉強会で「Web APIのこれまでとこれから」というタイトルで発表した。

資料

リポジトリ

gRPCとGraphQLについてはサンプルでコード書いた。

感想

最近GraphQLが盛り上がっているのでキャッチアップしておくか〜と思って調べ始めたらめっちゃ良かった。
CQRSアーキテクチャのQueryの責務をクライアントに寄せられるのは大きなブレイクスルーだと感じている。
合わせて触ったgRPCも、IDLで定義したのが思ったより簡単に使えてAPI仕様のドキュメンテーションが劇的に楽になるし、流行った理由が分かった。

この辺は面白かったのでもうちょっと掘り下げたいところ。

isucon7予選に参加したメモ #isucon

10月21日(土)にisucon7予選に参加した。

ずいぶんと日が経ってしまったが、メモ程度に残しておく。 会社の先輩方と3人チーム。

結果

ベストスコアは10万点を少し超えたあたりだったが、記録なしで終わってしまった悲しい。

開始前

前日までにはあまりちゃんと準備もせず、過去問をちょっと動かしてみたりプロファイリング用のツールをいくつか使ってみたり、程度。

がっつり過去問解く、ということはしてなかった。 やろうとしていたが本番じゃないとやる気が出ない...。

予選1日目当日は運営側のトラブルで開始が13時過ぎからに。 9時頃にオフィスに集まったものの何となく復習したりインターネットサーフィンしてだらだらすごしてた。 連日徹夜をしていたというスタッフさん大変だっただろうな...。 おつかれさまでした。

何をやったか

というところで始まり、Golangを選択。 特に事前には決めていなかったが、何となくの流れでアプリケーション改修を担当。 ちゃんと施策とスコアを保存しておこうと思ったが、だんだん面倒になってほとんど記録残ってなかった。

基本的にはNginxログからalp使ってボトルネックになってそうなエンドポイントを見付けて直す、という作業。 netdataも動かして何となくリソース使いきれてないね、みたいな話をした記憶がある。 地道にSELECT文を見て必要ならDBにindex貼ったり、不要なSQLを発行しないようにしたり、N+1を何とかしたり。

特に、N+1は何箇所か直したが、SQL書くのを面倒くさがって雑なSQL発行してデータがばって取ってからアプリケーション側で加工するという道を選んでしまった。 ここはSQLで出来るところはちゃんとした方がよかったなと後悔。

ある程度直しても劇的な変更は出ず、いっちょRedis動かしてキャッシュしちゃうぞ〜ってゴリゴリ書き換えたものの何故かうまく動かず時間を無駄にしてしまった。

ボトルネックとしてでかかった画像がDBに入ってる問題はチームメンバーに託したので、スコアが10万超えたのはほぼそのおかげ。

終わってみて

反省としては、事前に作戦立てておけばよかった、に尽きる。

ファイルの共有もGitで管理はしたけどあまり有効に使えなかったし、デプロイとかも手元で雑なスクリプト書いてやってしまったりとチームプレーうまくできなかったなぁと。 自分がアプリケーション直すのに集中しすぎたのもある。。

という感想。 来年は絶対決勝に進むぞ!