まず初めに、僕はまだKotlinを習得できていません

そのためJavaで記述しています Kotlinの時代来てるのツラ・・・

よくお世話になるMaterial DialogのライブラリはすでにJavaの説明が無い

 

Roomを使用するというアイデアの発端は「SharedPreferenceじゃ物足りないけどSQLite databaseは使いたくない」というもの

SQLite3って毎回Wrapperとか作るの冗長だしテスト多いしエラーが怖いというのがあって、以前からSharedPreferenceみたいに使えるDatabaseのライブラリを探しておりました

 

Room Persistence Library

https://developer.android.com/topic/libraries/architecture/room

 

半年前くらいにGoogleから公式に提供されているライブラリのようでContentProviderとかSQLiteHelperとかそこらへんを意識せず直感的にDatabaseを使用できるというもの

以前からそれ系のライブラリはあったみたいだけどやっぱり公式だよねというところで導入してみたがクッソ時間掛かったのでブログにしてみました

 

STEP1 Migrate to AndroidX

RoomはTargetSDKが28以上のAndroidX環境で動作するということでまずはこれが必要

自分はこれにめちゃくちゃ時間がかかり、どこでひっかかったのかわからないけどRebuildができない

RoomのimplementationもまとめてやったのがダメだったのかDuplicationのエラーが発生しまくって結局二回やった 何かを追加する前にClean→Rebuildする癖がつきましたね

 

どうでもいいですがMigrateと聞くとメキシコからアメリカに移住しようとする人々を連想します

あの人らどうなっちゃうんでしょね・・・ メシとか風呂とかどうしてんのかな

 

素人がAndroidXを解説するのもあれなのでQitaから拾ってきました

https://qiita.com/ikemura23/items/70aeb3f83d17b5d8f729

 

 

 

 

STEP2 Roomの導入

gradle(app)

 

これに関してはあまり日本語のHowToがなく公式を見ながらやったので間違えている箇所もあるかも

https://developer.android.com/training/data-storage/room/

 

 

 

Entities

まずはEntitiyを作る ようはTable定義相当なのかな?

よくあるサンプルみたいにUserID<int>とかじゃないから見づらいかもで申し訳ない

 

DataStore.java

 

Data Access Objects

次にDAO(Interface) これが直感的で使いやすいと感じた

Entityを参照してSQLを書いていきます

今思ったけどInnnerJoinとかするときどう書くのかな・・・ 機会があればまたブログにしよう

 

DataStoreDAO.java

 

Room Database

最後にDatabase Entityが増えたときは順次追加かな

公式にあるTutrialはここで終了 不親切な気がするけど最小構成ってとこなんですかね

あとは好きにしろみたいな

 

AppDatabase.java

 

STEP3 実践

まずはDBを作成する必要がありますね

通常の流れがわからないけどApplicationを定義してonCreateに書く感じでしょうか

(Manifestの編集も)

 

MyApp.java

Roomはメインスレッド上では使えないようになってるので、

普通に使ってみようと思うとエラーに遭遇すると思います

メインスレッドでOKという場合は.allowMainThreadQueries() オプションを書くといいみたい

 

メインスレッドじゃないということはAsyncTaskかなと思いWrapperのWrapperを作成することに

冗長なのが嫌だと言いながら冗長な気がするけどデータセーフなのでよしとします

 

RoomAsyncWrapper.java

 

Insert/Select/DeleteとDAOに対応するAsyncTaskを書きましたが

やることは同じでDAOを宣言して定義済みのMethodをdoInBackgroundで投げてます

 

 

適当なActivityを用意してテストデータを流してみたところいい感じに想定通り動いてくれました

ちょーっと準備が面倒すぎたけど一度導入してしまえば以降のプロジェクトでも使いたいと思えるはず

なんといっても通常の流れのSQLite3はもう使いたくない!

 

 

 

どもーこんにちはこんばんは キックです

 

「作業用BGMなんていらない」 or 「作業用BGMに困ってない」という方は今すぐブラウザのバックボタンを押すことをオススメします

 

一般的にPCだと作業用BGMといえばYoutubeだよねというのが主流だと思います

が、是非このアプリ(ソフト)をおすすめしたい「SPOTIFY

(念のためまわしものではありません)

SPOTIFYは1億ダウンロードらしいので知ってる方もいるかもしれませんが自分は最近知りました 無料で十分です

Youtubeと違ってバックグランド再生もOKなのでスマホにもオススメできます

 

広告も入るけど見てないので気にならない(たまにガッチリ広告が入るけど無料なので)

 

既存のプレイリストもいい感じ

 

Youtubeと似てる部分は自分好みのプレイリストを自動で作成してくれるとか、既存のプレイリストをランダムで流してくれるとかなのですが、気軽にお気に入りに設定をしていつでも聞き返せたりローカルファイルの曲を流せたり、動画ではないので通信料が安心などなど

 

正直これあればTSUTAYAやGEOなんかのレンタルなんてもういらないなと感じてます

 

音楽発見サービスというフレコミなのでもっと好みの曲増やしたいなーってのもいいと思う

https://www.spotify.com/jp/

 

 

こんにちは、こんばんはキックです!

ミクの失敗を活かしアズールレーンコラボはリジェクトなしでキャンペーン初日にリリースできて、GooglePlayにアプリもリリースできて一息ついています。

今回でLINEスタンプのTOPICはしばらくおやすみ。

 

スタンプの売れ行きとかは恐らく規約で具体的なグラフや数字は公示できないんだけど、

今回は両手で数えられないくらいは売れています!

(・・・って言うとすごい売れてるみたいけど要は X > 10なだけなんですがね)

 

ネットで見たんですがLINEスタンプをはじめて分配金(≠売上)が1000円を超えて報酬をもらえるようになる人は一握りらしい

 

今回はこんな感じ

https://line.me/S/shop/sticker/author/458745

 

統計情報のスタンプ使用履歴をみるとTOP絵の「ほほう」がそこそこ使われてるみたいで嬉しい!

LINEスタンプは作成者がどんなスタンプがどれだけ使われたのか見ることができます

 

ただモチベになかなか繋がりづらいのが、今回だと「アズールレーンコラボ」なんですが

この「コラボ」だとLINEにみかじめを持っていかれ、版権元にもみかじめをもっていかれ、

僕のスタンプだと1つ240円なんですが分配金としてクリエーターに入るのは50円程度!

 

ヤクザか

 

と言いたくもなりますがどうすることもできません

この感覚を忘れずに次なるコラボにも挑戦していきたいです

スタンプクリエーターの方が見ていましたらLINEに敗けず頑張りましょう!

 

アプリの方はまた次回