1. はじめに
去る2024年12月8日、ISUCON14に技術者仲間と二人で出場して11,834点でした(チーム名: オニコンブ)
分担は以下のような形です
- パートナー: Repository運用、技術的検討、インプリ、計測、監視、分析、etc...
- 私 : 日本語 (インプリゼロ)
途轍もなくヘボい仕事ぶりだったことに恐れおののいて、自身の貢献範囲があったのかの検証および言語化を行うべくこの記事を書きました
そんなもん貢献でも何でもねーはボゲェー というコメントがありそうで今から怖いです
マジレスしておきますと
「ドキュメントを読め」はよく聞きますが「こう読め」はあんまり聞いたことねぇなあ、と考えており
今回ISUCON14のイケてた点がここならば何かの役に立つかも と考えた次第です
2. 通読手順概要
題材は ISUCON14 アプリケーションマニュアル です
通読手順の概要を提示します 全6工程、最小4工程です
(1)2回 通読する
(2) 用語・定義にフォーカスする
(3) 期待値・期待する内容にフォーカスする
(4) 仕様・根源動作にフォーカスする
(5) [optional] 文章を実地検証する
(6) [optional] 適宜引用し議論を促進する
3. (1) 2回 通読する
- 途中のLinkから別文書に飛びたくなりますが、鋼の心でそれを堪えます
- あれ、さっき何て書いてあったっけ?と戻りたくなりますがそれも禁止
- 通読に集中し、尚且つ子細な部分で読み目を止めるのも我慢し、最初から最後まで2回読みます
- おそらく、2回目はかなり手抜きして読みます、にんげんだもの
- これにより、どこに何のトピックが記されていたかが頭の中に残り、取り組み中に「ん?これは確かアプリケーションマニュアルのどこどこに書いてあったで?」という僥倖発生確率が高まります
4. (2) 用語と定義にフォーカスする
- 用語(今回であればライド、マッチング など)および定義(Status list(MATCHING, ENROUTE, etc...)およびStatus transition など)に焦点を当て、読み下して半分くらいの理解を目指します
- 半分くらいというのは以下のようなレベルを指します
- 「ライドと言われたら概ねこうなってこうなることだな」
- 「シミュレーターには3種類あったな」
- スポーツでいえば、ルールを熟知しておくアプローチに近いと考えます
- 何をどこまでやっていいか(どこからが違法か、NGか)のfoundamentalになります
- これにより、相手の単語からどのことを指しているかが明瞭になり、コミュニケーション効率が高まるはずです
5. (3) 期待値・期待する内容にフォーカスする
- アプリは何の期待を満たすために動くのか、その期待する内容や定量的値の落とし込みをします
- 今回でいえば以下のような内容をここで抽出・認識します
- 「マッチングの成立」
- 「乗客へのリーチと目的地移動をなるはや達成」
- これにより、改修内容の目的や嵩の張る改修の優先順位、実施決定がやりやすくなります
- 期待を満たさないのなら、やらないという選択肢が採れるということです
6. (4) 仕様・根源動作にフォーカスする
- アプリはどのような設定値に従ってどう動いているかをこのマニュアルから読み取ります
- 今回でいえば以下のような内容をここで抽出・認識します
- 「マッチング処理間隔が500msに設定されている」
- 「距離はマンハッタン距離計算」
- 場合により、当日マニュアル側に記載されているベンチマーカーの動作、ベンチマーク内容を確認します
- ベンチマーク点数がすべてであるから、要はベンチマーカーを顧客と見立てて仕事をすればよい
- 実際はこの段階で、コードリーディングをそこそこ行い、マニュアル上の仕様や定義はCodeのどの部分に当たるのかをある程度特定しています
- DBテーブル一覧のここに、マニュアルのパラメータが何の名前で書いてある、などなど
- これにより、改修内容のJustificationが容易になるはずです
- 対象パラメータをいじる価値があるorない
- 改修後の予想挙動上仕様や動作の向上見込みがあるorない など
7. (5) [optional] 文章を実地検証する
- オプショナルですが、提供されているシミュレータの動きがマニュアルのどこに当たり、本当にそう動いているのか・マニュアル上のこの記述は画面上どう動くのか の確認と再認識をしました
- 仕様・根源動作時にフォーカスした内容のうち、実装上不明だった点もここでさらに踏み込んで確認しておきます
8. (6) [optional] 適宜引用し議論を促進する
- こちらもオプショナルですが、ここまで読み込んでおけば場に出された技術的提案や改修候補に対し、論理面の確からしさのレビューにおいて私見ではなくマニュアルやコードに記載された事実を利用できるはずです
9. おわりに
これで自分に実装力ついてくればそこそこ無双じゃん、と思いましたが
それを培うためのスタミナを神龍におねだりしなければならないな、とも思いました
お読みいただいた方のナニカの参考になれば幸甚です、以上になります