Hohoema v1.1.0 制作メモ

リリースノートは↓ こちら ↓。本文の方では制作上のやたらと細かい話(開発者目線)をまとめています。


ニコニコAPIの通信処理を NiconicoToolkit へ移行完了しました

リリースノートで何度かお伝えしてましたが、ニコニコサービスとの通信を処理するライブラリについて移行作業を進めていました( #842 )が、この度、Hohoemaの内部ライブラリとして作成した NiconicoToolkit へ移行が完了しました。

Hohoemaの提供開始からこれまで、OpenNiconico2というライブラリを利用させて貰うことでHohoemaはニコ動、ニコ生との通信を行ってきました。(といっても好き勝手に改造して使っており、行儀の悪いOSSの使い方をしておったわけですが…。) 改めてOpenNiconico2を制作された mntone氏 に感謝申し上げます。長らくお世話になりました。

NiconicoToolkitでは廃止されたり追加されたりしたニコニコ系APIのURLを整理したり、あるいは通信で受け取ったデータの解析に System.Text.Json や AngleSharp、U8XmlParser など比較的モダンなライブラリに乗っかることで解析処理のパフォーマンス(処理速度とメモリ使用量)を改善できたと思います。

また、NiconicoToolkit はまだライセンスなど整理してないですが、MITライセンスで公開予定で、自由に利用できるようにしていきたいと思います。

動画リストの表示高速化

Hohoema v1.1.0で動画リストの項目表示が結構早くなったと思います。

リストアイテムは各項目の表示コンテナを使い回すことで大量の項目表示に備えているわけですが、コードの書き方によって使い回しがされないという問題を踏んでいたことで、表示速度の劣化、低メモリ端末ではメモリ不足から表示の詰まりなどの問題を引き起こしていました。(なお現在も長時間起動していると問題が起きる模様)(取り急ぎアプリ再起動のショートカットを付けて対処しようかと)

※ UWP開発 Tips
ListViewBase内のItemTemplateにUserControlを含むコントロールがあるとメモリが開放されず、表示コンテナの使い回しもされないといったエラーが発生する模様。詳しい原因はよくわからない!

この改善のおかげで全ての動画リスト系ページ(動画情報ページの関連動画表示なども含めて)の表示速度改善が出来たかと思います。(自分でバグの種撒いて回収しただけではありますが、早くなって良かったということで)

他にも例えば動画ランキングのRSS取得は通信の往復だけで0.5秒掛かっているので、(感覚的には一拍置く程度で大きな問題はありませんが、)Hohoemaでは一回取得したら15分はインメモリキャッシュに蓄えて、再表示時はキャッシュを参照して表示するようにしてます。


今後について、現状表示できないユーザー情報ページと生放送ページを直しつつ、アプリ側のユニットテストを増やして修正に耐えるようにしてから、購読やプレイリストの改修へ、という流れを考えてます。

この記事が気に入ったらサポートをしてみませんか?