ディップ Advent Calendar 2022 4日目の記事です。
はじめに
筆者は現在Androidエンジニアです。
なった経緯は前職でiOSエンジニアとして採用されたが、入社4日目に
「Androidエンジニアとして働いてくれないか」
と言われ、言語含め全く未経験の状態から転向したというものになります。
当時はキャッチアップの時間やフォローの体制がない中プロダクトのソースコードと作業指示を与えられ、どう進めて行けば良いのかわからず困り果てていた記憶があります。
「今の自分なら喰らいついて生き残るには、何をどうキャッチアップするだろうか」を記事にします。
ターゲット
-
実務独学問わず別分野の開発経験はあるが、Androidは全くの未経験の人。
会社により環境が異なりますが、ここでは
「キャッチアップの時間をほとんど与えられておらず、自分でなんとかしないといけない」
状況を想定。 -
(サブターゲット)モバイルエンジニア未経験者として実務で何をインプットすれば良いかいまいちわからない方。
考え方は似ているのでうまく置き換えてください。
具体的に何をするか
優先度が高いと考えている順番で書きます。
基本的に「習得していない」「できるだけ会社の環境に依存しない」ものをピックアップし、細かい説明は他記事に譲ります。
また(一旦)ざっくりインプットできれば良しで目安を書いています。
Androidアプリに必要な要素の確認
情報はできるだけ公式の
から拾うように心がけてください。
スタート地点。
のアプリの基本「はじめに」の項目がうまくまとまっていると思います。
公式は情報量が多い!読みづらい!と感じるのであれば
初学者向けの参考書をこなし、その後に公式をぱらっとみるでも良いです。
本は定番書であればなんでも良いと思います。
目安:
どのファイルががどう対応しているかざっくり把握できていること。
言語の学習
コード読めないのでは始まらないので。
執筆時点で、新規開発されるものはほぼKotlin。
また、既存プロダクトもKotlin or JavaからKotlinへ置き換え中のものがほとんどの印象です。
そのため、特別な事情がない限りインプットはKotlinで良いかと思われます。
プログラムの動作確認をさっとやりたいなら
のTry Kotlin(Playground)が便利です。
目安:
何でも良いので、言語について書かれてる本1冊か記事を複数読んでざっくり理解できていること。
競技プログラミング的要素は通常のAndroid開発ではほぼ使われていないはずですので、そこまでする必要はない。
ライフサイクルについて
それぞれライフサイクルが異なるので、違いを把握しておく必要があります。
これがわからないと、画面に描画されると思ったものがされなかったりクラッシュします。
Activity
Fragment
ViewModel
Composable
それぞれサンプルアプリを作ってライフサイクルメソッドにブレークを貼り、
どういう時に通るかを実際に動かして確認してみるのがわかりやすい。
目安:
それぞれどういう順番で呼ばれ、どういう性質を持っているかざっくり
頭に入っていること。
知っていること前提で話が進むことが多いので、わかっていないと
話されていることの意味がわからない状態になる。
ここまでざっくり理解できれば(レビューで指摘してもらえること前提ですが)
困り果てて何もできないという状況は回避できるのではないでしょうか?
レビューの文化がない、そもそもモバイルエンジニアが他にいないという環境では
「高品質なものを作ることは困難」です。
作業依頼者に理解してもらう必要があります。
---------------------------------------- 重要度高の壁 -----------------------------------------
ライブラリについて
目安:
どのライブラリがどういう役割で使われているか把握できていること。
クラッシュログの追い方
自分で組んだコードでクラッシュが発生したり、クラッシュ調査をすることがあるためスタックトレースの読み方を理解しておく必要があります。
他ユーザーが起こしたクラッシュ対応であればCrashlytics等に挙がっているスタックトレースを読んで対応する必要があります。
目安:
スタックトレースの読み方を理解し、クラッシュしている原因について仮説が立てられること。
Android Studioのショートカット
特に検索周りのショートカットは覚えておいた方が良いです。
目安:
便利だと思ったショートカットが使えるようになっていること。
さいごに
当時はフォロー体制がない中、入社4日目にクラッシュの修正を依頼され
クラッシュログの見方、調べ方がわからないため普段使わないAndroid端末両手に
アテもなく不具合の再現を試みていました(一部端末の設定次第で不具合が起きるもので、たまたまその端末が検証端末としてあったので運良く再現できたのですが・・・)
そもそもこのような環境は好ましくありませんが
各社やり方が異なりますので、似たようなシチュエーションに遭遇することは誰にでもあると思います。
この記事を見た人が似たような状況で折れてしまう可能性が1%でも減ってくれますように。