Androidアプリ
トップ  > システム開発  > 研究開発  > Androidアプリ

Androidアプリ

弊社には、Webアプリケーション開発の経験が豊富な人材が多数在籍しております。
さらに、モバイルアプリケーション開発の人材育成・経験者のスキルアップを目的として、
Androidアプリのプログラミングを行う勉強会を2014年に5回に渡り開催しました。

Androidの開発業務を長年行っている弊社社員が、メインで講師を務めました。

勉強会概要

最終的な成果物は、Twitterクライアントアプリです。
画面の基礎から、非同期処理の基本、そして、実用的なアプリの開発のためのユーティリティ(Volley)の使用へと回を重ねるごとに、ステップアップしていきました。

1回目~2回目

1回目~2回目の開催では、ListViewの利用方法をマスターしました。

  • ListView
    AndroidのUIのひとつ。複数のアイテムを一覧表示する。
    今回開発するアプリでは、アイテム=ツイートを一覧表示するために利用する。

3回目~4回目

3回目~4回目では、メインスレッドと非同期でhttp通信する方法を勉強しました。

このように、インターネット上にあるXMLファイルにアクセスしてみました。

  • スレッド
    ひとつの処理の流れを示す単位。
    複数の処理を並行して行うマルチスレッドの機能を利用する場合、メインスレッド内でサブスレッドを作成し並行して実行する。
    AndroidアプリなどGUIアプリケーションにおいては、UI描画をメインスレッド内でのみで行うことになっており、これをUIスレッドとも。
  • 非同期通信
    時間のかかる通信を同期的に処理する際にメインスレッド内で行うUI描画が停止することなどを、非同期的に処理することで回避する。

5回目

最後は、Twitterの開発者アカウントを各自取得して、このようにTwitterの閲覧、投稿ができるアプリを作り上げました。

Androidアプリ開発の特徴

WebのJavaは経験していても、AndroidのJavaは初めてという人には、非同期処理は新鮮です。
Javaの基礎を勉強するとTreadクラスを実際に使ったりしますが、AndroidにはAsyncTaskというものがあり便利です。

  • Treadクラス
    サブスレッドを作成する際、Threadクラスを継承するクラスを作成し、そのThread継承クラスの処理内容を呼び出す、という記述になる。
    runメソッドをオーバーライドすることでThread継承クラスの処理内容を記述。
    startメソッドをメインスレッドで呼び出すことでサブスレッドを実行。
  • AsyncTaskクラス
    サブスレッドを作成する際、AsyncTaskクラスを継承するクラスを作成し、そのAsyncTask継承クラスの処理内容を呼び出す、という記述になる。
    doInBackgroundなどをオーバーライドすることでAsyncTask継承クラスの処理内容を記述。
    onPostExecuteをオーバーライドすることでUI描画処理も記述可能。これが便利!
    executeをメインスレッドで呼び出すことでサブスレッドを実行。

また、画面を制御するプログラミングも新鮮です。
ライフサイクルにのっとり画面を制御するため、コールバック関数(Javaだからコールバックオブジェクトですが)を多用します。
そのため、ときには無名クラスを多用するコーディング・・・なかなか新鮮です。

  • ライフサイクル(Activity Lifecycle)
    Android Developers の図解を参照。
    http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
  • コールバックオブジェクト
    イベント(ボタンクリックなど)が発生したときに呼び出される処理を定義したオブジェクト。
  • 無名クラス(匿名クラス)
    既存のクラスを継承したクラスで、クラス名を持たない。
    クラスを継承し宣言を行う記述を省略し、クラスのインスタンス化を行う時点で、処理を定義する。
    コールバックオブジェクトの処理を無名クラスで定義することができる。

Javaの面白さを感じられる開発環境ではないでしょうか。
Android開発にJava8が使用できるようになると、無名クラスを簡略化して記述する"ラムダ式"の導入によって、またいろいろ変わりそうで楽しみです。