Java経験者がAndroidアプリ開発に入門する

## はじめに
Java経験者がAndroidアプリ開発エンジニアになるために、アプリ開発からPlayStore公開までやってみたのでその流れをまとめした。
ほとんどリンク集です。

## 作成したアプリ
こちらが作成したアプリです。
計算結果を保存できるとても画期的なアプリです。
スワイプでメモを消すこともできます。
[メモ電卓](https://play.google.com/store/apps/details?id=com.yagiyagi21.android.calculator)

![IMG_20190120_225839.jpg](https://qiita-image-store.s3.amazonaws.com/0/113263/fc3763b9-0eba-0926-4263-d3e2c5ce37c1.jpeg)

## 参考書を用いて勉強
IDEや必要なファイル、基本的な思想が全く分からないのでまずは本でコーディングをしながら勉強です。
こちらのJava経験者向けの本は要点がとてもわかりやすかったです。
この本を使ってハンズオン形式でガシガシAndroidアプリ開発の基礎を身につけます。
[基礎&応用力をしっかり育成! Androidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオン](https://www.amazon.co.jp/応用力をしっかり育成-Androidアプリ開発の教科書-なんちゃって開発者にならないための実践ハンズオン-CodeZine-BOOKS/dp/4798152021)

## アプリ開発
基礎を身につけたらいよいよアプリ開発です。
アプリ公開までの基本的な流れを知ることが目的だし、何事もスモールスタートなのでまずは手軽なアプリを作ります。
この段階で本格的なアプリを作ろとしない方がいいです。
私は知人の「電卓の計算結果をメモしておきたいなー」という発言を聞いて、手軽そうだしそれを作ろうと思いました。

[github](https://github.com/yagi-eng/Calculator)
こんな感じです。参考書で学んだ以下の要素を盛り込みました。

- イベントとリスナ
- データベースアクセス
- MaterialDesign
- RecyclerView

実装に関してさらっと書いていきます。

### 電卓機能の実装
以下のサイトを参考にしました。

- [Android Studioで電卓アプリを作る](https://qiita.com/yanasep/items/503b378c439752f70880)

### メモ欄の実装
以下のサイトと参考書を参考にしました。

- [Android のリストをスワイプして削除する #あれどうやるの？](https://qiita.com/shts/items/042f57c3451b9375db1d)
- [Android で RecyclerView を使って横スワイプで要素を削除する方法のメモ](https://qiita.com/Hachimori/items/82eac873286ec2aa22fb)
- [RecyclerViewの基本](https://qiita.com/naoi/items/f8a19d6278147e98bbc2)

### DBの実装
以下のサイトと参考書を参考にしました。

- [SQLite を簡単に扱うための DB アダプターの実装](https://android.keicode.com/basics/sqlite-dataadapter.php)

## アイコン作成
PlayStore公開に向けてアイコンを作成します。
デザインセンスがないのでイラスト屋の電卓の画像を使いました。

- [[Android] アイコンを簡単作成できる Image Asset](https://akira-watson.com/android/adaptive-icons.html)

## PlayStore公開
以下のサイトを参考にしました。

- [AndroidアプリをGooglePlayでリリースする方法【今さら聞けない！】](https://techacademy.jp/magazine/2255)
- [Androidで署名付きapkを作成する](https://qiita.com/mfks17/items/c38d3713cb5b2c5536ff)

## 参考サイト
### プログラミング
- [Android のリストをスワイプして削除する #あれどうやるの？](https://qiita.com/shts/items/042f57c3451b9375db1d)
- [Android で RecyclerView を使って横スワイプで要素を削除する方法のメモ](https://qiita.com/Hachimori/items/82eac873286ec2aa22fb)
- [RecyclerViewの基本](https://qiita.com/naoi/items/f8a19d6278147e98bbc2)
- [RecyclerView.AdapterでnotifyItemRemovedするときはもうひと手間](https://qiita.com/6rats/items/bf6565499d5cdcefa037)
- [ItemTouchHelper.SimpleCallback](https://developer.android.com/reference/android/support/v7/widget/helper/ItemTouchHelper.SimpleCallback)
- [ContextのおさらいとApplicationContextをどこからでも参照できるようにする方法](https://qiita.com/roba4coding/items/0585b8240873ec5e9c20)
- [SQLite を簡単に扱うための DB アダプターの実装](https://android.keicode.com/basics/sqlite-dataadapter.php)

### デザイン
- [アイコンを入れるのが楽になるAndroid Drawable Importerの話](https://qiita.com/verno3632/items/8f432fc40f4cd2dd5325#%E5%B0%8E%E5%85%A5%E6%96%B9%E6%B3%95)
- [Androidアプリ：フォーカスをあてたEditTextのテキストを全選択する](http://kuuur.net/tech/android/allselect)
- [EditTextの文字数制限](android-note.open-memo.net/sub/edit_text__length_limit.html)
- [[Android]TextView 選択できるようにする](http://memo755.blog.fc2.com/blog-entry-145.html)
- [Android縦画面固定](https://qiita.com/yasumodev/items/44f7fd84a58b709a0349)
- [[Android] アイコンを簡単作成できる Image Asset ](https://akira-watson.com/android/adaptive-icons.html)