公式「Android Kotlin Guides」が公開される!! Jake がメンテ中

Kotlinのコードががなんとなく見づらいような気がしてましたが.

こんなの公開されています.

Android Kotlin Guides

このコンテンツについては, GitHubにて公開されていまが,

メンテナーは, Googleにフレームワーク開発において最近合流したあの Jake Warton 神.

android/kotlin-guides: A set of guides for writing Kotlin for Android.

Jake と言えば, ハンガリアン記法についてなどコードスタイルについてはSquare在籍時より強いこだわりを持った発言がありましたよね.

Just Say mNo to Hungarian Notation - Jake Wharton

「Android Kotlin Guides」にはコードスタイルについて記述があります.

例えば, だれもが遭遇していると思われる以下.

When a function signature does not fit on a single line, break each parameter declaration onto its own line. Parameters defined in this format should use a continuation indent (+8). The closing parenthesis ()) and return type are placed on their own line with no additional indent.

関数の記述が一行では収まらないときは, それぞれのパラメータをそれぞれで改行する.それらのパラメータは8のインデントで連続させて, 閉じカッコと戻り型はインデントなしの一行とする.


fun <T> Iterable<T>.joinToString(
        separator: CharSequence = ", ",
        prefix: CharSequence = "",
        postfix: CharSequence = ""
): String {
    // …
}

見やすいですね!

これまで, Square から公開していたように, 定義ファイルで公開してほしいですね!

Android Code Style で インデントはスペース何個?


ログ出力をクリッカブルにして該当行に素早く移動

Android Studio でのログ出力.

任意の文字列を出力する場合は,


Log.d("TEST", "テスト")

と書いておくと,

となります.

Kotlin では,


println("TEST テスト")

と書いてあげると,

となります.

以下のような文字列にすると,


println("TEST https://google.com/")

println("TEST (MainActivity.kt:100)")

と表示されて,

それぞれブラウザの該当ページや,

該当ファイルの該当行に直接クリックで遷移できるようになります.

ここで,

Exception().stackTrace[1]

を使うと, 記述した位置の該当ファイル名と行数が取得できるので,

インラインなユーテリティにします.


class LogUtils {

  companion object {

    private const val TAG : String = "TEST"

    @JvmStatic fun d(message: String) = Log.d(TAG, appendFileLine(message))
    @JvmStatic fun d(message: String, t: Throwable) = Log.d(TAG, appendFileLine(message), t)

    @Suppress("NOTHING_TO_INLINE") // ?
    private inline fun appendFileLine(message: String): String {
      val frame = Exception().stackTrace[1]
      return "$message (${frame.fileName}:${frame.lineNumber})"
    }

  }

}

あとは, 表示したいメッセージとともにお好みの場所で


LogUtils.d("テスト")

と書いておけば,

となって便利にデバッグに使えたり.


「Realm Report」にみるモバイル開発のトレンド

Realm Report Q4 2017

モバイル開発者が利用している言語は?

モダンな言語に移行が進んでいる

今現在, モバイルプラットフォームでは7つの主要言語がありますが割合は急速に変化しています. iOS開発者においては, Swift が登場しましたが, 今では Objective-C を超えています.

Androidでは, Javaがピークに達しており Kotlin のAndroidプラットフォーム獲得が進んでいます.

 

世界で一番モバイル開発の進んでいるのは?

優秀な開発者はどこにでもいる

Realm を利用した開発者は基本的なデフォルトの選択を超えており, 193カ国からコードがプッシュされていますが, 上位10カ国は世界中に均等に分布しています.

現在, 開発者が注目している技術やプラットフォームの興味深い違いをこの分析に見ることができます.

 

iOSは西欧を拠点としている

西欧の開発者は iOS 11 beta にすばやく注目しており, 全開発者の10%以上が, ドイツとアメリカにおいて iOS11beta を利用しています.

 

西欧の開発者は iOS の新技術に素早く対応している

西欧諸国の開発者は新しい Realm の iOS バージョンに非常に早くアップグレードしています.

 

西欧の開発者はiOS8のような古いバージョンは素早く切り捨てています

新しい技術に対応することは, 古いバージョンやデバイスのサポートをやめることになることになることがあります. 西欧諸国では, そのトレードオフのほうを好んでいます,

 

iOSに関しては, ドイツとアメリカが常に上位 (イギリスが3位)

iOS11対応やRealm対応, 古いiOSバージョンを切り捨てるスピードでは3カ国の開発者は他を圧倒しています. イギリスは開発者数では12番目ですが, 対応の速さでは常にドイツとアメリカに続いています.

 

Androidではアジアがリードしている

iOS では, アプリビルド数ではアメリカが上位ですが, Android Oreo 対応では低迷しており, ロシアや日本が上位となっています.

 

Android版Realmの対応割合の上位ははっきりしない

Android版Realmの対応状況はアジア諸国の開発者は新技術を追うことに対してより保守的であることを示しています.

 

Kotlin 対応はアメリカがさらに加速していくかも知れない

Android に Kotlin が新しい風を起こしており, アメリカ開発者のプラットフォームの将来を動かすかもしれない.

 

モバイル開発全体ではドイツが明快にトップ

ドイツのモバイル開発が両プラットフォームでのトップで Android とiOS の新バージョンや技術の対応も最も素早い.

 

Kotlin が今 Android 生態系を変えようとしている

Google I/O 2017 以降, Kotlin の割合は劇的に世界中で増加しています.

 

まとめ?

iPhoneXは4Kテレビと同じにおいを感じるんですよ。「技術としてスゴい」ことと「便利」なことって似ているようで違いますよね。んで、iPhoneXは、技術を追求するために便利さを捨てている気がするんですよ。

ホリエモン×ひろゆきが分析するiPhoneXの新機能「技術を追求するために便利さを捨てている」 - IT・テクノロジー - ニュース|週プレNEWS[週刊プレイボーイのニュースサイト]

アジアでありながら西欧諸国のようにiPhoneの販売台数割合は大きい日本ですが, 今後, 「古いOSやデバイスを考慮しない」という考え方でそれらを切り捨てていくという西欧スタイルの考え方は今後もさらに浸透していくのでしょうか.

そして, 新しい技術への対応や古いOSを切り捨てることに対してのより保守的なアジアスタイルの考え方はやは今後も縮小していくのでしょうか.

Realm Report Q4 2017