APKのサイズを34KBから21KBまで減らすために行ったこと🐱

EasterEgg Neko Atsume LauncherのAPKサイズを極限まで小さくすることに取り組んだ成果を適当に書いておく。

EasterEgg Neko Atsume Launcherがそもそもなんだ??って話だろうけど、以下とか読めばOK。

hack-it-iron.hatenablog.com

play.google.com

どのようにAPKのサイズを小さくしたか

コードはGithub上に公開してある。読むほどの価値はない...🐱

具体的にAPKサイズのチューニングを行ったPull Requestは以下の2つ。

github.com

github.com

不要なリソースファイルを削除する

EasterEgg Neko Atsume Launcherはアプリの性質上、ほとんどリソースを必要としない。

R.javaさえ消し去りたいくらいだ。

styles.xmlはいらないね。テーマの定義なんてAndroidManifest.xmlに直接書けばいい。さらば、styles.xml

次はstrings.xml、いらないね。アプリ名なんてAndroidManifest.xmlに直接書けばいい。さらば、strings.xml

これでres配下はアプリアイコンが配置してあるmipmapだけになった。

不要なリソースの削除はココらへんが限界。(mipmap-mdpiとか消してよくね?とかもあるけど、そこは消さずに残す縛り

アプリアイコンを最適化(optimize)する

不要なリソースファイルを消したところで削れるのは所詮 数十 〜 百 byteほどだ。

ということでアプリ唯一のリソースであるアプリアイコンを最適化してみよう。

使うツールは画像最適化ツールの「ImageOptim」

ImageOptim — better Save for Web

使い方が簡単なのでとても嬉しい。ファイルをDropするだけで最適化してくれて、どれくらい最適化できてのかも表示してくれる。

んで、ImageOptimにアプリアイコンをDropして最適化してみる。

アプリアイコンが 30%くらい最適化された。素晴らしい!

ImageOptimでもうひと押し最適化する

ImageOptimのメニューバーの「ツール」を開いてみると最適化の方式が選べることに気づいた。

「品質: 100%」というのがデフォルトの設定みたい。最適化しても品質は落ちさないというのは当たり前か。

f:id:operando:20160921185135p:plain

んじゃ、その下にある非可逆圧縮の動作に変えて再度アプリアイコンを最適化してみた。

f:id:operando:20160921185142p:plain

画像のサイズは小さくなるが、画像の品質が落ちるので適材適所ではあるが、ここは心を鬼にしてAPKのサイズを小さくすることに優先するぞ!

ぐぬぬ...🐱よ... ちょっと品質落ちるけどごめんなー!!という気持ち...

その結果、Release APKのサイズが21KBになった!!

最適化前のVersion 1のRelease APKのサイズが 34KBだったので、 34 - 21 = 13KBの削減だ。

最高だ🐱!!

21KBになったVersion 2のAPKをリリース

最高のアップデートだ🐱

f:id:operando:20160921190103p:plain

まとめ

アプリの性質によってはリリースを限界まで削減できる。

コードをいじったり、削除したりで限界がきたら画像をImageOptim等で最適化してみるといい。

🐱最高!!

Androidについて語る! shinobu.apk #3 を10/5 (水)に開催します! #shinobuapk

はい、タイトルどおりshinobu.apk #3を開催するんですよ!!やたー(/・ω・)/やたー(/・ω・)/やたー(/・ω・)/

shinobu.apk #3のイベントページになります!

shinobu-apk.connpass.com

開催日は 10/5 (水) 19:30からメルカリのオフィスにて行います。

興味があればぜひぜひ参加登録していただけると嬉しいです!!

そもそも shinobu.apkってなんぞ??

shinobu.apkは、Shinobu Okano(この記事書いてる本人)と愉快な仲間たちが繰り広げるファンタジーな勉強会です。

shibuya.apkという、渋谷を中心に活動するAndroidアプリ開発者コミュニティの名前をtypoしたことによって生まれたものです。

真面目に言うと、有志を募ってAndroidについてパネルディスカッションをする勉強会です。

という感じで、真面目だけどゆるふわな感じでAndroidについてパネルディスカッションする勉強会です!

shinobu.apkがどんな雰囲気のものなのかを知りたい場合は、shinobu.apk #1、#2のディスカッション内容の録音データやまとめ記事を書いていますので、こちらをご参照してください。

shinobu.apk #1ではAndroidで今起きている変化と今後のAndroidにどんなことを思っているのか、願っているのか」、#2では「個人でもAndroidアプリを開発している人に聞きたい開発事情、個人アプリ開発に思うこと」をメインテーマにディスカッションしました。

tech.mercari.com

hack-it-iron.hatenablog.com

hack-it-iron.hatenablog.com

shinobu.apk #3

shinobu.apk #3ではAndroidエンジニアが語るAndroidのいいところ、好きなところ、オススメなところ」をメインテーマにディスカッションします!

これまでのshinobu.apkと同様で、当日のパネルディスカッションの内容は録音して後日公開する予定です。

上記をメインテーマとしてshinobu.apk #3では日々Androidと戯れ、Androidをこよなく愛する??3名の方々にパネルディスカッションしていただきます!

パネリストを引き受けていただいた方々圧倒的感謝です!!

shinobu.apk #3 パネリストの紹介

@muumuumuumuu

Androidの光と闇について語るのが好きなエンジニア。

あるいはビールをこよなく愛する人妻。

Android Nの🐱アプリかわいい。

@named_arguments

Androidアプリ開発が好きな霊長類。

好きなMockitoの定数はRETURNS_DEEP_STUBS。好きなポケモンヤドン

DozeはAndroidのServiceの自由を奪うと考えている電源消費推進派。

@wakwak3125

ちょっと前まで家具屋で「いらっしゃいませ」と言うことを生業としていたエンジニア

やきとりとビールが大好きです。

NougatがOTAで降ってこないので悲しんでいます。

モデレーター

私(@operandoOS)がやらせていただきます。

メインテーマの理由

なぜshinobu.apk #3ではAndroidエンジニアが語るAndroidのいいところ、好きなところ、オススメなところ」をメインテーマにしたかといいますと...

正直毎回そうなんですが...私が話を聞きたい人を集めたというのもあります!が...

自分が知らない、または聴いていただける方々がまだ知らないAndroidの良さを語り合えたらいいなーと思うわけです。

さらに、Androidのいいところや好きなところを語り合って、パネリストも聴いていただける方々もAndroidにさらに好きになってくれたら嬉しいなーとも思うわけです!

iPhone 7?? iOS 10?? そんなことよりAndroidだろ!Android Nだろ!」みたいな意気込みでディスカッションしていきたいですね!!

Androidのいいところについて語り合うためにもAndroidエンジニアが3人集まると、辛いって話をする(笑)」みたいなことにならないようにモデレーター頑張ります 💪

まとめ

shinobu.apk #3に少しでも興味がある方はぜひぜひ当日勉強会に参加していただけると非常に嬉しいです!!

もし参加できなくても、後日公開予定のパネルディスカッションの録音を聴いたりしていただけるだけでも嬉しいです!!

shinobu.apk #3もゆるく楽しく面白いディスカッションにしたいと思います!!

また、Androidエンジニアに限らずもっと色んなエンジニアさん達とAndroidについて色んな視点からディスカッションしたいと思ってますので、「Androidに物申したい!」という方がいらっしゃいましたら、ぜひぜひ私(@operandoOS)にお声がけいただけると嬉しいです!!

2016年 ぱないー まとめ(9/19時点

ハニーチュロとエンゼルクリーム率が高い...なるほど...

画像解析に使えるかも...w

10年ぶりに東京ゲームショウ 2016行ってきたので雑な感想

f:id:operando:20160917205243j:plain

中学生ぐらいの時に行ったのが最後だから、多分10年ぶりぐらいになる。確かPS 3が発売されるとかそんな時期だった。

最近またゲームをちょっとずつやるようになったし、VR系も気になったので久々に行ってみた。

色んなものを見て色々考えさせられたし、すごく楽しかったので書きたいことはいっぱいあってまとめられない...wけど雑にまとめ!

http://expo.nikkeibp.co.jp/tgs/2016/public/index.html

エンジニアになったからこそわかるブースが増えた

当たり前だけど中学生の頃なんて大手ゲームメーカーしか知らないガキだったわけで...

さらにITの世界に入ったからこそ「え!?PayPalがブース出してる!?」とか「Intelもブース出してるのかー」とか新鮮な感じだった。

考えてみればPayPalなんかは例えばPlayStation Storeの決済で使えたり、色んなゲームプラットフォームの決済に絡んでいるわけだ。

そう考えるとやっぱりゲームの世界はただゲームを作るだけじゃないなーと改めて思うわけです。

深い。

TwitchのブースでやってたLeague of Legends面白そうだった

ライブストリーミング配信プラットフォームのTwitchのブースでプロゲーマーとかによるLeague of Legendsというゲームのトーナメントがやってた。

www.twitch.tv

play.na.leagueoflegends.com

ニコ生とかもそうだけどライブでゲーム実況とかってめっちゃ面白いんだよねー。

自分がプレイしてないんだけど、すげー楽しめるという不思議な感じなんだよねー。

League of Legendsそのものを知らなかったけどめっちゃ見てるの面白かった。

解説とか帰ってきてTwitchでLeague of Legendsの実況配信見てると、グループ戦が多い?っぽいが、ブースでは 1 on 1でやってたので、そこがまたすげー面白かった。

eスポーツ面白い!という方々の気持ちがすごく理解できたのでちょっとeスポーツ友達欲しいw

Twitch以外のブースでもeスポーツのトーナメントとかやっててゲーム自体は知らないけど楽しめたので満足。

色んなVRが出ていた

見たことのないVRヘッドセットがなんかいっぱい出てた気がする。

PlayStation VRはやっぱり人気だったので試せなかったよー。

早くBIOHAZARD 7をPlayStation VRでやりたい!!

まとめ

やっぱりゲームってすごいなーいいなーということを思い出させてくれるいい一日だった。来年も行こうと思う。

ゲームを作りたい!ゲームの仕事がしたい!って数年前まで全く思わなかったけど、やっぱりゲームが好きだからゲーム業界はちょっと憧れる。

もちろん簡単な業界ではないが、自分が楽しんできたものや業界には貢献したい!って気持ちがあるので、何か機会があれば関わってみたい!と思う。

あと、プロゲーマー達のプレイを見てるとすごく楽しいので、見ている側にワクワク感やドキドキ感や楽しんでもらえる感覚を与えることができる仕事もいいなーと思う。

とにかくプロゲーマーはすごいし、憧れる。

ゲームは楽しい!!

念願の夢だったクソアプリ EasterEgg Neko Atsume Launcherをリリースしました🐱

こ、これで俺も...ついに...個人アプリ開発者...だぜ?

そうです、ついに!念願の夢だったクソアプリをリリースできました

EasterEgg Neko Atsume Launcher です!

play.google.com

だいたいこんな感じのアプリです

なんだそれ?

Android NのEasterEggである ねこあつめもどきの一覧画面をランチャーアイコンで簡単に起動できるアプリだよー

詳しい説明は以下の記事とか読むとわかるよ

www.dream-seed.com

とにかく説明は省くけど、集めたの一覧画面が簡単に起動できるんだよー

アプリのサイズなんと 34KB!?

めっちゃアプリのサイズ軽い

すごいぞ

minSdkVersion 24の世界!?

そしてこのアプリ minSdkVersion 24ですよ

最新のAPI使いたい放題ですよ (誰もアプリの中で使ってるとは言ってない

あ、そう minSdkVersion 24なのでAndroid N以上しかインストールできないアプリです

Githubにコード置いてあるよ

Githubにアプリのコード置いてあります

github.com

まとめ

Android Nはいいぞ