Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

Android 8.0とAndroid Studio 3.0で始めるReactive Extensionsを用いたアプリ開発

BIZREACH Developer Blog 第2回

  • LINEで送る
  • このエントリーをはてなブックマークに追加

 本連載では、株式会社ビズリーチのエンジニアが、急成長を続ける事業の中で得られた実践的なノウハウをつづります。第2回のテーマは「Java 8で開発するReactive Extensionsを用いたAndroidアプリ開発」です。

目次

はじめに

 昨今、リアクティブプログラミングが注目されています。GUIにおけるインタラクションや、時間経過と共に変化するアニメーションなどに適したパラダイムであると言われており、もちろんAndroidアプリケーション開発にも取り入れていくことが可能です。

 本記事では、2018年1月時点における最新のAndroid開発環境であるAndroid Studio 3.0.1とAndroid SDK Build Tool 26.0.2(Android 8.0)と、Reactive Extensions(RxJava2)を使ったアプリ開発方法について、チャットアプリケーションを題材として紹介します。

対象読者

  • Androidアプリケーション開発に携わるエンジニア
  • Androidでリアクティブプログラミング未経験者
  • Android 8.0、Android Studio 3.0未経験者

 チャットの相手は、インターメディアプランニング株式会社が提供する「Repl-AI」に担当してもらいました。Repl-AIは、Web上のツールでシナリオを作成し、REST APIでメッセージを送信するとシナリオに従って自動応答をしてくれるBOT作成サービスです。下図は、今回のアプリケーション用に作成したシナリオの画面です。

Android Studio 3.0.1

 ベースとなるIntelliJのバージョンが2016.2から2017.1.2に更新されました。 また、本稿ではJava言語を利用しますが、デフォルトでKotlinプラグインがインストール済みなので、すぐにKotlin言語を利用したAndroid開発を始めることもできます。

 Android Studio 3.0ではJava 7およびJava 8の一部仕様をサポートしています。今まではRetroLambdaやJackの設定が必要でしたが、それらを行わずともJava 8の仕様でAndroid開発を行うことができるようになりました。このJava 8サポートは、desugarと呼ばれるバイトコード変換プロセスによって実現しているそうです。

 desugarな環境であれば、Java 8で書かれたサードパーティ製ライブラリが利用できるといったメリットもあります(RetroLambdaではサポートしていませんでしたし、Jackは2017年3月14日に廃止がアナウンスされてしまいました)。

プロジェクトの作成とサポートするAndroidのバージョン

 それではチャットアプリケーションの開発を始めましょう。プロジェクトを新規に作成するには[File]メニューから[New]-[New Project]と選択して、必要事項を入力します。プロジェクトを作成したら、生成されたプロジェクトのbuild.gradleを確認しましょう。

 Android Pluginのバージョンが3.0.1(執筆時点)となっていることが確認できます。既存プロジェクトを利用する場合には、手動でバージョンをアップデートしてください。

buildscript {
    ...略...
    
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
}

 また、リポジトリ定義にGoogle Mavenリポジトリを追加しておきましょう。今後、support libraryなどはGoogle Mavenリポジトリで配布されます(※Android Studio 3.0.0以降で作成したプロジェクトならデフォルトで設定されています)。

allprojects {
    repositories {
        jcenter()
          
        google()
          
        // Gradle 4.0未満を利用する場合には、このように書けばOKです。 
        // maven { url 'https://maven.google.com' }
    } 
} 

 appモジュールのbuild.gradleも確認しておきましょう。今回は、サポートするAndroidのバージョンを5.0以上(API Level 21)としました。

 2014年にAndroid 5.0がリリースされて3年以上が経過し、シェアが拡大しています。もしマテリアルデザインを取り入れるのであれば、UI/UXのメンテナンスが楽になるといった点からも、古いOSバージョンを切り捨てる選択も良いのではないでしょうか。

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"
      
    defaultConfig {
        ...略...
          
        minSdkVersion 21
        targetSdkVersion 26
    }
      
    compileOptions { 
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

 仮にAndroid7.0(API Level 24)以上をサポート対象としたい場合は、以下の点に留意する必要があります。

  • 残りのJava 8仕様(Optional、Stream API、java.util.functionパッケージなど)が利用可能
  • ただし、上記はサードパーティー製のライブラリで代用可能
  • 2017年10月時点で、Android 7.0以上のシェアは18%程度

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:BIZREACH Developer Blog
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5