【1人で開発合宿】完全初心者が3日でAndroidアプリ開発をマスターしてみた

f:id:McG:20171005182948p:plain

今回,ある用事で急にJavaを使ったAndroidアプリ開発を学ぶ必要が出てきました.

ということで,3日間という制限をつけ,そこそこのAndroidアプリなら作れるレベルまで自分を持っていきたいと思います

ラッキーなことに自分は現在,TechAcademyというプログラミングスクールが提供しているウケ放題プランを受講中です.

Javaを一行も書いたことがない私が,教材とメンターを使い倒して『3日』で頑張ってAndroidアプリエンジニアを目指してみました.

最近Kotlinが流行りですが,残念ながら今回はJavaでの開発.

Android 1日目

Android Studioを触ってみる

完全にAndroidアプリ開発に関しては初心者です.

そのため,まずはJavaとAndroid Studioをインストールするところからのスタート.

f:id:McG:20171005182805p:plain

まずは新米エンジニアのお決まり,Hello Worldアプリを作ってみました.

画面に『Hello World』と表示させるだけのアプリですが,成功した時は結構嬉しいんですよね.

f:id:McG:20171005182816p:plain

簡単なHellowWorldアプリではありますが,『Android Studioの使い方』とか『プロジェクトの作成方法』など,基礎の基礎に慣れることができます

TechAcademyには,課題レビューというシステムがあり,『しっかり理解できているか』を確認してもらえます.

課題レビューにはGitを使うので,Android StudioからGitを使ったりGithubにpushする方法を学びました.

Javaの基礎を学ぶ

Androidアプリは,Javaというプログラミング言語を使用して行きます.

今までJavaには触れてこなかったので,Javaも完全に0からのスタート.

とりあえずここで学んだのは以下のような基礎構文です.

ここで学んだこと
  • 変数・配列
  • 条件分岐・繰り返し
  • クラス・インスタンス
  • 抽象クラス・インターフェース
  • ジェネリティクス・ArrayList

僕の主観ですが,JavaとC#ってかなり似ているような感覚で,以前Unityコースで学んだ知識のおかげですんなり理解できました.

何か1つプログラミング言語を習得してしまえば,次の言語を習得する時はかなり短い時間で可能というのは本当です

Android 2日目

1日目はAndroid Studioに慣れたり,Javaの基礎文法を理解したりと『Androidアプリ開発を行う前段階』の学習を重点的に行いました.

2日目は,UIパーツ,レイアウト手法,画面の遷移方法など,Androidアプリ開発の基礎について学ぶことに.

UIについて学ぶ

基礎的なJavaの文法に関してはおおよそ理解できたので,UIについて学んで行きます.

アプリ開発なので,アプリ中に設置するボタンやテキスト,画面のレイアウト手法などについて学ぶ必要があるというわけですね.

Androidアプリ開発では,XMLという記法でレイアウトを作って行くんですが,慣れるまでちょっと難しく感じました.

f:id:McG:20171005182859p:plain

ここでは,ボタンやテキストなど基本的なものに加えて,時間や日付を選択できるパーツやリストビューの使い方などを簡単なアプリを作りながら学習.

Android特有の機能

練習のための本格的なアプリを開発していく前に,Android特有の機能を見て行きました.

基礎的なアプリ開発に必要なAndroidのカメラやアルバムにアクセスする許可をもらう方法や,他のアプリと連携する方法,Androidのローカルストレージに保存する方法を確認.

それらの技術と昨日までに学んだ技術を使って,タイマーアプリとスライドショーアプリを作成してみることに.

f:id:McG:20171005182914p:plain

2日目までは,Androidアプリ開発の練習として,『一つの機能を意識した細かいアプリ』を作ってきました.

だいぶ慣れてきたので,次からは今まで学んだことを組み合わせたアプリを3つほど開発していくことに.

Android 3日目

2日目でAndroid開発の基礎を学んだため,ここからは実際に本格的なアプリを開発しながら慣れていきます.

1,2日目に学んだことをベースにして,データベース連携やログイン機能などがあるアプリを開発していくことに.

タスク管理アプリを作成

実用的アプリの1つ目として,以下のような要件のタスク管理アプリを開発.

アプリ開発要件
  • タイトルと内容、日にちを入力してタスクを作成することができる
  • 作成したタスクをデータベースに保存する
  • 作成したタスクを一覧で期日が近いものから表示することができる
  • 作成したタスクを編集することができる
  • 作成したタスクを削除することができる
  • 期日が来たら通知を表示する

画面遷移やListViewの復習をしながら,通知や指定した時間に処理をさせる方法,Realmというデータベースの使い方を学びました.

f:id:McG:20171005182935p:plain

データベースは,少し使えると開発できるアプリの幅が大きく広がります.

iPhoneアプリ開発時にRealmの使用経験があったので,Androidで実装するときも割とすんなりいけました.

Q&Aアプリを作成

そして,最後にユーザーが質問の投稿や回答ができるQ&Aアプリを開発しました.

アプリ開発要件
  • 認証機能をつけて,新規登録,ログイン,ログアウトをすることができる
  • ジャンルごとの質問一覧を表示できる
  • 画像付きで質問を投稿することができる
  • ユーザーが質問の回答を投稿することができる
  • 投稿はリアルタイムに更新される

ここではFirebaseというmBaas触ってみました.

ログイン周りやクラウドストレージが使えると,結構本格的なアプリを作れるようになるんじゃないかなって思います.

f:id:McG:20171005182948p:plain

3日でAndroidアプリを作るチャレンジの最後ということもあり,そこそこしっかりしたアプリができたんじゃないかと思います.

3日間のまとめ

今回,実際に手を動かしながらAndroidアプリ開発について学んできました.

まだまだな部分もありますが,基礎的なことはしっかりと身につけられたと思います.

f:id:McG:20171005183000p:plain

3日間という短い時間でも,結構いろんなことを身につけることができるんだなと少し驚いたほど.

3日間でここまでステップアップできた要因として,『ものを作りながら楽しんでプログラミングを学べた』のはかなり大きい

結局,楽しくないことってどう頑張っても1日中集中し続けることなんてできないんですよね.

小さい頃,ゲームにはまってしまって1日ずっと熱中していた経験がある方も多いと思います.

実際に手を動かしてプロダクトを作りながら,メキメキスキルがついていく感じはゲームそのもので,めちゃめちゃ楽しみながらできました

また,序盤にも少し言った通り,わからないところやエラーが起きてしまった時にはTechAcademyのAndroidアプリコースのメンターさんにアドバイスをもらいながら進めてたんです.

初心者の時は,簡単なエラーでもつまずいてしまうことも多いので,リアルタイムで解決してもらえるのはかなり助かりましたね.

f:id:McG:20171005183016p:plain

TechAcademyのメンターさんは技術も高くてオススメです.@yuki_99_sまでご連絡くれたら,紹介者割引も効くのでお気軽に!

すっごく楽しかったので,Pythonを使った機械学習なども同じ要領で学んでみたいです.

今回作ったもの

最後に,この3日間で作ったものを貼っておきます.

練習用のアプリですが,とりあえず記録として残しておきたいのと,今後勉強したい人・TechAcademyの受講を検討している人の参考になれば!

Kotlinも楽しそうなので触ってみたいし,iPhoneアプリもAndroidアプリもどっちも作れるエンジニア目指して頑張ります!

© 2016 Yuki Sako.