2016/11/10

Smaller APKs : Android におけるAPKを小さく保つためのテクニック

Android Performance Patterns Session にいい動画が上がっていたので、備忘録として中身を書き出しておく

Removing Unused Resources

gradle file にて以下の minifyEnabledshrinkResources をセットしておく。

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
            'proguard-rules.pro'
        }
    }
}

これらはアプリ内で使用していないリソースを除去してくれます。

Multi Resources Support

Android がサポートしているリソースサイズを全て揃えるとそれだけで結構な量になるので、必要なものだけ使う。

ldpi mdpi から自動で作られる
mdpi
tvdpi 使わない
hdpi xxhdpi から自動で作られる
xhdpi xxhdpi から自動で作られる
xxhdpi
xxxhdpi
  • mdpi
  • xxhdpi
  • xxxhdpi

のみ使用する

Vector Drawables

PNG や JPEGの代わりに vector 画像を使うようにする。

Reuse Existing Resources

可能であれば画像の再利用を行う、
例えば、下向きの矢印を上向き矢印に変更するなど。 他にもAndroid の機能を使って、以下のものを変更できる。

  • color tint(色味)
  • shapes(形)

Removing Unused Code

  • ProGuard を使う
  • ProGuard を使う時は、minifyEnabled true を使って ProGuard の仕事量を減らす。
  • 必要なライブラリの軽いバージョンを見つける、どうしてもない場合は必要な箇所のソースだけ抜いてくる。

Apk Analyzer

Android Studio 2.2 から搭載された apk analyzer を使う。

2016/07/21

Laravel :: phpunit with clean database.

Laravel + postgresSQLを使ったサイトで unit test を書いてたが、既存のデータベースを使うと、テストが意図しない挙動になることがあったので、汚れていないDBを使いたくなったので、調べてやってみたら、意外と詰まってしまったという話。

環境

  • laravel 5.x
  • PostgreSQL

sqlite in memory database を使う方法

config/database.php

環境変数で default 値を差し替えれるようにする

'default' => env('DB_DEFAULT', 'pgsql'),

config/database.php

memory database の定義を作る

'sqlite_testing' => [
    'driver'   => 'sqlite',
    'database' => ':memory:',
    'prefix'   => '',
],

phpunit.xml

環境変数追加。環境変数を与える方法は別に何でも良い。

~~~~~~~~~~~~~
        <env name="DB_DEFAULT" value="sqlite_testing"/>
    </php>
</phpunit>

TestCase.php

都度migrateをするようにする。

  public function setUp()
  {
      parent::setUp();

      $this->artisan('migrate');
      $this->artisan('db:seed');
  }

  public function tearDown()
  {
      $this->artisan('migrate:reset');
  }

これで上手くいく人は上手くいく。


Sqliteでエラーがでる場合の対処1

Driver not found

[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'Doctrine\DBAL\Driver\PDOSqlite\Driver' not found

が出たら。

cmposer に

"doctrine/dbal": "^2.5"

ALTER TABLE SYNTAX ERROR

さらにエラーが出る。
ALTER TABLE が syntax エラーと migration 中に出る。

ここからヒントをもらう。

以下のスレッドの中で、SQL Features That SQLite Does Not Implement [sqlite.org] を参照。つまり、sqliteで実装されていないので、エラーになっている。

ここを参考に、

エラーがでない内容の migration だけを行い、
そのsqlite file をテスト前にコピーして、テスト後破棄するというもの。

少々面倒。

また以下問題も見つかる。

migration 中にエラーが出たら、エラーが出たファイルを消して、migration を終了させた後、テストを流してみたが、特定のカラムが無いというエラーが起きた。
一つの migration ファイルの中で、ADD COLUMNDROP COLUMN 両方を入れているとエラーにならず、追加もされない。

Sqliteでエラーがでる場合の対処2

sqlite を諦め、PostgreSQL に一時的な testdb を作成し、
そちらでテストを行い、終了後は drop database する。

script を書きそれを実行した。

psql -U postgres -c "CREATE DATABASE testdb"
php artisan migrate --database=pgsql_testing
php artisan db:seed --database=pgsql_testing
phpunit -c phpunit.xml "$@"
psql -U postgres -c "DROP DATABASE testdb"

これでようやく上手くいった。

2016/07/02

[読書メーター] 2016年6月まとめ

並行して、色々と技術本を読み始めたので、
読了数が少なくなったけど気にしない。



2016年6月の読書メーター
読んだ本の数:1冊
読んだページ数:400ページ
ナイス数:4ナイス

ゲームウォーズ(上) (SB文庫)ゲームウォーズ(上) (SB文庫)感想
フルダイブ型仮想世界がインフラ化してる世界で製作者の仕込んだ謎を解くと国家予算並の遺産をゲットできるエッグハントが始まって数年。80年代マニアの製作者が用意した最初の謎を問いた主人公と続々続いて謎を説いていく他のプレイヤーたち、お互いの姿が見えずとも明日にはライバルが次の謎を解いて先に行ってしまうかもしれないという焦燥感とシンクロする。80年代マニアック知識も良いし、海外小説であることを主張する翻訳も良い。
読了日:6月30日 著者:アーネスト・クライン

読書メーター

2016/06/05

[読書メーター] 2016年5月まとめ

ようやく読書の習慣が少し戻ってきました。
英語の勉強が少しだけひと段落したってのもあります。(まだまだ続きますけど)
仕事本の読み込みが相変わらず終わらないので、速読読了を目指してみたいと思います。
速読中々難しいですね。頭の中の音読音を消すらしいのですが、その状態が長続きしません。
精進精進


2016年5月の読書メーター 読んだ本の数:4冊 読んだページ数:887ページ ナイス数:3ナイス マグダラで眠れ (8) (電撃文庫)マグダラで眠れ (8) (電撃文庫) 読了日:5月13日 著者:支倉凍砂
声優魂 (星海社新書)声優魂 (星海社新書)感想 大塚明夫さんの昨今の声優に対する苦言から始まり、最終的には仕事・人生論。考え方の大枠が私と似てる気がする。大塚さんの方が年食ってる分もっと上の考えを持っていそうですが。すとんと腑に落ちました。 読了日:5月6日 著者:大塚明夫
半値になっても儲かる「つみたて投資」 (講談社+α新書)半値になっても儲かる「つみたて投資」 (講談社+α新書)感想 保険屋の知り合いに進められて読破。色々な例が出てるので実際に自分で計算して言ってる事が正しいかは検証可能。 読了日:5月6日 著者:星野泰平
ダーリンは外国人 ベルリンにお引越し トニー&さおり一家の海外生活ルポダーリンは外国人 ベルリンにお引越し トニー&さおり一家の海外生活ルポ 読了日:5月1日 著者:小栗左多里,トニー・ラズロ
読書メーター

2016/05/11

[読書メーター] 2016年4月まとめ

4月は小説のみ、理由はなんだろう無いかもしれない。
読書が習慣から抜けつつあるな。なんとかしたいところ。


2016年4月の読書メーター
読んだ本の数:1冊
読んだページ数:392ページ
ナイス数:2ナイス

マグダラで眠れ (7) (電撃文庫)マグダラで眠れ (7) (電撃文庫)
読了日:4月18日 著者:支倉凍砂

読書メーター