LoginSignup
33
30

More than 5 years have passed since last update.

Kotlinでごく簡単なAndroidアプリを作ってみる

Posted at

最近KotlinでAndroidアプリを作るといい感じという話をちらほら聞くようになってきていましたが、先月Kotlinの1.0が出たということで試しに軽く触ってみました。せっかくなので手順をメモしておきます(Qiita投稿練習も兼ねて)。

Kotlin 1.0 Released: Pragmatic Language for JVM and Android

いるもの

基本的に、JDK, Android SDKそしてAndroid Studioと通常のAndroid開発で使用する環境があればKotlinをすぐ試せます。 既存の開発環境がそのままつかえるのはいいですね。今回はAndroid Studio 1.5.1で試しています。

開発環境準備

以下の順にすすめていけばとりあえずKotlinでAndroidアプリをビルドできるようになります。

  1. Android StudioのKotlinプラグインインストール
  2. 新規プロジェクトの作成(この時点ではJavaコードです)
  3. JavaからKotlinへのコード変換
  4. Kotlinビルドのための設定

上記のセットアップにつきましては、以下の投稿が非常に参考になりますので、こちらでは説明は割愛したいと思います。

KotlinでAndroid
【Kotlin】AndroidでHello World

上記の手順を実施後に、Kotlin Android Extensionsをつかえるようにするためにbuild.gradleに以下のようにapply plugin: 'kotlin-android-extensions'の一文を追加しておきます。(自分はこれで少しはまりました。もうKotlinビルド設定の時に合わせて自動で追加してくれてもいいのではないかと思いますが・・・)

Using Kotlin Android Extensions

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

(以下省略)

サンプルアプリ実装(インストールアプリ一覧の表示)

試しに、端末にインストールされているアプリ名のリストを表示して、アプリ名をタップするとアプリ名をトースト表示するだけの簡単なアプリを作ってみました。

appimage.png

以下がコードになります。初期コードからほんの数行追加しただけでできてしまいました。まさかこれだけでできるとは思いませんでした・・・

package org.sheep.kotlinapplist

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        listView.adapter =
                ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
                        packageManager.getInstalledApplications(0).map { it.loadLabel(packageManager).toString() })
        listView.onItemClickListener =
                AdapterView.OnItemClickListener { parent, view, pos, id ->
                    Toast.makeText(this, parent.getItemAtPosition(pos) as String, Toast.LENGTH_SHORT).show()
                }
    }
}

以下解説という程でもないですが、便利だと思われるところについて書いてみたいと思います。

  • widgetはリソースIDを変数名としてそのまま呼び出せる

上記サンプルのlistViewのように、基本的にリソースIDを変数名としてそのまま呼び出せてしまいます。findViewById()どころか変数定義すら不要です。

  • PackageManagerも簡単に呼び出せる

上記サンプルですとpackageManagerという変数名で呼び出すことができます。こちらもgetPackageManager()の呼び出しが不要です。

  • Java8でないと使えないような機能がつかえる

これはやはりKotlinを使う一番のメリットではないでしょうか。上記のサンプルでもラムダ式を使っています。また、map()といったコレクションメソッドもありますので、それらを使うことで実装がさらにすっきりしています。

感想

当初は、便利とはいえまあそこそこコードは書かないといけないのでは無いかと思っていたのですが、実際に作ってみるとあまりのコード量の少なさに驚きました。今回は小さなアプリでしたのでまだKotlinの真の素晴らしさを体感するまでには至っていないかとは思いますが、今後もぜひ使っていきたいですね!

33
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
30