ベイジのサイトは公開後もコンテンツ追加だけでなく、あまり目に触れない部分のUI改善やチューニングを行っている。先日も、読み込み速度の改善を行った。
まず、ページの読み込み速度を調査できるツールで確認した。すると、サーバからの応答時間に問題があった。そのため、読み込みが遅いページを対象に静的ファイルを生成し、サーバ側の処理を軽減することで、数値を半分以下に軽減した。
次に、画面が表示されるまでのブラウザの処理を再確認した。一部で、表示させたい順番とJavaScriptでの処理の順番に矛盾がある部分が見つかった。ファーストビューの画像読み込みを先行させる、JavaScriptの処理を非同期にするなどで、プログラムとして高速化するわけではないが、体感速度の改善を行った。
また、時間帯によって処理速度が変わることがあったため、これらは各種外部サービスの使用状況(負荷)も関係していると思われた。そのため、外部APIを呼び出すタイミングなどもチューニングし、その影響を受けにくい作りに変更した。
「読み込み速度が遅い」という事象は一つだが、その原因は、単なる処理速度の問題だけでなく、体感的な問題や、様々な外部要因も影響していたりする。原因により、プログラムの処理自体を高速化するのが良い場合もあれば、人が「速くなったような気になる」ための対策を打つだけでいい場合もある。このように原因を詳細化し、分類し、様々な方法や考え方を含めて改善方法を考え、それに合わせた処理の見直し、ファイルの圧縮、キャッシュ化など、影響範囲を見極めつつ対処する必要がある。
また、原因や対処方法がある程度分かった時、簡単だが高い効果が期待できないものからではなく、難易度は高くても、一番効果が期待できるものからつぶしていく方がよいと、個人的な経験では思う。
簡単なものから着手することは、自分の「対応している感」を満たすことはできる。しかし、結局効果がないのであれば、わずかな時間であったとしても、それは時間の無駄になるからだ。
「改善」と言葉でいうのは簡単だ。しかし改善には、何を対応し、何を対応しないか、問題に真正面から取り組むのか、感覚的な錯覚を利用するのか、無駄にならない時間の使い方はどうすべきかなど、改善を担当し、対策を判断する人間のセンスや合理的な物の考えが如実に反映される。
別の言い方をすれば、改善という作業を通じて、合理的なモノの考え方や、タスクを取捨選択するスキルが身に付くものではないかと思う。単に「改善する」という目の前のタスクを処理することだけを考えるのではなく、状況を俯瞰して捉える訓練として改善の仕事を捉えてみると、また違った価値が見えてくるのではないだろうか。