#20-20180610-20180616
大きなニュースはKotlin 1.2.50のリリースくらいでしょうか
JetpackのNavigationでCustom Viewを管理する
GitHubで見るhttps://proandroiddev.com/jetpack-navigation-with-custom-views-c763255c9599
Navigationが標準でサポートしているのはFragmentとActivityですが、好きに拡張できるよ、ということでCustom viewの遷移を管理できるようにしてみたようです。
最近のアプリ界隈での「設計」の違和感
GitHubで見るhttp://quesera2.hatenablog.jp/entry/2018/06/14/022504
いろいろ設計パターンありますが、表面的になぞるだけじゃなくて、それによって何が実現できるか、とか考えた上で採用したいですね。
React Nativeのrearchitecture
GitHubで見るhttps://facebook.github.io/react-native/blog/2018/06/14/state-of-react-native-2018
ハイブリッドアプリをより作りやすくするためのrearchitectureが進んでいるようです。しかし5年間開発して、まだバージョンが0.55というのもすごいですね……。
Kotlin Developers MeetupでHadi氏が来日するそうです
GitHubで見るhttps://kotlin.connpass.com/event/90679/
すでに枠が埋まっているのですが、ご参考までに。
Kotlinのvalプロパティのgetter
GitHubで見るそうなんだ... 👀
— Yuki312 (@Yuki_312) June 15, 2018
valなのにgetのたび結果が変わるようなところに違和感がある🤔 https://t.co/xxvwRHZpsbちょっと違うかもですが、使い分けで悩むときは、自分はここに書いてることを参考にしていますー!!https://t.co/BR9JRutkju
— ふじたく (@magie_pooh) June 15, 2018Kotlin的にはフィールドのvalは不変という意味でなくて単に代入できないという意味になっているみたいですね🤔バイトコード的にはバッキングフィールドを持たず、ただのメソッドになるみたいですね
— takahirom (@new_runnable) June 15, 2018メソッドにするかプロパティにするかという話も合わせて興味深い議論です。
AMDのWindowsマシンでエミュレータが動かせるという話
GitHubで見るhttps://www.reddit.com/r/androiddev/comments/8qhirc/amd_finally_gets_google_emulator_support_canary/
見逃していましたが、27.3.6から動かせるそうです。
https://androidstudio.googleblog.com/2018/06/emulator-2736-canary.htmlなおスレッドはWindowsとLinuxどちらがビルドが速いかという話題で盛り上がっています。
KotlinConf 2018のスピーカーが発表
GitHubで見るhttps://kotlinconf.com/speakers/
いつもの面子といったところですが、気になる人はぜひ。アーリーバードチケットすべて売り切れてしまったようです。
Kotlin 1.2.50リリース
https://blog.jetbrains.com/kotlin/2018/06/kotlin-1-2-50-is-out/
Android関連で大きそうなのは下記の通りです。
- マルチモジュールプロジェクトでのインクリメンタルビルドのパフォーマンス向上
- kaptのパフォーマンス向上
gradle.properties
にkapt.use.worker.api=true
を書くと、kaptをGradleのワーカーで動かしてくれる要Gradle 4.3以降1.2.60からデフォルトで有効にする予定
また、コンパイラにProgressiveモードが追加されました。
これは本来メジャーバージョンでしかリリースされない、後方互換性のない修正や改善をマイナーリリースでも有効にするためのものです。
基本的に、Kotlinのバージョンアップにキャッチアップしているアクティブな開発者向け機能なようです。
ProgressiveモードはKotlinコンパイラの引数に-Xprogressive
を追加することでモジュール毎に有効にされます。
本来メジャーバージョンアップで追加されるはずの変更が適用されるので、もちろん既存コードがエラーになることもあります。GitHubで見る-
ちなみに、現状マルチモジュールなプロジェクトで
kapt.use.worker.api=true
記述すると下記リンクのエラーでビルドできません。(シングルモジュールなプロジェクトに関しては未検証)https://youtrack.jetbrains.net/issue/KT-24919
AGP3.2系でDataBinding使っていると下記のエラーも発生しています
https://youtrack.jetbrains.net/issue/KT-24915 -
今確認したら
kapt.use.worker.api
に関する記述消えてますね 🤔なおDataBindingでのエラーは下記対応で回避できそうです
https://github.com/googlesamples/android-sunflower/pull/52
国際化された文字列をスタイリングする方法
GitHubで見るhttps://medium.com/google-developers/styling-internationalized-text-in-android-f99759fb7b8f
HTMLタグは何度か使いましたが、文字列リソースのカスタムアノテーションは使ったことがありませんでした。カスタムアノテーションと ImageSpan で文字列に画像を入れるのはなるほどという感じです。
non-SDK APIにアクセスしたときの挙動
GitHubで見るhttps://android-developers.googleblog.com/2018/06/an-update-on-non-sdk-restrictions-in.html
以前から告知されていたことですが、Pからはnon-SDKのAPI(つまり
@hidden
なAPI)にアクセスできなくなります。グレイリストに入っているものについては使えますが警告がログに出るとのことです。StrictModeであれば、ポリシーで違反時の挙動を変えられるのでテストのときに便利そうです。
https://commonsware.com/blog/2018/06/12/strictmode-api-greylist-monitoring.htmlConstraintLayout 1.1.2
GitHubで見るhttps://androidstudio.googleblog.com/2018/06/constraintlayout-112.html
1.1.1でパッケージが
androidx.constraintlayout.ConstraintLayout
になっていたのが、このリリースでandroidx.constraintlayout.widget.ConstraintLayout
に修正されています。FacebookがAndroid/iOSで使えるデバッグツールSonarを発表
https://code.facebook.com/posts/1461914677288302/open-sourcing-sonar-a-new-extensible-debugging-tool/
https://fbsonar.com
https://github.com/facebook/SonarざっくりいうとStethoの進化版です。
StethoはChromeのdev toolベースで開発していたため、Androidのデバッグツールとして利用するには制限があったとのこと。Sonarはスタンドアロンなアプリなのでこの制限がなく、たとえばadbを使ったりiOSのデバッグもできるようになったそうです。Stethoと同様にプラグインで拡張可能なので、いろいろできそうです。Sonarのアプリ自体はElectron製で、プラグインのUIはReactで書くことができます。
GitHubで見る-
Publickey でも取り上げられていたのでリンク置いておきます。
https://www.publickey1.jp/blog/18/iosandroidsonarfacebook.html
-
なお、個人的にはread onlyなプロパティに見せかける利点はほぼない気がするのですが、どうなのでしょうか。
私は基本メソッドで書いてしまいますね…
あとはふじたくさんの挙げているリンク参考にしています