Android Studio + kotlin + SQLiteで音符フラッシュカードアプリを作る　①概要

#はじめに
初投稿です。
androidアプリ開発について勉強を始めました。
自分への備忘録もかねて、できたこと、苦労したことなど、書き残していければと思います。
マークダウン記法も初なので、いろいろと見づらい点もあると思いますが、ご容赦ください。

#０．対象とする読者
・android Studioのセットアップは完了
　※自分は日本語化して使用しています。
　　日本語化していない方は適宜英語に読み替えてください。
・kotlin初心者
　自分が完全初心者からスタートしたので、つまづく部分など参考にしていただける部分があるかと思います。


#１．できたもの
androidアプリで音符フラッシュカードクイズアプリを作りました。
画面は以下のような感じです。
![sc3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619303/2cbf3649-ec9a-915d-709e-970f979b3fe5.jpeg)  ![sc2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619303/9769125f-30a4-0ff7-a151-62d84ce0e374.jpeg) ![sc1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619303/800ad6b1-39bb-2f53-9cc5-d35ffcb9b489.jpeg)
機能としては以下の通りです。
1枚目：トップ画面
　・レベル別のランキング表示
　・レベル選択
2枚目：ゲーム画面
　・10問連続表示
　・正解音・不正解音
　・プレイタイム表示
3枚目：結果画面
　・名前入力
　・DB（SQLite）保存
　・もう一度（同じレベルでプレイ）
　・トップへ（ランキング確認、レベル再選択）

#２．開発環境、使用言語、参考書籍
・android studio 4.1.3
・kotlin
・SQLite
Javaはほんの少しだけ触ったことがあったのでJavaにするかkotlinにするか迷いましたが、android開発の推奨言語がkotlinになるということで、将来性の見込めるkotlinで開発してみました。

**参考書籍**
[Androidアプリ開発の教科書](https://www.amazon.co.jp/%E5%BF%9C%E7%94%A8%E5%8A%9B%E3%82%92%E3%81%97%E3%81%A3%E3%81%8B%E3%82%8A%E8%82%B2%E6%88%90-Android%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-Kotlin%E5%AF%BE%E5%BF%9C-%E3%81%AA%E3%82%93%E3%81%A1%E3%82%83%E3%81%A3%E3%81%A6%E9%96%8B%E7%99%BA%E8%80%85%E3%81%AB%E3%81%AA%E3%82%89%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%81%AE%E5%AE%9F%E8%B7%B5%E3%83%8F%E3%83%B3%E3%82%BA%E3%82%AA%E3%83%B3-CodeZine/dp/4798169811/ref=pd_lpo_14_t_0/356-8452663-7324623?_encoding=UTF8&pd_rd_i=4798169811&pd_rd_r=44a65ef5-0f47-4d62-bff4-1b8440eb2d68&pd_rd_w=ndZHO&pd_rd_wg=Md2O1&pf_rd_p=dc0198fa-c371-4787-b1e2-96ed0e4d45e8&pf_rd_r=3Y425QZDW1G7EC85E8X4&psc=1&refRID=3Y425QZDW1G7EC85E8X4)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619303/cc73dc13-19a4-5323-25e1-eb2b3a71cae6.png)

[はじめてのAndroidプログラミング](https://www.amazon.co.jp/%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AEAndroid%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E7%AC%AC4%E7%89%88-%E9%87%91%E7%94%B0-%E6%B5%A9%E6%98%8E/dp/4815601143/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3HC1IC4ICJJPW&dchild=1&keywords=%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AEandroid%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&qid=1622591593&s=books&sprefix=%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AEandroid%2Cstripbooks%2C280&sr=1-1)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619303/d94bd5c7-a63a-18b1-ffa0-236aff2ea9c3.png)

どちらも初学者向けにはとても分かりやすい本でした。
2冊目の方を先に購入したのですが、xmlをGUIで記載していたり、DBアクセスもSQLを使わずRealmを使っていたりだったので、より本格的に学びたい場合は1冊目をお勧めします。


#４．テーマ
実装した機能、苦労した点などを何回かに分けて記載していきます。

[①概要（本記事）](https://qiita.com/tomohiro-yamashita-5664/items/e87f90fef9cf34faf9bf)
[②画面デザイン～トップ画面（Constraint Layout）～](https://qiita.com/tomohiro-yamashita-5664/items/72a529e12f292a8e1538)
[③画面デザイン～ゲーム画面（Linear Layout）～](https://qiita.com/tomohiro-yamashita-5664/items/9674fa7c1d0cc2de1c40)
[④画面デザイン～結果画面（Linear Layoutその2）～](https://qiita.com/tomohiro-yamashita-5664/items/08f99be14d2ac2254634)
[⑤トップ画面からの遷移（インテント(putExtra)）](https://qiita.com/tomohiro-yamashita-5664/items/ae86d6273cfc8c13b482)
[⑥トップ画面から引き継いだデータ表示（インテント(getExtra)）](https://qiita.com/tomohiro-yamashita-5664/items/bf50791fa5355818d7fb)
[⑦問題出題（ロジック実装）](https://qiita.com/tomohiro-yamashita-5664/items/a67eeb3fe9cc63eb1c65)
[⑧回答ボタン押下（効果音再生（MediaPlayer、正誤判定、次の問題出題）](https://qiita.com/tomohiro-yamashita-5664/items/8b032855a9377ba9897e)
[⑨タイムカウンターの実装（handler）](https://qiita.com/tomohiro-yamashita-5664/items/8f5633e68f0519d6841f)
[⑩ゲーム画面から引き継いだゲーム結果表示（インテント）](https://qiita.com/tomohiro-yamashita-5664/items/0e208a3c1a75c5b13376)
[⑪当日日付データ取得](https://qiita.com/tomohiro-yamashita-5664/items/59513080e5d5f419d6af)
[⑫DB保存（SQLite、Insert）](https://qiita.com/tomohiro-yamashita-5664/items/5a0d967f2e42aa90ee24)
⑬もう一度、トップ画面へ戻るボタン（インテント）
⑭ランキング表示（SQLite、Select）
⑮実機でのテスト
⑯Google Playで公開


長い道のりですが、随時更新していく予定です。
何か一つでも皆さんのご参考になればと思います。

余談ですが、本記事を書くにあたりgithubにソースコードを公開しようと試みました。（githubを使うのも初めてでした・・・）
結局原因不明でpushができず断念しました。そのあたりも番外編的に記事にしていきたいと思います。
質問投げようかなー。