自由気ままに趣味な日々

プログラミングや趣味のことを自由気ままに書いていくブログです

Android App Bundle を使ったらアプリのサイズが削減できた

Google Play 様から 11/1 までにアプリの targetSdkVersion を 26 (Oreo) 以上にしろというお達し*1があったので、私の公開しているアプリも久しぶりにアップデートすることにしました。

久しぶりに Android Studio を開くと出るわ出るわアップデートの山。そして失敗する gradle の sync。それらを乗り越え簡単な機能追加と動作確認後、 targetSdkVersion を上げて APK を作成しようとしたところ、見慣れぬオプションが増えていました。

f:id:kimamajin314:20181006234053p:plain

Android App Bundle とな。

調べてみたところ、言語やレイアウトなどのリソースファイルなどを対象の端末ごとに適切に配置した APK を Google Play 側で作成・配信してくれる機能らしいです。ほかにも特徴がありますが詳しくはググってください。これにより APK のサイズ縮小などが期待できるみたいです。オプションの説明にも書いていますね。

せっかくなのでこれを使ってみることにしました。生成手順は通常の APK ファイルと同じで、生成すると .aab という拡張子のファイルが生成されます。

これをいつものように Google Play Console にドラッグアンドドロップして……しかしここでエラーが。Android App Bundle を使うには『アプリの署名』( Google Play App Signing )を有効にしなければいけないそうです。

こちらの記事 (【Android】Google Play App Signingのススメ) を参考に秘密鍵を暗号化してアップロード。今まで Android Studio の Master Password 機能を使っていたので、改めて Key Store Password と Key Password を聞かれたらすっかり忘れていてだいぶ焦りましたが、こちらの記事 (忘れてしまったAndroidの署名情報は見つかるかもしれない - メモ2ブログ) を参考に Android Studio のログから引っ張り出しました。
ちなみにさすがにパスワード平文保存はやばいと思ったのか、 Android Studio 3.1 でビルドした際の log ファイルにはパスワードは全て ******* で置き換えられていました。ここでもヒヤリとしましたが、 Android Studio 2.3 でビルドした際の log ファイルにはパスワードが残っていたので一安心。

さて、『アプリの署名』を有効にして .aab をアップロードすると、 APK のインストールサイズのところが普段と違います。

f:id:kimamajin314:20181007001317p:plain

おお! 最大で 17% 近くインストールのサイズが小さくなるようです。元々がそんなに大きなアプリではないのでこの削減量が多いのか少ないのかは分かりませんが、オプションに説明に真っ先に挙げられているようにファイルサイズが小さくなるのは事実のようです。

あとはいつも通りのアップデートの説明などを加えて無事リリース。忘れるもの筆頭のパスワードも Google Play Console に覚えてもらえるようになって万々歳です。

IIJmioのプランをSMS機能付きSIMから音声通話機能付きSIMに変更した話

私のスマートフォン格安simの1つであるIIJmioのSMSプランで運用していました。

通話の方はドコモのガラケー(最安プラン)で賄っており、いわゆる二台持ちでした。

当時は「あまり通話しないし、料金を抑えつつドコモの回線を維持できるとか最強のプランじゃないか」と思っていたのですが、

  1. 通話しなさすぎてガラケーの充電を忘れ、いざという時に電話ができない
  2. 全然使わないガラケーをいつも持ち歩かなくてはいけない
  3. ガラケーを忘れるとLINE電話などでしか通話手段がない

ということがあり、とくに緊急通報などの点でリスクがあると感じていました。

そこでSMSプランから音声通話プランに変更することにしました。

結局ガラケーのプラン分余計にお金をかけているだけになってしまいますが、そこは冗長性を確保しているということで。

災害時のつながりやすさはIIJmioなどのMVNOよりドコモの方が上だと思うという理由もあります。

さて、音声通話プランに変更するのですが、ここで注意点があります。

SMSプランから音声通話プランに変更するには、SIMカードの交換が必要なのです。

IIJmioのサイトでプランを変更すればOKとはいかず、電話番号も変わってしまいます

今回はSIM交換を含めて、SMS機能付きSIMから音声通話機能付きSIMに変更する手順をご紹介します。


まずは兎にも角にもプラン変更を申し込みましょう。プラン変更はIIJmioのマイページから行うことができます。

音声通話にプラン変更する場合、本人確認書類の提出が必要です。免許証や保険証などを手元に用意して行うとスムーズです。

申し込みができたら、数日で家に音声通話機能付きの新しいSIMが届きます。

が、ここで注意点です。

新しいSIMが届くと同時 (正確には新しいプランの開始案内メールに書かれている利用・課金開始日時) に、これまで使っていたSMSプランの方のSIMが使えなくなります(正確には高速通信ができなくなる?)。

つまり、アカウント認証にSMSを使うサービスを利用している場合、最悪アカウント情報が変更できなくなりサービスを使えなくなる可能性があります

私の場合はアカウントのSMS電話番号を一旦ガラケーの方の電話番号に移動させましたが、移動先がない場合は・・・頑張ってください。多分両方のSIMが使えている間に移動させることができるはずです。

LINEの場合、これまで使っていたSIMの電話番号を別の番号に退避させなくても新しいSIMの番号にすぐに変更できたので、特に事前準備は不要でした。

LINEの新しいSIMの電話番号の設定手順は以下の通りです。

SIMカードをを交換して「設定」->「プロフィール」->電話番号に表示されている番号をタップ->「電話番号変更」をクリック->新しい電話番号を入力 (既に入力されていることもある) ->送られてきたSMSに書かれている番号で認証


さて、新しいSIMを迎え入れる準備は万端といったところで、実際に届いたSIMカードを見てみましょう。

f:id:kimamajin314:20180212220650j:plain
パッケージ外観
f:id:kimamajin314:20180212223806j:plain
丸い用紙の中にSIMカードが入っています

最初SIMカードは後ろの黒い部分に入っていると思いきや、それはただの台座で、丸い用紙の中に張り付いてありました。

SIMカードを交換したら、IIJmioの公式アプリのみおぽんで認証を済ませましょう。

翌月まで繰り越せる高速データ通信容量 (バンドルクーポン) はアカウントに紐付けられているため、プランを変更しSIMカードを変えても引き続き繰越分も含めて使い続けることができます

SIMカードを交換するとスマホがインターネットと通信できなくなってしまった場合、アクセスポイント名 (APN) の設定がIIJmio (iijmio.jp) になっているか確認してみてください。


さて、最後に古い方のSIMカードはどうすればいいのでしょうか。

IIJ公式のヘルプページを見ると、封筒に入れて送り返せばいいみたいです。
SIMカードの返却方法を教えてください。 | IIJmio

しかし、別に返却しなくてもペナルティーはないみたいなので、時間がある時に準備して返却しましょう。
SIMカードを返却できなかったらどうなりますか? | IIJmio

私は返却用SIMが元々付いていたカード型の台座を保管してあったので、それに貼り付けて返すことにします。

f:id:kimamajin314:20180212222824j:plain


今回はIIJmioのプランをSMS機能付きSIMから音声通話機能付きSIMに変更し、使っているスマートフォンの機能を100%使えるようにしました。

SMSで認証しているサービスのアカウント情報変更は、忘れると思わぬ落とし穴になる可能性があるので注意しましょう。

www.iijmio.jp

NVIDIA GeForceグラフィックボードを新しくするときにやったこと

これまでGeForce GTX 770で頑張ってきましたが、この度ディスプレイをWQHD (2k) にするにあたりパワー不足が目に見えていたので・・・。

買ってしまいました! GTX 1080です!

一気に3世代も進みました。早く性能を試してみたいですね。早速交換しましょう。

しかしその前にやっておくことがあります。

まずはベンチマークをとっておきましょう。交換後のカタルシスがより大きくなります。
ドライバーの削除ですね。

現在パソコン内にインストールされているのはGTX 770用のドライバーなので、このまま交換してしまうとGTX 1080をGTX 770用のドライバーで動かすことになり、不具合が出る可能性があります。

ということでドライバーを削除しましょう。検索するとドライバーと関連ソフトを一つずつアンインストールしなければならず面倒だという記事がありゲンナリしていたのですが、試してみるとドライバーをアンインストールするだけで関連ソフトも一緒にアンインストールされました。とても簡単になっています。

それではやったことを見ていきましょう。OSはWindows 10のバージョン1709です。

まず、もしものためにバックアップをとっておきましょう。と言ってもOSの信頼性が上がり、グラフィックボードの交換でシステムが吹き飛ぶ可能性は大分減ってきていると思うので、私はやりませんでした。

これは自己判断でお願いします。

次にドライバーをアンインストールします。ツールバー端のWindowsアイコンを右クリックしてメニューを開き、一番上の「アプリと機能」をクリックします。

f:id:kimamajin314:20180108021244p:plain

設定ウインドウからも開けますが、簡単なので私はいつもこの開き方をしています。

インストールされているアプリのリストを「NVIDIA ◯◯」というプログラム名までスクロールして、「NVIDIA グラフィックス ドライバー 【バージョン番号】」というプログラムをクリックし、アンインストールボタンをクリックします。

f:id:kimamajin314:20180108021408p:plain

するとドライバーのアンインストーラーが立ち上がるので、指示に従ってアンインストールしてください。

アンインストールが進むとマルチディスプレイが解除されたり解像度がおかしくなるかもしれませんが、ハードウェアの使い方をコンピュータに教えるためのプログラムであるドライバーを削除したので正常な動作です。ご安心ください。

アンインストールが終わると再起動を促されますが、ここはとある理由から「後で再起動する」を選択しておいてください。理由は後述します。

「アプリと機能」内から「NVIDIA グラフィックス ドライバー」と、関連ソフトである「NVIDIA 3D Vision ドライバー 【バージョン番号】」と「NVIDIA 3D Vision コントローラー ドライバー 【バージョン番号】」が消えていることを確認してください。

NVIDIA HD オーディオ ドライバー【バージョン番号】」などはGTX 770向けのドライバーではない(と思う)のでアンインストールの必要はないはずです。私の環境では問題ありませんでした。

GeForceからRadeonに交換するなら削除した方がいいでしょう。

確認できたら、いつもどおりスタートメニューからシャットダウンしましょう。シャットダウンしパソコンの電源が切れたら、グラフィックボードの交換をしてください。

交換後、電源を入れ、BIOS画面で新しいグラフィックボードがちゃんと認識されているか確認します。

確認できたらいつも通りにWindowsを起動させます。いつも通りWindowsが起動するはずです(解像度はおかしいかもしれませんが)。

いつもだったら新しいグラフィックボードに付属するCDでドライバーをインストールするのですが、パソコンがインターネットに接続されているならしばらく待ってみてください。

解像度が元に戻り、マルチディスプレイも復活するはずです。

何が起こったのかというと、Windowsが自動でグラフィックボード(今回はGTX 1080用)のドライバーをインストールしてくれたのです。凄く便利!

メーカーの専用ユーティリティソフトを入れないのであれば、付属CDを箱から取り出す必要さえないのです。便利な世の中になったものです。

ドライバーのアンインストール時に再起動をさせなかったのは、あのまま再起動させてWindows起動までいってしまうと、消したはずのドライバが勝手に再インストールされてしまうからなんです。

しかもそれをアンインストールするためにはもう一度再起動させなければいけないというおまけ付き。


バックアップの時間を含めなければ、ドライバのアンインストールからグラフィックボードの交換、起動まで30分もかからず非常に簡単にできることが分かりました。

この交換方法で現在問題なくGTX 1080を堪能しています。ベンチマークの値が2倍以上になって大満足です。これでまた3世代は戦えるはず・・・!

Amazonアソシエイト登録時のPINコード入力にめちゃくちゃ苦戦した話

Amazonで販売されている膨大な数の商品の価格や類似商品の検索などが行えるAmazon Product Advertising APIですが、使用するのにAmazonアソシエイトへの登録が必要になります。

Amazonアソシエイトアフィリエイトサービスなので、登録にはブログやアプリなど広告を出せる媒体を運営している必要があります。

私は当時そういった媒体を持っていなかったため、急いでこのブログを開設し、Amazonアソシエイトへ申し込みました。

申し込みの際の入力項目は特に困るものもなかったのですが、詰まったのは最後の電話によるPIN認証でした。

結論から言うと、ガラケー・固定電話子機ではPINコード入力に失敗しまくり、固定電話本機でPINコードを入力する必要がありました。

認証のために電話番号を入力し「今すぐ電話する」ボタンを押すと、Amazonから電話がかかってきて自動音声ガイダンスにPINコードを入力するように求められます。

私はデータ専用SIMを入れたスマホガラケーの2台持ちなので、最初ガラケーで受けたのですが、数字キーを押してPINコードを入れても何の反応もありませんでした。

しばらくするとブラウザの方で「入力したPINコードが間違っています」といったエラー表示が出てきます、確かに正しいPINコードを入力したはずなのに。

これは入力したPINコードをAmazon側が読み取れておらず、何の入力もされていないと解釈された時もこの表示を出すためです。これは紛らわしい。


何度か試して(1時間に2回しか発信できないという制限があるので時間がかかりました)、どうもガラケーが悪いのではと疑い固定電話の子機でも試してみました。

しかしこちらも結果は同じく無慈悲なエラー文章が現れるだけ。

  • 1時間後再挑戦しようとするとページの有効期限が切れて最初の入力画面に戻される
  • 発信ボタンを押しても電話がかかってこなかった挙句「入力したPINコードが間違っています」というエラーが表示される
  • 音声でも入力できるというFAQページのアドバイスに従って、反応のない電話に向かってゆっくりはっきり数字4つを唱える機械になる(その後エラーが表示される)
  • サポートに問い合わせても「ゆっくり番号を発音してください」というアドバイスしか得られない

という数々の艱難辛苦を乗り越え、ようやく発見したPINコードを読み取ってもらえる方法。それが、

PINコードが表示されると同時にそれを覚えて、固定電話本機までダッシュし、固定電話本機で電話をとり、覚えたPINコードを入力する

というものでした。

Amazonの自動発信システムは固定電話に弱いのか、私が成功したときは音声ガイダンスも流れない一切の静寂の中で諦め半分で入力したということを言い添えておきます。

・・・orz

ガラケーと固定電話子機で入力に失敗する原因は分からませんが、ボタンを押した時にピーやツーといった音が鳴るのが重要なんじゃないかと思います。
音声入力でも失敗した理由はさっぱり分かりません。

スマホだとPIN認証前の審査情報入力が面倒そうなので、認証時はノートパソコンを使うとダッシュする必要が無いので体力を温存して認証に臨めますよ!

ガラケーと固定電話子機なんておおよそ2017年とは思えない組み合わせで挑戦しようとしたのが間違いだったのでしょうか。

PIN認証で躓いている方の参考になれば幸いです。