league-client-update-header

今年の初め、私たちはリーグ・クライアントのパフォーマンス改善のために私たちが内部で行っている作業の進捗を隔月でお伝えしていくことをお約束しました。

今回がその第3回目となります。(第1回のブログ第2回のブログもご覧ください)

要約:クライアントの原動力となるコードをクリーンアップするという目標に向かって着実に進んでいます。また、その過程で修正されたやっかいなバグも以下にまとめています。着実に成果はあげているものの、やるべきことはたくさん残っています。「クリーンアップ キャンペーン」はまだ続きます。

最近の進展

最初のクライアントブログでお伝えしていたように、クライアントのパフォーマンスの問題を解決する最善の方法はクライアントで利用されているプラグインとEmberアプリの数を減らして整理統合していくことだと私たちは考えています。

ご存じない方のために説明すると、「プラグイン」とはクライアントのコードを複数の便利な塊に分けることができるツールです。そして「Emberアプリ」はクライアントのユーザーインターフェースに利用されるものです。

この目標に向かって私たちは着実に作業を進めてきました。以下のチャートはプラグイン(plugin)とEmberアプリ(ember apps)の合計数の変遷を示しています。

Architecture-Stats.png

上の表を見て、「それで、クライアントのパフォーマンスがどれくらい改善したの?」と思った方も多いでしょう。その答えは複雑になってしまうので大まかに説明しますと、プラグインとEmberアプリの数が少ないほどクライアントのコードの効率が高まります。コードの無駄が少ないほどパフォーマンスが上がり、開発者にとってクライアントの維持も容易になります。

作業の効果を測定するために、私たちはクライアントの起動時間を追跡しています。以下でそのデータのグラフを見ることができます。

Loading-Screen-Render.png

見ての通りこの数ヶ月間、ブートストラップタイム(Bootstrap time)はほとんど一定を保っています。私たちが行っている作業に内在するリスクを考えれば、これはまずまずの成功だと考えています。大きなコードの塊を入れ替えてプラグインをつなぎ直す際は、慎重に行わなければ予期せぬ問題が発生します。しかし、これまでのところはそのような問題は発生していません。

クライアントが起動されるたびにプラグインの負荷をより賢く指定することが可能な新たなソリューションを開発したので、これから数パッチの内にブートストラップタイムはさらに改善していくものと期待しています(このトピックの詳細については前回のクライアントブログにある「アフィニティの問題」のセクションをご覧ください) 。

現時点では、あと数ヶ月は整理統合の作業を続ける予定です。なぜなら、全体的なコード環境のクリーンアップを行うことで不具合やメモリ・リーク、クラッシュの修正が容易になることから、プラグインとEmberアプリの数を減らすことで長期的に大きなメリットが得られると考えているからです。

不具合とクラッシュと言えば、最近リリースされた修正についてお話ししましょう。

最近のバグ修正

クライアントチームは折を見て、この数ヶ月間に大量の不具合を修正してきました。今後、LoLのパッチノート内でクライアントのバグ修正専用のセクションが用意される予定です。

今年の初め以降、チームがパッチごとに修正してきたクライアントの不具合のリストは以下のとおりです。

  • 10.1 - 試合終了後にクライアントの位置がリセットされないように
  • 10.1 - 「開始」ボタンの横のLoLのロゴが表示されなくなっていた不具合を修正
  • 10.1 - [MAC] 1分以上インターネット接続が途絶えてから再接続したときにクライアントがクラッシュしていた不具合を修正
  • 10.1 - プロフィールの背景の変更が他のプレイヤーに正しく表示されるように
  • 10.3 - リンクをミドルクリックしてもクライアントがクラッシュしないように
  • 10.3 - 戦利品でヘクステックチェストを使用後にストアアイコンを選択すると、ストアアイコンが正しく強調表示されなかった不具合を修正
  • 10.3 - コレクションの並び替えでフィルターを変更した際に、デフォルトで五十音逆順に変更されないように
  • 10.3 - コレクション内の「達成したマイルストーン」による並び替えが正しく機能するように
  • 10.4 - チャンピオン選択で特定のアクション(フレンドを削除、削除される、ブロックされる)を行うとソーシャルパネルとチャットウィンドウが破損していた不具合に対処
  • 10.4 - コレクションで再びチャンピオンを別呼称でも検索可能に
  • 10.4 - コレクションでチャンピオンを検索する際に大文字小文字が区別されないように
  • 10.4 - コレクション内でチャンピオンが五十音順で正しく並び替えされるように
  • 10.4 - プレイヤーが限定セールを見ているときに試合に入った場合、「再戦」をクリックするとクライアントの画面が真っ暗になっていた不具合を修正
  • 10.5 - コレクションのチャンピオンページの下部にあった不要なスクロールバーを削除
  • 10.7 - カスタムロビーで「フレンド申請を送る」ボタンが機能しなくなっていた不具合を修正
  • 10.7 - Clashハブでまもなく開催されるトーナメントを見ているときに「スケジュールを表示」の情報画面がぼやけていた不具合を修正
  • 10.8 - 変更を保存せずにエモートタブを閉じたときに保存のメッセージが意図されたとおりに表示されるように
  • 10.8 - 対戦結果画面を離れる際にプレイヤーがプロフィールページに移動しないように
  • 10.8 - クライアントにログインした際にサモナーアイコンが正しく表示されるように
  • 10.9 - 「ブルーミニオンブルーザー」のサモナーアイコンが選択できなかった不具合を修正
  • 10.9 - メンテナンス中でLoLが閉鎖されているときにログインしようとすると間違ったエラーメッセージが表示されていた不具合を修正
  • 10.9 - ブロックしたプレイヤーの名前がブロックしたプレイヤーのリスト内で表示されなくなっていた不具合を修正
  • 10.9 - Emberの旧バージョンが原因で発生していたメモリ・リークに対応する様々な修正
  • 10.10 - ログイン時にルーンページが表示されないか削除されていた不具合を修正
  • 10.10 - 「開始」ボタンをクリックするとルーンページが自動的に閉じられるように
  • 10.10 - ルーンページを並べ替えると複数のルーンページが作成されたりクラッシュが発生していた不具合を修正
  • 10.10 - 一部のプレイヤーがルーンページを編集できなくなっていた不具合を修正
  • 10.11 - 設定ウィンドウを閉じたときに「低スペックモードをオンにする」と「ゲーム中にクライアントを閉じる」の設定が正しく保存されるように
  • 10.11 - コレクションの「スキンのレア度」ボタンが部分的に何も表示されていなかった不具合を修正
  • 10.11 - プレイヤーが観戦モードに入れないことがあった不具合を修正
  • 10.12 - チャンピオン選択のルーンページの機能に影響を与えていた不具合を修正

リストは以上です!また、クライアントの右下にある「バグ」ボタンをクリックしてもフィードバックを送信できます。

次のステップ

このクライアントの作業を続けながら、私たちは「リーグ・クライアントはプレイヤーのために十分に価値のあるものになっているか?」という根本的な質問を自らに問いかけ続けます。

答えはもちろん、「そうなっていない」です。少なくとも、今はまだ。

解決すべき不具合、回避すべきクラッシュ、排除すべき根深いアーキテクチャの問題がまだまだ存在します。今年の初めに始まった作業は、「クライアントはプレイヤーの皆さんのために十分に価値のあるものになっているか?」という質問に、自信を持って「はい」と答えられるまで続きます。

その状態に到達するまでには時間がかかりますが、今後も皆さんに進捗状況をお伝えしていきます。これから数パッチはプラグインとEmberアプリの整理統合を続け、見つけたバグを修正していきます。次に進捗状況をお伝えする頃には、このキャンペーンも新たなフェーズに入る準備が整っているでしょう。次のフェーズでは特に、チャンピオン選択のレスポンスの改善に集中する予定です。

繰り返しになりますが、いつもプレイしていただきありがとうございます。2ヵ月後に新たなクライアントブログでお会いしましょう。