- 読んだ本: https://booth.pm/ja/items/1035782
- 以前りゅーそうさんという方の はじめての UI デザインの教科書をフロントエンジニアの方と読んだ という記事を読み、誰かこれやりませんかと積読リストを公開したところ、 あいのざさん からリプライ頂いたので読んで感想を通話で話しました。
- アイデアの元になったりゅーそうさん、もやし丸さん、そして乗ってきてくださたあいのざさん、ありがとうございます。
積読解消会の進め方
- 読む本を決めて、DM で進捗を報告しながら読み進める(今回は 30 ページほどの本だったが、環境構築など、手を動かす必要があった)
- 報告はこんな感じ: 今日は 15 ページまで進めました。環境構築で詰まったところは gist に置きました(gist のリンク)
- だいたいお互い終了したところで通話する日程を決める
- こんな感じ: discord で土曜日の 14:00-15:00 にやる(実際は 14:30-16:30 になった)
- (りゅーそうさんのブログには 2 時間とあったが、初めて話す相手なので 1 時間とっておいて、後ろは予定を入れず延長可能にしておいた)
- お話する
- 終わり
まとめと感想
- go なら alp と pprof
- 本体のソースコードの他に、nginx などミドルウェアにも詳しくなる必要がある。
- 最初に ISUCON に挑戦しても分からないと思うので、この本のようなチュートリアルはありがたい。得点も 10 倍になって簡単な修正で一気に点数が上がってとても楽しい
- 普段ゼロから Web アプリを書くと自分で書いたので勝手が分かるが、ISUCON のように他の人の書いたものだと勝手が分からない。経験値が必要。
- ISUCON の典型が知りたい。パフォーマンスチューニングのまずこれを疑え!的な典型集が欲しい。
本書を現在(2021/01/16)やると遭遇するトラブルシューティング
xbuild go-install が動かない
- Conoha では気にしなくてよいです。
- vagrant でやる場合、 https://github.com/matsuu/vagrant-isucon を使うと xbuild が失敗する。
- go の公式ページに従ってバイナリを wget/curl してインストールする
pprof を実行するときに tau が必要
- pprof を入れると、tau がないと言われる
- 以下のように対応し、go tool から実行する
sudo apt-get install tau
go tool pprof localhost:8080 ~/isubata/webapp/go/src/isubata http://localhost:6060/debug/pprof/profile?seconds=60
go-sql-driver が使えない
- go v1.9 で
go get go-sql-driver
すると、Builder 周りの v1.10 の機能をつかっているために go のビルドが通らない
- 以下のように、ライブラリ部分で git checkout して過去のタグがつけられた commit に戻ると使えるようになる。
go get github.com/go-sql-driver/mysql
cd github.com/
mkdir go-sql-driver
cd go-sql-driver
git clone https://github.com/go-sql-driver/mysql.git
git checkout v1.4
今後やってみたいこと
- ISUCON7qual でさらなる改良をする。特に、今回は書籍に書いてあることしかしていないので、自力で考え出して(アイデアパート)自力で実装したい(実装パート)
- ISUCON の典型をまとめたい。ISUCON 慣れしたい。
- ましさんの N+1 検出ツール https://mesimasi.com/mercari_go_one/ のようなツールを試してみたい。これを使うためには go のバージョンを上げる必要があるので、ついでに Ubuntu20.04 対応をしたい。(ansible 書き換え)
- mini ISUCON 練習会を身内でやってみたい。ISUCON の運営楽しそうすぎる。(競技環境のホスティングのように、高度に厳しい状況でインフラをするの楽しそう)