アンドロイドアプリの開発

東京都立産業技術高等専門学校 ものづくり工学科 電子情報工学コース

実習先  Shannon Lab株式会社

1.はじめに
今回、Shannon Lab株式会社でインターンシップを行った。この会社は人工知能技術を用いたソフトウェアの開発を行う会社である。
既に考案されていたアンドロイドアプリの原案を元に、機能の実装を行った。このアプリは一般的な本棚機能を持ったアプリに、機械学習を用いた「本の推薦」を行う機能をつけたものである。この機能は「本のソムリエ」として、このアプリの特徴的なものである。図1は”Books For You”のタイトル部分の画像候補である。
booksforyou
図1 アンドロイドアプリ“Books For You”

2.実習内容
今回の実習では主に、アプリの表示画面の実装とSNSとの連動機能の実装を行った。

2-1 画面表示・遷移
アプリの画像表示やボタンの配置は、Layout
機能によって行う。Layout機能には画像やボタンなどをマウスで直接配置できるGUIデザイナ
と、さらにプログラムを書くことで、GUIだけではできない細かい設定を行うことが出来る。画像の配置にはGUIを用い、ボタンの配置はプログラムを書くことで設定した。画像の表示は、使う携帯端末の画面の大きさによっては小さくなってしまう。従って、画面の大きさに応じて、適した画像を用意する必要がある。また、画面の大きさによって適切なレイアウトが自動で使用されるので、いくつかのレイアウトのパターンを用意するという方法もある。今回は一般的なアンドロイド端末の画面に合うよう、この2つの方法を使って、表示画面を作った。
Activity機能は画面遷移などを実行する機能である。他にも、画像サイズの変更や次に説明するSNSとの連動も行うことが出来る。今回は、ボタンのタッチを検出し、対応するページに遷移するものと、フリックした方向によってページをスライド切り替えするものを実装した。
フリックについては、レイアウトでViewFripperというフリックに対応したページであることを設定し別のページとのリンクを行うことで、Activity機能での遷移を行わせることが出来る。しかし、上手く認識されなかった為、フリックを検出しログに表示するプログラムを入れた。

2-2 Twitterとの連動
今回、Twitterとの連動はOAuth認証で行った。OAuth認証とは、アプリがユーザー情報(今回はTwitterとFacebookのユーザー情報)を取得したいときに、その仲介を行ってくれるものである。アプリ側からOAuthサービスプロバイダへ、あるユーザー情報が欲しいという要求があると、そのユーザーの認証許可が行われる。そこで認証が行われた場合、アプリへそのユーザーの権限のごく一部がOAuthにより委託され、ユーザー情報を使えるようになるというものである。
OAuth認証を行う場合、Twitter4jというライブラリをインポートすることで、簡単に行うことが出来る。Twitterへのアプリ登録を行うと、Twitterからコンシューマーキーとシークレットキーが生成されるため、それをプログラムに埋め込み、実装を行った。コンシューマーキーとは、
アプリの識別を行う際のキーのことである。シークレットキーは電子署名に使われるものであり、セキュリティ対策のための鍵の役目である。
また、一度連動を行えば次からは認証画面を開かなくても良いようプログラミングした。テストアカウントを使い連動テストを行った結果、無事に認証・連動が行われた。
2-3 Facebookとの連動
Facebookとの連動もOAuth認証を使った。Twitterと違う点は、アプリの登録の際に、ハッシュが必要であるということだった。ここでのハッシュとは、アプリを識別するためのデータ列のことである。ハッシュを生成するのはコンソールで行えるが、Windows環境では対応してないため、JDKのkeytoolというツールとOpenSSLコマンドを使い、生成を行った。OpenSSLコマンドは証明書の発行を行うもので、証明書の管理を行うのがkeytoolである。
また、Facebookのユーザー情報は個人の情報を多く含むため、セキュリティが厳重だった。そのため、アプリの登録にもFacebookアカウントと、開発者アカウントが必要になった。さらに、開発者アカウントの登録には、必ず携帯のアドレスが必要だった。今回は、用意していただいたメールアドレスを使用し、アカウント登録を行った。
アプリの登録を終え、Facebookとの連動テストを行ったが、結果が安定しなかった。原因は、アンドロイドエミュレータの動作が非常に遅く、通信がタイムアウトするためと考えられる。
2-4 Amazonとの連動
Amazonの商品画像や商品情報を取得するために、Amazonと連動を行い、APIを取得する予定だったが、AmazonのAPI規約により、アンドロイドアプリのAmazonとの連動が難しくなっていた。しかし、規約上禁止にはなっていなかったので、以前使っていたAmazonの開発者アカウントを使わせていただき、アプリの登録を試みた。アプリの登録にはいくつかの項目を入力する必要があり、それらを見ていると、個人的にアンドロイドアプリを作る場合に回答ができない項目があった(会社の経営内容など)。今回は会社情報に、Shannon Labの情報を使わせていただき、登録を行うことにしたが、診査があったため結果を確認することが出来なかった。
3.考察
今回、Twitter・Facebookの連動はOAuth認証で行った。今回のようにアプリとユーザー間の連動を行うにはOAuth認証が一般的であると考えられる。
Amazonとの連動については、文面で禁止にしている訳では無いが、アプリの登録の際の項目や審査などから、事実上サポートを行っていないと考えられる。
4.まとめ
今回インターンシップでアンドロイドアプリの開発を行った。画像表示や画面遷移などの基本的なものや、SNSとの連動を行い、アンドロイドアプリの基本構成や、アプリの連動の仕組みを学んだ。また、企業で働くということを学べる貴重な体験だった。今後働く事になった時、今回のインターンシップで学んだ事を生かしていきたい。

研究所所長からのコメント:Twitter・Facebookの連動はOAuth認証多くのアプリに必須です。開発ありがとうございました。

Comments are closed.