覚えるのなら作るのが板!『Android開発入門』社内勉強会レポート

こんにちは、広報部の笠川です。

1月のマジックトピックスでいうと『ラヴニカの献身』が発売されましたね!ショックランドが10種類揃った新環境の攻略に乗り出すスタンダードプレイヤーから、発売日の夜にオフィスで夜通しドラフト卓を立てていたリミテッドプレイヤーまで、Sekappyのマジック熱もにわかに高まっています!

さて、本日はそんな中で行われた2019年1回目の社内勉強会のレポートをお送りします。今回の発表者はAndroid開発を得意としていて、いつも明るいオーラをまとっている松本さん。Sekappy内で意外に少なくないパウパーのプレイヤーでもあり、恐ろしく早く餃子を作ることができるという特技も持っています。(写真上)

今回は松本さんの得意分野にちなんで『Android開発入門』がテーマです。Android開発では便利なライブラリが多数公開されていますが、今回はGoogle社が推奨するデザインパターンを扱いやすくしてくれるAndroid Architecture Componentsを利用してハンズオンを行っていきます。

まずはAndroid Architecture Componentsやアプリ開発でよく使われるデザインパターンについての解説から。Googleが提供するAndroidアプリ開発のためのツール/ライブラリ群であるJetpackのうち、アーキテクチャ部分を提供しているのがAndroid Architecture Componentsとのことです。

その中から今回触れていく部分を簡単に解説。ライフサイクルイベントの監視や状態を管理できるようにしてくれるLifecycles、AndroidでよりSQLを扱いやすくしてくれるRoom、画面遷移を簡単に実装できるNavigationなど、いずれもより早くより効率的な開発を提供してくれます。

Android開発で利用されるアーキテクチャのひとつとしてMVVMモデルがあり、今回はそちらを採用していきます。Android Architecture ComponentsにもMVVMモデルを扱えるようにしてくれるDataBindingやViewModelというライブラリがあり、これによって画面処理とビジネスロジックの役割を切り離した保守しやすいアプリを作ることができるとのことです。

解説パートが終わると、ここからは早速サンプルアプリの実装に移っていきます。まずは実装していくアプリについて確認。今回はカード名とテキストメモ、マナコストを登録できるメモアプリを作っていきます。UIも最近触れることの多いカード型を採用して使いやすさにも気が配られています。

引き続きAndroid Studioで開発のための下ごしらえをしていきます。プロジェクトを作成して今回使うライブラリを追加。先ほど解説していただいたLifecycleやRoomも含まれていますね。ちなみにこちらの工程、全員で一斉に始めたためにオフィスの回線が悲鳴を上げて少し時間が掛かってしまったという一幕も。笑 「Android Studioはビルドの際にライブラリなどをもろもろ引っ張ってきてくれるので、便利な反面、遅いと感じることもあるかも」と松本さんから補足をいただきました。

ここからはいよいよコードを書いていきます!まずはDBのテーブルと紐づくEntity部分のCardクラスの実装から。Android開発では意外といろいろな書き方ができてしまうとのことで、そんな中で質のいいアプリに仕上げるための “お作法” についても松本さんからお聞きしました。Javaで重要な情報を補足していく各アノテーションについても触れていきます。

続いてはデータ操作を行うDao(Data Access Object)部分と、Database部分の実装。Dao部分はインターフェイスとして、Database部分はabstractクラスとして作っていきます。ここからは記述の量も増えてきて参加メンバーにも熱が入ってきました。

Android Studioで頻繁に利用するショートカットを松本さんに教わりながら、効率も次第にアップしていきます。Android Studioからのエラーの指摘も参考にしつつ、アプリの裏側部分が出来上がっていきます。

そして裏側部分の仕上げとして、Repository部分とViewModel部分を実装していきます。Repository部分については無くてもアプリは動作するとのことですが、役割ごとの依存度がより少ないアプリを目指すために実装していきます。ViewModel部分はUIの描画に必要な情報を保持しつつ、Viewから送られたアクションをModelに伝達する役割を持つとのことです。

こちらでアプリの裏側部分が完成しました!そしてここからいよいよUI部分の実装に……といったところで勉強会終了のお時間にとなってしまいました。最後に質問タイムとまとめの時間を取りつつ、本日はここまで!残りの部分は、ぜひまた別の機会に作っていきたいですね。

最後に松本さんからは「Android開発はまだまだ変化のスピードが早いです。トライするときはぜひ何か作りながら都度技術を取り入れていってください」とのコメントもいただきました。松本さん、参加者の皆さん、改めてお疲れ様でした!

それでは次回のテーマにわくわくしつつ、またレポートで!