2017年06月06日

Google playの説明欄にリンクを表示する

 先日、従来より公開していたアプリのkeystoreが、Win10のクラッシュとともに使用不能となりました(暗号化していたため、復元不可)ので、改めて別アプリとして公開することとなりました_| ̄|○

 そこで、google play アプリ上で、以前のアプリのページから新アプリのページにリンクを張る方法はないものかとググってみたところ、

<a href="https://play.google.com/store/apps/details?id=masa.develop">新アプリへのリンク</a>


のようにすればOKとのことでしたが、実際は使えませんでした。(ただし、PCからのプラザ、ChromeやEdgeでは使用可能です。)

 以前は使えたのかもしれませんが、2017.6.5現在では使えませんでした。

 しかし、Google謹製のマップアプリの「詳細はこちら」のずーっと後のところ、

map_long2.png

では、上記のように、下線付きのリンクが見えますし、実際にタップすると移動できます。(この例のリンクは、GoogleのURL短縮サービス Google URL Shortener を利用して短縮してあります)

 そこで、ひょっとすると、そのままURLを書けば、google playアプリ上ではリンクにしてくれるのではないかと思ってやってみましたら、ビンゴでした(^^)/

 この google play の「詳細はこちら」の欄は、google play developer consoleで、「ストアでの表示」-「ストアの掲載情報」-「商品の詳細」-「詳しい説明」に記述する内容になります。

 しかし、この「詳しい説明」欄は、アプリのページ上では「詳細はこちら」をタップしてからしか表示されません。これでは、ユーザーはリンクのことを気が付いてくれませんよね(^_^;)

 もっと上に、ユーザーの目に触れるところにリンクを表示することはできないかと考えてみました。つまり、以下の画像の部分です。

map_top_down2.png

 これは、google play developer consoleで言うと、「ストアでの表示」-「ストアの掲載情報」-「商品の詳細」-「簡単な説明」に記述する内容になります。

 この欄は、80文字と制限が厳しいのですがここに、短縮URL、例えば拙作のURL

今後のバージョンアップはこちら https://goo.gl/fWMCCV

などと記述してみました。

 これをgoogl playアプリで見てると、

my_app2.png

となりまして、google playアプリ上では、文字としては表示はされるのですが、下線も付きませんし、当然リンクになっていません。

 だめかと思ったのですが、普通、人はURLが書かれてあれば、タップしますよね。…ということで、ここでこのURLをタップしてみます。すると…

my_app_next2.png

となって、今度はちゃんとリンクが表示されて、タップするとちゃんと移動できます。

 まあ、この「簡単な説明」欄にリンクを表示するなど邪道な話ですが、アプリのページの先頭ページにどうしてもリンクが表示したい場合は、使えるテクニックかもしれませんね。そんなことするのは私ぐらいですが(^_^;)

Google playでアプリ説明欄を修飾する方法

 これはよく知られていることですが、google playでは、htmlのいくつかのタグが利用できます。今回、私が試して利用できたもの(太字・文字の色付け)を記載します。

 <b>ほげほげ<b> <font color=red>ほげぼけ</font>

 文字を太字にしたり、色付けしたりするだけで、味気ない説明欄が格段に見やすくなります!(^^)!

my_app_explain2.png

 ただし、フォントの色付けについては、PC上では、ChromeやEdgeのブラウザでは、機能しませんでした。二つとも機能したのは、google playアプリ上だけです。

 しかし、Googleの公式アプリのgmail、カレンダー、マップではこのような文字を修飾する機能は使われていませんが、この機能は、非推奨ということでしょうか?

 ということで、icon48.pngNeo実用スケジューラもよろしくお願いしますm(__)m

posted by 【なかま】 at 16:03 | Comment(0) | android

2017年05月30日

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

 Androidを支える技術〈U〉を読みました。


 第一巻と同様に、大変感動しました(^^


 この書籍は、Android のOSの心臓部を解説したものです。ですが、もともと想定されているのが専門的な開発者レベルなので、第一巻同様、サンデープログラマでしかない私にとっては理解できないところの方が多かった(^_^;)のですが、それでもAndroid開発大好きな私としては、感動ものでした(^^)/


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


1.大変セキュアなアプリ環境


 Androidと言うと、iOSに比べてウィルスが多いとか、個人情報が抜かれるなどと酷評されますが、この解説を読むと、Androidは大変安全でセキュアなOSということがよくわかります。ここは是非ともAndroidのセキュリティをディスっている方に読んでほしいと思いました。


 以下、著者の言葉で説明します。


 Androidには、アプリにはそのアプリを実現するために 必要な機能にだけアクセスできるようにし、 それ以外の機能にはアクセスできないようにする仕組みがあります。


 まず、他の同様なOSと比較しながら、著者は説明していきます。 Androidは、あるアプリは別のアプリを信用していません。従ってアプリ A の書いた情報はアプリ B には読むことができません。 これが同じユーザーの走らせたソフトウェア同士は大体同じ権限で動く旧来の OSと違うところです。従来の PCは別のユーザーを信用していなかったのが、 Android では別のアプリを信用しなくなったのです。


 AndroidはもともとLinuxの上に構築されたシステムです。つまり、 Linux 上では、あるユーザーが他のユーザーの作った秘密のファイルをこっそり見ることはできない訳です。


 これをAndroidはどのように実現しているのかと言うと、 Androidはこの Linux のマルチユーザーのセキュリティモデルを、全く別の目的であるアプリ同士を信用しないセキュリティモデルを構築することに使用しています。なんと、 Android の書くアプリは Linux からは別々のユーザーと見えるようになっているのです。


 具体的には、Androidのアプリがインストールされる時、アプリに固有の秘密の情報は、個々のアプリ毎に作成した/data/data/[パッケージ名]というディレクトリに保存するため他のアプリから見ることはできません。結果として、 共有の必要のないデータは dataディレクトリの下に作成すると自身のアプリでしか見ることができないということが Linux のマルチユーザーの仕組みで担保される訳です。


 そして最終的にLinux はログインするものの中に悪意のあるユーザーがいてもセキュアに運用することができています。同様に Android においても悪意のあるアプリを入れて起動してしまっても、それだけで無制限に全ての情報を持っていかれることはありませんとなります。言い換えると このようにアプリを別々のユーザーと扱うことで、長い実績と信頼のある Linux のセキュリティモデルの強固さをそのまま Android の目的に用いることができます。

 今回、これを読んで初めて、セキュリティの素人である私でも、Androidのセキュリティに、自信をもって安心することができました(^^)



posted by 【なかま】 at 13:33 | Comment(0) | android

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

 Androidの開発者ならば当然ご存知のように、そのアプリはシステムからいつkillされても良いように開発することが求められます。

 この著作は、Androidがメモリ不足時にどのように動作するのかを詳細に解説しています。

 以下、私の理解した範囲で要約してみたいと思います。

2.Androidのメモリ不足時の動作

 (1) スマホにはスワップ機能はない

 まず、スマホという環境は、WindowsなどのOSと異なり、スワップ機能がないのか基本です。それは、スマホなどの多くの機器では2次記憶は何らかの形のフラッシュメモリ(eMMCやmicroSDカード)であるためで、書き込みは遅くバッテリーも食い、しかも回数に制限があるからです。

 (2) スマホは常にメモリ不足

 そして、Android にはスワップがなく沢山のアプリがどんどん起動されるためにスマホにとっては現在でもメモリー不足はたまにしか起こらない異常事態ではなく、日常的に頻発する出来事なのです。

 (3) 不要プロセスはkillされる

 そして、AndroidはLinuxの上に構築されています。そこで、Linuxはシステムがメモリ不足で正常に動作しなくなる前に、Androidがメモリ不足になった時に、どのプロセスをkillするかを判断するのに使う仕組によって、メモリを解放するために積極的に不要なプロセスをkillします。

 この時、システムがメモリ不足に陥った時にkillされるプロセスを選ぶ時の、プロセスのkillされやすさを表すパラメータとしてoom_score_adjという指標を基準にします。

 そして、Linux がプロセスを kill するのはメモリー不足の最終段階ですが、Androidはそれよりも前の段階でメモリを解放するために積極的に不要なプロセスをkillします。

 さらに詳しく見てみると まず、プロセスを Linux カーネルがkillするよりも前の段階にカーネルがファイルシステムにキャッシュの解放を依頼するフェーズがあります。ここでLowMemoryKillerドライバーが不要なアプリのプロセスをkillします。さらに Linux カーネルがプロセスを kill する段になった時は、 Android がoom_score_adj という kill しても良いプロセスを通知するスコアを設定することで Android としてkillしても良いと思うプロセスから Linux にkillされる仕組みとなっています。

 (4) 不要Activityはkillされる

 これを開発者の視点で見ると、要はActivityがkillされるということです。その基準は、 基本的にはそのプロセスが現在画面を占有している Activity を含んでいるかContentProviderを含んでいるかあるいは SDK のServiceを含んでいるかなどの情報を管理してそれらの情報から現在重要そうなプロセスを選択しLinuxにkillを依頼する仕組みとなっています。

 このようにして、Androidは、ある程度余裕がある状態の時から頻繁に裏に行ったActivityのプロセスをkillしてメモリを開けていくことでシステムの正常稼働に必要な程度のメモリをいつも残しておくように努力しています。

 私がこの項目を読んで思うのは、この話のキモは、その時点でAndroidにとって不要なActivityは、Androidがスコアを振り、そのスコアに基づいてもともと存在しているLinuxの不要部分を削除する仕組みに依頼してkillして貰っていることだと思います。

 (5) Activityのライフサイクルへ続く

 そして、頻繁に起きるメモリ不足によってkillされた多数のActivityが、ユーザーから見て、同時に多数動いているようにみせかける仕組みが「Activityのライフサイクル」ということになります。(あってるかな?)

 この件については次回にします。


posted by 【なかま】 at 12:46 | Comment(0) | android