2017年05月06日

40インチ4KディスプレイでのAndroidStudio

 さて、わたくしこと、この度40インチのディスプレイを購入しました(^^)/すべてはandroid開発のためです。

 プロの方ならばなんていうこともないでしょうが、サンデープログラマの私としては、今まではLG電子の27インチだったものですから、晴れて2画面となりました!(^^)!

 全体像は以下のとおりです。

AllDisp.png

1. 機種名など

・40インチディスプレイ
 I-O DATA モニター ディスプレイ LCD-M4K401XVB 40型 (4K対応/60Hz/リモコン付/5年保証)です。アマゾンで、¥ 62,585 でした。

 使用感

 画面の表示はきれいだと思います。クロムブラウザのスムーススクロールも非常になめらかです。

 気になるのは、起動時には、2つ繋いでいる画面の27インチのデスクトップがまず表示され、続いて40インチのデスクトップが表示されるのですが、約5秒ほど間隔があきます。これは、まあ、ビデオカードのせいかもしれませんが。

 また、このディスプレイは子画面を表示する機能があって、リモコンで操作するのですが、その切替時には、約5秒から7秒程度画面が真っ暗になり、その後表示されます。

 それから、大きさはかなり大きい(幅91センチ×高さ56センチ(台座含む))ので、その重さのため設置には苦労するかなと思いましたが、一人でも大丈夫でした。ただ、一人で、最初台座をディスプレイに固定するには、倒してディスプレイを壊さないかと、ちょっとひやひやしながらの作業でした。

 また、台座のアームの幅が約52センチあります。私は机が狭いので、台座がはみ出してしまい、しかたなく、書籍を敷いて凌いでいます(^_^;)しかし、地震とか考えると、なんらかの対策を考えないといけないと思います。

・ビデオカード
 玄人志向 ビデオカードGEFORCE GTX 1050搭載 GF-GTX1050-2GB/OC/SF です。アマゾンで、¥ 12,690  でした。この4Kディスプレイには、さすがにマザーボード内蔵のビデオカードでは対応できなかったので。

・トラックボール
 ついでに、部屋と机が狭いので、マウスをやめてトラックボールにしました。LOGICOOL ワイヤレストラックボール M570t です。アマゾンで、¥ 4,463 でした。

 使用感

 アマゾンで一番評判の良いトラックボールということで購入しましたが、なかなか思う位置にカーソルを移動させるのに苦労しています。カーソルの移動速度を最低にして、加速を最高にしてみるとちょっとはかわったようですが、なかなか慣れません。私の作業机の狭さには最適なのでしょうが。

 それから、贅沢な悩みですが、40インチ画面では画面が広すぎて、すぐにマウスカーソルを見失ってしまいます(^_^;)そこで、Windowsを使い始めて、初めてマウスカーソルに軌跡を付けてみました。さらにコントールキーを叩くと、カーソル位置を示す円形の波紋が広がるようにしてみました。これで随分と見失わなくなったようです(^_^;)

 それから、トラックボールを使い始めて、改めてWindowsや各種アプリのショートカットキーでの操作を多用するようになりました。やはり、キーボードからの処理の方が速い部分もありますね。

2. 画面の設定
 解像度は 3840×2160 ですが、これをそのまま表示するとあまりにも文字が小さくなるので、WIN10のカスタムスケーリングを160% にしています。

3. AndroidStudioの状況
 これらの2つのディスプレイに、Android Studioを表示すると壮観ですね。

  右に表示している27インチ画面(1920x1080)
RightWindow.png

 右には、今までの27インチにAndroidStudio本体から分離したAndroid Monitor とエミュレーターを表示。

  左に表示している40インチ画面(3840x2160)
AndroidStudio.png

 左の40インチにAndroid Studioです。画面を3分割して、左から
  • プロジェクト
  • ブックマーク
  • エディタ
  • 検索結果
となっています。

 参考までm(__)m
posted by 【なかま】 at 00:35 | Comment(0) | android

2017年04月16日

「Androidを支える技術T」を読んで その1

 次の書籍を読みました。Androidを支える技術〈T〉

 一言で言うと、大変感動しました(^^)/

 この書籍は、android のGUIを解説したものです。主に以下の内容となります。
  1. タッチとマルチタッチ
  2. UIスレッドとHandler
  3. Viewのツリーとレイアウト
  4. OpenGL ES を用いたグラフィックシステム
  5. バイトコード実行環境
 ですが、もともと想定されているのが専門的な開発者レベルなので、サンデープログラマでしかない私にとっては理解できないところの方が多かった(^_^;)のですが、それでもandroid開発大好きな私としては、感動しまくりでした(^^)/

 以下、感動したところを中心に…というか、それしかできませんので、書いてみますm(__)m

1.見事なまでにチューニングされたViewレイアウトの構築

 これは、「3.Viewのツリーとレイアウト」の部分です。

 私なんか、Android StudioのGUIツールは使わず、手動でLinearLayoutをばりばりに入れ子にしてxmlを作っていく訳ですが、それでもあんなに素早く画面に表示されるのは凄いなぁと思っておりましたが、これを読むと、以下の部分から納得できます。

 イアウトのリソースから動的に生成と聞くとパフォーマンスが気になるところですが、バイナリ形式のリソースからのViewのツリー生成はカリカリにチューンされていて相当速く動きます。

 作成するViewごとに別々のAttributeSetインスタンスを作らず、各Viewの作成時に共通のインスタンスを使いまわすので、不必要に一時的なメモリを確保しません。そのため、不要なGCも防ぐことができます。

 バイナリ形式自体が最初からこのResXMLParserで必要な機能が高速に実装できるように決まっているため、このパースはプログラムからハードコードでViewツリーを生成するのに近いレベルの効率性を実現できています。

 日々androidを構築されている方々って、実にすばらしい(^^)/

 …その2へ続きます。
posted by 【なかま】 at 23:24 | Comment(0) | android

「Androidを支える技術T」を読んで その2

 Androidを支える技術〈T〉を読んでのその2です。

2.GPUを利用した究極の描画システム

 これは、「4.OpenGL ES を用いたグラフィックシステム」の部分です。

 実は、私は自作アプリと言っても、過去のバージョンの互換性のため、つい最近まで、コンパイルは2.3.3つまりapi levelを10にしたままで公開しておりましたので、4.0からハードウェアアクセラレーションが標準で有効になっているのをつゆ知らず(^_^;)、canvasでの描画速度はこの程度だろうなぁと思っておりました。

 ですが、つい先日コンパイラを4.0以降にしたところ、今のandroidの描画は何も苦労しなくても、実になめらかにスクロールするようになっているんですね、知らんかった(^_^;)

 …ということで、以下の部分は、時代遅れの私には、まさに驚愕の仕組みでした(^^)/

 描画は、Viewのdraw()メソッドの時点では行われず命令列を保持するだけにして、実際の描画は別のスレッドで非同期に行います。(中略) 命令列の実体はOpenGLの命令列を表すDisplayListというものです。

 DisplayListの再作成がなるべく少なくして済むような単位で分解しておくことで、画面の一部が変更された時に、その変更された所と関係のないViewサブツリーは以前のDisplayListを使いまわして必須な所だけ再構築するようにしておくことができます。

 DisplayListのシステムでは、アニメーションの時に影響を受ける要素をシステムが把握しているため、影響を受ける部分だけを更新して画面を描画することができます。アプリの開発者はアニメーションを指定するだけで、システムが高速でなめらかなアニメーションを実現してくれます。

 裏に隠れる不要な描画命令をスキップしたり、他のオブジェクトが上に来て隠れたり、逆に他のオブジェクトが上から移動して画面に現れたりした時にも、Viewのコードまでわざわざ戻らずにDisplayListを再利用するだけで対応できます。

 OpenGLで描画した後、(中略) 合成用のハードウェアを最大限使いつつ、(中略) 画面に表示します。

…このような仕組みのおかけで…

 アプリ開発者がそれほど特殊なことをしなくても、大量のアイテムをスクロールさせてもずっと60fpsが維持される、JITが走って、GCが走って、データベースのためのファイルIOが走って、ユーザーコードのレイアウトが動的に走って、それでも引っ掛からない。

というような究極の描画システムが出来上がっている訳ですね、納得です(^^)。

 …その3へ続きます。
posted by 【なかま】 at 22:00 | Comment(0) | android