JavaでWeb開発してた僕がAndroidアプリ開発案件に入る時に何を予習したのか

  • 69
    いいね
  • 0
    コメント

4月からAndroidアプリの開発案件に飛び込むことにしたので、それにあたって事前に勉強したこと、今まさに勉強していることをまとめておきます。

前提

私の状況

  • Java歴3年 / Clojure歴1年弱
  • Webアプリ開発の経験3年
  • iOS / Android共に経験なし

案件の状況

  • Kotlin x RxJava x Clean Architecture x ドメイン駆動開発
  • すでにAndroidをバリバリ書いている人が9割
  • 絶賛開発中

開発に参加するために獲得したいスキルセット

そもそもAndroidアプリ開発の雰囲気を把握したい

Webからアプリへの以降は少なからずパラダイムシフトを内包しているので、まずは雰囲気を知りたいですよね。
私は以下を通して、

  • どんな部品が集まってアプリが構成されているのか
  • どんな文化や常識があるのか

をメゲずに学ぶことができました。

Google謹製の動画講座: 基礎編

難易度 :star:
かけた時間 10時間

Udacityという動画学習サイトで、Googleが作った講座が無料公開されています。
コースはいくつもあるのですが、私は以下をサラッとやりました。JSONとは?みたいなパートもあるので、全部クリアする必要はありません。ガツガツ飛ばしてください。

画面の作り方講座は取らなかったのですが、HTMLが分かればとりあえずはウンコード :poop: でも書き始めることはできました。

この講座の良いところは、

  • めっちゃ親切設計のスモールステップ
  • 学習の要点以外は全部完成してるプロジェクトにたくさん触れられる

ことです。
GoogleのAndroidチームの人が表情豊かに話してくれます。言語は英語ですが、図がたくさん出てくるので雰囲気でわかります。

図つきで説明してくれる

要点の箇条書きもたくさん入ってて

箇条書きでさえ丁寧

これがそのまま課題の画面になったりします。なめらかなUIですね!

そのまま課題が始まっちゃう

コードの編集をしたあとはすぐに回答のパートがあります。もちろんGitHubにも回答は載っていますので、手元で動かして確認もすぐできます。

このように小さなステップを繰り返すことで、とにかくAndroidアプリの雛形にたくさん触れられて、なんとなく雰囲気を察することができました!

Google謹製の動画講座: 実践編

難易度 :star::star::star:
かけた時間 10時間

同じくUdacityのGoogle製レクチャーです。

こちらは上記講座をわかったうえで一通りの機能を使ったアプリを書いてみることができます。私は基礎の基礎と、仕事で即使いそうなAPI通信とDB周りをやりました。
GitHubの使い方とかも載ってるので、Web開発経験のある方は不要だと思います。ガツガツ飛ばしてください。

この講座も、ちょっと難易度は上がりますが相変わらずの親切設計です!

Kotlin書けるようになりたい

KotlinはベターJavaだからそんなに学習コストは高くない

とは事前に聞いていましたし、実際JavaでStream APIを使ったことがあれば困りません。
ただし当然というか、思想がJavaとは違う部分があるので、パッと理解ができなくて苦しい瞬間もあるにはあります。そこまで甘くはなかった。

Kotlin Koans

難易度 :star:
かけた時間 10時間

プログラミング言語の特徴がわかるかんたんな問題集のことをKoansといいますが、その Kotlin版です。JetBrains社が作っていて、テストを通るようにしていくことでKotlinの特徴的な機能が大まかにわかります。

プロダクトに入っている各種ライブラリを使えるようになりたい

今回のプロダクトでは、API通信にRetrofit、ORマッパーにorma、DIコンテナにDagger、そして非同期処理にRxAndroidを使っています。

それだけを使った小さなアプリを1から書いてみる

難易度 :star::star:
かけた時間 6時間


Udacityの講座を通してアプリの作成手順がなんとなくつかめてきたので、次はプロダクトで使っているライブラリを1つずつ試します。

とはいえまだ自分で1からアプリを書いたことがないので、まずは復習がてらTodoアプリを書いてみました。

TodoApp

ToDoアプリが言語とかライブラリのチュートリアルの定番な理由がわかりました。ToDoアプリくらいさくっと何も見ずに作れるようになっておかないとその後の複雑な仕事なんて絶対できないって意味だったんですね。

その後、Retrofitを使ってQiita APIを叩いて新規投稿をリスト表示するアプリを書きました。

QiitaReader

別スレッド処理はRxAndroidで実現しているので、ここで一緒に練習できました。あとでKotlin化も試してみることができて、Kotlin x Androidにも少し触れられました。

RxAndroidは、RxJavaの思想が最初しっくり来なくて困ってたら同僚が良い記事を教えてくれて、それでだいぶ捗りました。

ormaではかんたんなデータの記録アプリを作ってみました。

MoodKoro

こちらもデータの登録時はRxAndroid](https://github.com/gfx/Android-Orma)で別スレッドでの処理を行っています。

Daggerは、上の記録アプリに組み込むつもりです。今頑張ってます。

全部組み合わせる

難易度 :star::star::star:
かけた時間 ---

上の記録アプリをそれにするために、日夜開発に励んでいます。

設計思想を学びたい

プロダクトが礎に選んでいるClean ArchitectureとDDDについては、正直に言って自分でできたことはあまりなくて、入ってからチーム内のwikiを読んだり、チームメンバーに教えてもらって理解を深めています。

DDDに関する簡単な本を読む

難易度 :star:
かけた時間 (読書中だが今までのペースを見るに、終わるまで)4時間

本当はエリック・エヴァンズ本を読むべきだと思いますが、まずDDDの先輩であるチームメンバーと話せる知識をつけるべく、わかる!ドメイン駆動設計 ~もちこちゃんの大冒険~を読んでいます。
むしろチームで朝会後に読んでいます。

参考になれば幸いです

上記のことは勿論自分を助けてくれてはいますが、当然全然足りなくて日々勉強しっぱなしです。
とはいえ何もわからない状態を脱するには悪くなかったと現時点では思っているので、同じような状況の方の参考になれば嬉しいです!