kbigwheelのプログラミング・ソフトウェア技術系ブログ

プログラミング・ソフトウェア技術系のことを書きます

ヘビーカロリーな問題の解決方法

この前、久しぶりに非常にヘビーカロリーなコードを書いた。 僕は普段コーディングをしている日はScalaの場合テスト含めて100~300行程度のコードを書いているのだけど、機能まで書いていたコードは5~10日で100コード程度しか書いていなかった。 というのも内容がhttp clientの低レベルな実装とAWS V4 signatureの実装に関するコードで問題がかなり難しかったため。 この問題、そもそも自分で解決できるかどうかギリギリレベルの難易度だったのだが、なんとか解決することはできた。

ここでは後のためにその解決方法を言語化しておく。

1. 何が問題なのかをはっきりさせる

今回の場合、根本的に何が問題なのか、何ができないのか、何をやればいいのかを調べだすのに丸2日分ぐらいの時間がかかった。 資料が少ないためでもあったが、まず問題の原因をはっきりさせることは基本であり絶対。 ここがあやふやなママ試行錯誤しても効率は上がらない。

2. 取りうる手段を列挙・検討する

取れうる手段を検討する。 今回の場合は既存のライブラリを頼ることが難しいことがある程度調べてわかった。 その結果、妥協して定期作業が必要な認証にするかそれともきちんと自分で実装するかの選択肢が出た。 最終的に後者を選んだ。

上長やチームへ説明するためにもトレードオフできる選択肢を出すことは大事。 それで自分がしようと思っていた以外の選択肢が選ばれたり新しい選択肢が出ることもままある。

3. 実装したつもりが動かない。

まず絶対に動く例を作る。例えば今回のケースではpythonのサンプルコードが会った。 まずそれを動くようにして、徐々に動かないコードと近づけていって、どこで動かなくなるかを調べた。