はじめ
2024年4月からkotlinを触り始めて、MVVM?なにそれ?的な感じからnavigationやら、viewModelやらをやって今に至る感じです。
公式のトレーニングをつかって勉強しました。
因みに、個人の方が一つ一つのトレーニングをわかりやすく解説してくれているnoteがあるので、是非参考までに!
メモ帳アプリ
github
概要
主にやりたいことや、書いておきたいものをまとめておくためのアプリです。
他にもテンプレート作成機能やリストを更新順にソートできる機能や削除、更新機能があるメモ帳アプリです。
目的
kotlinを初めてまだ二カ月ということもあり、まだまだやれる事がない中、今自分ができることの中で作れるアプリを作りたいということでこのアプリが考案されました。
使用技術
- kotlin(android)
- jetpack compose
- Room
- Navigation Architecture Component
- viewModel
機能
基本的なroomでのinsert,delete,updateは勉強しましたのでこちらにも実装してみました。
こちらはroomのDAOで全セレクトQueryをもう一つ実装して、ORDERで時間順に取得しました。
時間については、毎秒ごとに時間を取得するのに苦戦しましたが、viewModelの方でdelayを1秒かけながら時間を取得することによって、何とか解決しました。
↓ 下記の記事で失敗したやり方と解決した方法を載せてます。
上記の通り保存ボタンを押した時刻順に上から並び替えました。
新規作成時にテンプレートを使うことによって、書きたいことがより明確になったり、メモ帳自体の見やすさが良くなることになり、利便性が上がると思ったので実装してみました。
しかし、ButtonなどのonClick()を実装しなければいけないものにはconbineClickable()でonLongClick()やonDoubleClick()なんかを実装できないなど、こちらでもテンプレート作成時になかなか苦戦しました。
個人的にボタンばかりでごちゃごちゃしているのは嫌いなので、
タップではテンプレートの選択、長押しは既存のテンプレートの編集にしてみました。
GeminiAPIをつかってテンプレート作成、編集画面とメモ帳の新規作成、編集画面にGeminiに質問できる形にしました。
主な活用法としては、テンプレートをGeminiに作ってもらったり、自分で作ったメモを加筆修正させたりする事ができます。
手こずった点としては、GeminiからのレスポンスをListに追加して、 StateFlowによる呼び出しに苦戦したので、後々まとめ記事なんかを作りたいと思います。
終わり
公式のトレーニングコースをデータベースまで終わらせて、アウトプット用に作り始めたのがきっかけだったのですが、気が付けばいろんな機能を盛り込みたくて時間がかかってしまいました。
アプリを作る前は一つの機能を追加するのに時間はあまりとらないだろう。と過信していましたが実際にやってみると機能によっては大幅に変えなくてはならないところもあり、改めて計画書の必要性を実感しました。
今後はこのアプリにchatGPTのAPIを活用してもっと利便性を強化したものを作ってみたいです。