HENNGE@DroidKaigi 2021
On October 20th, 2021 (JST), I attended the 7th annual DroidKaigi conference. On this day, 14 talks were held, including a session for which I spoke. Due to Covid-19 restrictions, the conference was held all online with a mix of live and pre-recorded sessions. All sessions were broadcast on Youtube and can be viewed there. Each session was scheduled to be roughly 25 minutes long. After most sessions, time was provided for a quick live Q&A session using real-time comments and questions posted by folks viewing the stream. This article covers only a single day of conference material as there were too many talks during DroidKaigi to fit well into a single article and also because that was the only full day I attended.
The first talk “State of the Art of Android Widgets” was a talk in English by thagikura. The talk covered a short history of the Home Screen Widget API on Android and how the changes it has gone through over the years as well as the most recent changes and how they improve the widget experience. The overall arc of the talk was that until recently widgets have undergone very little change since their introduction but that the most recent version of android added a lot of new features including rounded corners, dynamic colors, improved size handling, better widget customization for users, and better performance. After the new features were explained, a brief tutorial on how to properly write widgets and how to balance performance with data accuracy was covered to help inform good widget design.
The second talk “Master of Lifecycle” was a talk in Japanese by Sato Shun. This talk was an overview of the Android Lifecycle as well as a walk through various tools that developers can use to interface with it safely. The talk started with a basic rundown of the Android Lifecycle and followed with an overview of how to use the Lifecycle objects and callbacks. Next, ViewModel along with LiveData were introduced as safer ways to interact with the Android Lifecycle. Finally, modern Kotlin Flow code concepts were introduced as well as how they can both interact safely with the lifecycle as well as how they can be used to replace LiveData on more complicated projects.
The third talk “Rescuing Old Code with Jetpack” was a talk in Japanese and English (for the slides) by me. I covered a list of strategies and tools on how to bring old legacy code projects written in Android up to date with more modern tools. The first part of the talk spent time breaking down how to cut the problem of refactoring down to a size where it can be worked into individual bug fixes rather than a long rewrite process that might never ship. Following that specific tools included in Jetpack were covered along with the specific Android anti-patterns often found in old code they are best designed to fix. Most tools discussed included a specific code sample that showed how to transition code from the old dangerous style to the new cleaner code style.
The fourth talk “ReactNativeとKotlinで叶える夢のリアルタイム音声配信” (ReactNative and Kotlin bringing the dream of voice broadcasting to life) was a talk in Japanese by Yu Mitsuhori. The talk covered the process the speaker went through in creating a voice broadcasting/streaming app using Kotlin and ReactNative. A significant portion of the talk was used to cover Facebook’s ReactNative project and how Kotlin can be used with it.
The fifth and sixth talks overlapped with my lunch period so I will cover them in summary here from the notes I was able to gather from later in the session. The fifth talk “Android Emoji 2021” was a talk in Japanese by Seigo Nonaka that covered how Emojis currently work on the Android platform and spent some time discussing the problem of handling character counts when dealing with emoji. The sixth talk “A Practical Guide to Building Mobile App Distribution Workflows” by Jumpei Matsuda was an overview in Japanese of how to handle app distribution and build structure using continuous integration systems and specifically how this helps teams that have to add a lot of members and what kinds of challenges were faced and how the build environments and GitHub were able to help solve these issues.
The seventh talk “★2.2のアプリがIn-App Review APIを導入して★4.2になるまで” (or How we used the In-App Review API to get our 2.2 star app to 4.2 stars) was a discussion in Japanese by teshi04 covering the journey went through to improve app ratings in Google Play using the In-App review API. First, the reasons we should care about app ratings were covered. Then a short overview of ways to improve ratings was covered. Most of the talk focused on how to use the In-App Review API as well as how to target its use to be the most effective at getting good ratings while also not being too annoying to users. Avoiding being too annoying is important not only to preserve the user experience with your app but also so that the annoyed users don’t get a bad rating in response.
The eighth talk “2020年代の WebView 実装” (The current state of WebView in 2020) was a presentation in Japanese by “こやまカニ大好き” (koyama kanidaisuki) was an overview of the history of changes in Android webview followed by the most recent developments and the author’s personal recommendations based on his experience with the CookPad app. The historical overview of web view covered android 4.4–10.0 and listed the rather confusing chain of changes state of the art webview based development has gone through over the years. Then, the CookPad app’s use of Viper Architecture was covered for its unique way of handling the challenges that modeling code with webview presents.
The ninth talk “長く生きるコードベースの「品質」問題に向き合う ” (The Trouble with Keeping Code Quality High on a Long-Lived CodeBase) was a presentation in Japanese by Munetoshi about the history of LINE’s codebase as well as the steps the tool to improve quality and keep institutional knowledge. The biggest issue LINE faces is its codebase has grown quite large over the years (2.4 million lines of code) and has had over 80 developers contributing to the man branch through its life so far. In order to respond to the size of the project and the sheer number of developers, LINE had to adapt a special code review process both to keep code quality up and to share knowledge as much as possible across the organization. In order to achieve this, the code review process is split into two steps: a first code review is done exclusively with individuals familiar with the section of code being modified, a second review, however, is done by a developer elsewhere in the company that is not working on the section of code at question. The second member is chosen at random in order to make sure all new code can, at last, be understood by various other developers working on staff. Time was also taken to discuss the importance of coding formatting standards and documentation in order to make knowledge sharing as easy as possible.
The tenth talk “触って学ぶAccessibility” (Learn Accessibility by using it) by Iroha was a presentation about the Android accessibility framework. During this talk, attendees were asked to open the speech-to-text feature, the Talkback Feature, and the Accessibility Snapshot Tool to examine their own apps. The point of each of these exercises was to reveal to developers how much their apps do not currently handle basic accessibility features in the hope that they might take time to address the areas where their apps are lacking in this area. There is often a lack of time spent on implementing these features on many android apps and more awareness of these issues may help developers take interest in making relatively minor changes to their apps to improve access for users who need to use these Accessibility tools to better access the basic features of their smartphones.
The eleventh talk “DroidKaigiカンファレンスアプリの歴史からみるアプリアーキテクチャのこれまでとこれから” (Looking at Android Architecture using the history of the DroidKaigi Conference App’s History) was a presentation in Japanese by Kazuki Chigita that used the history of the DroidKaigi app as a lens to examine the pace of recent changes on the Android platform. The DroidKaigi app has changed a great deal since its first development in 2015 and has changed radically each year to stay up to date with the latest changes to the Android platform. By watching this talk it was possible to get a sense of how intense the changes over the last 5–6 years have been for Android and how much learning has been necessary in order to keep pace with these changes.
The twelfth talk “Flutterほぼ未経験のチームがネイティブアプリを半年でFlutterにリプレースした話” was a talk by Lychee in Japanese about a small team’s struggle to use Flutter to replace old apps that previously existed in Android and iOS code. The challenge faced by this team is that the existing Android and iOS apps were both old, out of date, and needed to be rewritten. Since the team was very small (three developers) they chose to work with Flutter to maximize the man-hours of each developer to work on a single app across both platforms instead of two new apps. The devs together had existing iOS and Android skills but combining the three devs on a single project provided an opportunity to have three devs working together rather than splitting up the developers across two separate code bases. Their report back on learning Flutter while writing their app was that the base language (Dart) was easy but challenges came from dealing with 3rd party libraries that are still quite chaotic at this point: changing frequently or losing support entirely as they are replaced by other libraries.
The thirteenth talk “厳しくなったSafetyNet Attestationによる端末チェック” (The increasingly strict SafetyNet Attestation Device Check) was a presentation by Akihiro Shiota about the evolving nature of Android’s SafetyNet Attestation check API. This API exists to verify that apps installed on Android devices are safe/trustworthy from the perspective of developers with paid or otherwise secured content. This needs to exist in reaction to users that might be able to root their devices and compromise the security of the installed app. The talk went over recent changes to the api along with changes on how devices can be uniquely identified that altered how this API can be used in the future. As this was mostly a technical talk about security details it focused more on the security protocols than specific Android code.
The final talk of the day was “Let’s Preview! Jetpack Compose” a presentation in Japanese by mochico about one of the latest features of Jetpack Compose: the Preview function. The talk both went over a simplified introduction to Android’s newest UI library, Compose, but also the Preview function which supplies Compose with one of the main missing features that Android layout XML had: the ability to be viewed before compiling code. This is useful for fast UI development as compiling code and running the emulator can take time and may slow down UI testing, especially when app logic code is not yet functional. The preview feature has been updated to not only view specific portions of code but also to take mock components like mock ViewModels so that views that Compose views the require view models can be faked properly to display a default screen and speed up design. This is especially helpful when previewing whole actives or fragments rather than individual view components.
Following the final talk, there was a short recap of each talk of the day’s sessions and a short wrap-up for the day. The day’s presentations covered a number of topics ranging from new API tools to Security protocols and development methods. Both English and Japanese were used to present the information here and most talks that had Q and A sessions had several viewers ready to ask probing and interesting questions for each speaker. DroidKaigi hosts quite a lot of talks and brings in a lot of viewers so it spurs quite a lot of conversation on many android subjects and is worth attending on any of the days of the conference, but if you have time, watching multiple days of this year’s conference could be an informative and good use of study hours.