Code

2014年3月27日木曜日

愚痴:Android の WebView が遅い。。。アジャイルいろいろ => やはりヒーローが必要です。

tl;dr : 基本的に Android の WebView は遅いです。特にアニメーションがカクカクする場合があります。JS でのアニメーションは使わないようが良いでしょう。また AngularJS を使うと、また一層遅くなるので、もしパフォーマンスに気にするなら、React.js を使ってみてください。
 速くする方法としては、画面を pre-load するだけです。ユーザーの動作を考慮して、Idle 時間に先に作っておいて、表示するとき、画面を切り替えだけ行います。
 
 愚痴です。いい内容、答えもないので、ただメモして、いろいろ考えたいだけです。時間の大切な方はご遠慮。

 最近 Android バージョンのアプリが作り始まりました。あまり進捗など見てないけど、Front End チームの一員として、会議に呼ばれました。問題は一つ、iOS に比べると、Android の WebView がちょっと遅くて、スライドする時、画面のレンダリングが追いつけない。。。 これじゃ、また何所が遅いかをみんなで討論して、何か解決方法がないかと。
 実際見てみたら、そんなには遅くないけど、動きが速いとき、やはり iOS には及ばない。。。これは Android 自身の問題じゃないかと。みんな知っていることでしょうと。が、そうは行かないですけどね。
 今は独自の jQuery Light のライブラリを実装して、すべてのページに使っているし、かなり細かくファイルを分けて、ロードの時間をできるだけ短縮しました。実際一つだけのページをロードすると、速いとは言わないが、遅くないと思います。では、問題は何所にあるだろう?
 今の iOS App は表示している画面以外、別のスレッドで次の画面と前の画面をレンダリングしています。なぜなら、Google Analytics によると、ユーザが一つの画面に止まる時間は12秒でもある。コンピュターの世界にいると、1秒ではかなりの時間です。その時間を使って、裏でいろいろマルチスレッドがやります。
 Android アプリはあまりこういう工夫はしていないそうです。
 まぁ、あまり言いたくないけど、何か問題を発見したとき、会議にする前に、まずみんなに聞いてみましょうよ。もちろん知っている人は知らない人はいるんですけどね。これはまたアジャイルの弱点は少し出て来た。
 今のプロジェクトでは、設計ドキュメントもないし、仕様書もない。。。すべてがソースコードにあります。これはすばらしいことです。ただ、問題はみんなソースコードを書くとき、開発者のレベルより、コメントが読めたり、読めなかったりします。後、ソースコードを読みたくない開発者もいるから、すべての知識を浸透するには難しいです。
 それでエンジニアリードという職をもうけて、どう設計するかの指導役ですが。今、その方はあまり iOS, Android アプリの経験がないので、いろいろ難しいことがあります。じゃ、今まで何をやって、いい結果になったか問う言うと、チームにヒーローがいるからです。
 ヒーローがすべて知っているし、指導もできるし、自ら難しい問題を解決してくれます。今のチームにはそういう人がいなければ、どうなっているかは本当にわからない。この状況を変えるにはどうすればいいでしょうかね。。。
 それでは。
 

0 件のコメント:

コメントを投稿