本連載では、バージョンの違いに左右されないスタンダードなアーキテクチャで、セキュリティやパーミッション、テストのしやすさ、開発効率の向上などを考慮した、実業務で使えるAndroidアプリ開発のノウハウを提供していきます。初回は、連載の今後を紹介し、アプリ間連携でさまざまなことができるACTION_OUTSIDEイベントの使い方を解説します。
今回から始まる本連載「実業務でちゃんと使えるAndroidアプリ開発入門」は、2008年12月から2015年まで約7年連載していた「Androidで動く携帯Javaアプリ開発入門」の後続となるものです。以前の連載同様、下記のことは守っていきたいと思います。
本連載と以前の連載では、コンセプトにおいて以下のような変更点があります。
以前の連載では、連載中にAndroid 4、5、6、Android Wearなどの機能一覧をまとめていましたが、今後はそうした特集記事は本連載とは別にまとめます。本連載では、新しいAPIにとらわれず、バージョンアップデートに左右されない基本となる部分の作り方を取り上げていきます。
Android 6が最新版ですが、Andrid 4.xもまだまだ現役です。本連載では現時点ではAndroid 4〜6で安定して動くアプリの作り方を解説します。
以前の連載では、ソースコードはZip形式で提供して、動画はFLVだったりMPEGだったりしましたが、本連載ではGitHubとYouTubeを用います。GitHubとYouTubeのチャネルのURLはそれぞれ以下の通りです。
ソースコードは基本的に最新のAndroid Studioで生成したプロジェクトの形式とし、特別な理由がなければMinimum SDKはAndroid Studioのデフォルト設定とします。
また、ソースコードは分かりやすさを優先し、エラー処理や例外処理は省略することがあります。サンプルコードを流用したい場合は必要に応じて補ってください。本連載のサンプルコードのライセンスは全てMITです。ソースコード内に他者の実装を取り込んでいる場合は取り込み元のライセンスに従います。
これまではソースコードがあるため、apkは単体では公開していませんでしたが、すぐに手元のスマホにインストールできるようにQRコード付きでインストールできるようにします
連載の内容は現段階では以下のようなものを想定しています。バージョンの違いに左右されない、スタンダードなアーキテクチャで、セキュリティやパーミッション、テストのしやすさ、開発効率の向上などを考慮した、実業務で使えるAndroidアプリ開発のノウハウを提供していきます。
これらはAndroidアプリ開発における基本ではありますが、何となく曖昧なまま開発し続けてしまっていることも多いため、この機会にきちんと復習してもらいたいです。図、説明、ソースコード、動作するアプリが提供される予定なので、完全にマスターできると思います。
アプリが守らなければならないデータというのは意外とたくさんあると思います。個人情報やユーザーデータ、システムやサービスにアクセスするためのパスワードやトークンなどが該当します。守らなければならないシチュエーションもさまざまですが、この回は悪意あるユーザーがアプリをクラッキングしようとしている、という想定での対策を検討してみようと思います。
AndroidアプリはAndroid StudioなどのIDEを用いて開発すると効率がよいのですが、Android Studioが必須なわけではなくAndroid SDKと好みのエディタ、それとターミナルで開発を進めることも可能です。Android SDKには開発に必要なコマンドが実行ファイルとして含まれているのですが、この中でこの回ではadbコマンドにフォーカスを当てて、開発中に使用すると効率が上がるものを紹介していきます。
AndroidにはContextを引数に取るメソッドが多数存在します。ActivityがContextだから、ついついどのメソッドにもActivityのインスタンスとして「this」を渡したりしていませんか? または常に「Application#getApplicationContext()」で取得したApplicationContextを渡していますか? この回ではContextとは何か、またどのContextを使用すべきかを学習していきます。
AndroidアプリはJavaで実装されているため、メモリリークなんて起こらない、ということならよかったのですが、実際はそんなことはありません。Androidアプリのメモリリークはちょっとしたことで起こります。メモリリークが起こる仕組み、その検出方法、対応方法を習得し、長時間安定して動作するアプリが作れるようになりましょう。
従来のアプリは、インストール時に必要なパーミッションがユーザーに提示され、合意を経てインストールされます。一度許可したパーミッションは個別に許可を取り消せませんでしたが、Android 6からはこれが可能になります。ユーザーによってパーミッションが取り消された場合、アプリはどのような動作になるのか、どのように振る舞わなければならないかを、サンプルを通して学んでいきます。
今回は、本連載のコンセプトの一例として、ACTION_OUTSIDEイベントの可能性について取り上げます。
さて、連載第1回目で取り上げるテーマは、ACTION_OUTSIDEとSYSTEM_ALERT_WINDOWを組み合わせた常駐アプリです。
ACTION_OUTSIDEイベントは公式レファレンスの説明が不十分であるため、つい見落とされがちで活用されていないイメージかもしれません。しかし、実は極めて有効に利用することができる優れたイベントです。ここでは、このイベントの具体例をサンプルアプリで示して、このイベントの可能性を提示してみます。
百聞は一見にしかず、まずは以下の短い動画を見てください。
この常駐アプリは、「ブラウザ上でトリプルタップを検出したら、ホーム画面を表示する」という動作をします。
今回のサンプルはブラウザからホーム画面を起動するようにしていますが、以下のような応用が可能です。
つまりは以下のような応用が可能になります。
この仕組みのポイントとなるのが、他のアプリがインタフェースを提供していなくても対象のアプリを拡張できてしまうところです。
サンプルアプリは以下よりダウンロードしてください。
今回のサンプルのソースコードは以下にあります。
繰り返しますが、本連載のソースコードは全てGitHubで公開していきます。記事本文では説明し切れない部分もあるため、気になる部分はソースコードを確認してみてください。今回の実装はActivityとService合わせて200行程度にまとめてあり、非常にコンパクトで理解もしやすいでしょう。
それではアプリの詳細を説明していきます。
Copyright © ITmedia, Inc. All Rights Reserved.