はじめに
友達がこの前、令和まであと何日かわかるアプリを出してたのでなんとなくパロってみた。
GooglePlayで検索した限り、ピンポイントでかぶってるアプリはなさそうだったので、、、w
最初にリンクを張っておくので興味のある人はインストールしてみてくれると嬉しいです。大したアプリじゃないので即アンインストールしてもOK(ぉぃ
作成にあたり
調査、画像収集、実装でだいたい2時間くらいで作成し終わった。
次の祝日まで計算する方法の調査
ピンポイントで見つけたサイトはなんだか難しかった。ググってたらライブラリを発見。なのでライブラリを使うことにした。
ただ、ライブラリの最新バージョンはJava1.8?を使っているようでStreamとか多用してたのでAndroidアプリは組み込めなかった・・・。いや、正確にはAPIレベル26(OS8)以上であれば使えたんだけど、そこまであげるのはね・・・と。
なので2年前くらい前のバージョンを使うことにした。最新バージョンじゃないので今年の天皇誕生日とかは計算できてない。手動で修正すれば良いけど、、、。今度するかな。
この調査に30分位。
画像収集
素直にいらすとやを使わせてもらった。アプリに広告貼る予定だったから商用で使えるかを確認。結果、20点までだったら無料で使えるらしかったので気にせずにしよう。祝日は20以上無いしね。
画像収集に30分位。
実装(レイアウト)
とても単純でいいやと思い、5分でやっつけ実装。
実装(コード)
多分30分位。雑コードを一部公開w
//
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val cal = Calendar.getInstance()
var res: String? = null
var cnt = 0
for (i in 1..365) {
cnt++
cal.add(Calendar.DATE, 1)
val target = Holiday.YMD_FORMAT.format(cal.time)
res = Holiday.queryHoliday(Holiday.YMD_FORMAT.parse(target))
if (!TextUtils.isEmpty(res)) {
break
}
}
dateTextView.text= "${cnt}日"
nameTextView.text= "${res}です。"
imageView.setImageResource(getHoliday(res!!))
}
private fun getHoliday(target: String): Int {
if (target.contains("振替")) {
return R.drawable.syukujitsu_furikae_kyujitsu
}
var id: Int = R.drawable.syukujitsu_furikae_kyujitsu
if (target.contains("元日")) {
id = R.drawable.syukujitsu01_ganjitsu
} else if (target.contains("成人の日")) {
id = R.drawable.syukujitsu02_seijin_nohi
} else if (target.contains("建国記念の日")) {
id = R.drawable.syukujitsu03_kenkoku_nohi
} else if (target.contains("春分の日")) {
id = R.drawable.syukujitsu04_syunbun_nohi
} else if (target.contains("昭和の日")) {
id = R.drawable.syouwanohi
} else if (target.contains("憲法記念日")) {
id = R.drawable.syukujitsu08_kenpou_nohi
} else if (target.contains("みどりの日")) {
id = R.drawable.syukujitsu09_midori_nohi
} else if (target.contains("こどもの日")) {
id = R.drawable.kodomonohi
} else if (target.contains("海の日")) {
id = R.drawable.syukujitsu11_umi_nohi
} else if (target.contains("山の日")) {
id = R.drawable.syukujitsu12_yama_nohi
} else if (target.contains("敬老の日")) {
id = R.drawable.keirounohi_title2
} else if (target.contains("秋分の日")) {
id = R.drawable.syukujitsu14_syuubun_nohi
} else if (target.contains("体育の日")) {
id = R.drawable.syukujitsu15_taiiku_nohi
} else if (target.contains("文化の日")) {
id = R.drawable.syukujitsu16_bunka_nohi
} else if (target.contains("勤労感謝の日")) {
id = R.drawable.kinroukansyanohi_title
}
return id
}
はい!雑www
for (i in 1..365) {
for文なんで365回回そうとしてるの?
うん、Kotlinの無限ループの仕方ぱっと思い浮かばなかったから。ググルの面倒だった(ぉぃ
private fun getHoliday(target: String): Int {
あれ?メソッド名とやってること違わない?
うん、最初はこのメソッド内でPairとか返そうかなって思ったんだけど、面倒になった。メソッド名くらいすぐに直せるのに変えろよなw
GooglePlayにアップ
30分位かかった。
アイコン作ったり、ヘッダーアイコン作ったり、、、。
前回のアプリリリースから2年位時間がたってたものでコンソールの見た目も変わっててどうやってアップするのかも最初わからなかったw
アップ後、5分して、、、。
GooglePlayで検索したらヒットするようになった。前まで1~2時間かかってた気がしたけど、進化したね!
ってことで無事にアプリリリースすることができました!
しかし、、、リリースして約24時間後にリジェクトされた
リジェクト理由
削除の理由: Android 広告 ID の使用ポリシー及び Google Play デベロッパー販売 / 配布契約 4.8 への違反
アプリが個人情報や個人情報や機密情報を扱う場合、有効なプライバシーポリシーを掲載して頂く必要があります。お客様のアプリは Android 広告 ID の収集及び転送を行うことが確認されましたので、プライバシーポリシーを掲載して頂く必要があります。
アプリが Android 広告 ID の収集を行う場合、有効なプライバシーポリシーを Play コンソールの所定の箇所及びアプリ内に掲載して頂く必要があります。プライバシーポリシーの中でユーザープライバシーについて明記し、URL が有効であることをご確認ください。
必要な対応: プライバシーポリシーをストアの掲載情報及びアプリ内に追加してください
Android 広告 ID の使用に関するポリシー、ユーザーデータに関するポリシー、Google Play デベロッパー販売 / 配布契約を確認し、アプリを修正します。個人情報や機密情報を要求する場合、上記 Google Play ポリシーに準拠した上で、有効なプライバシーポリシーへのリンクをストアの掲載情報及びアプリ内に掲載して頂く必要があります。
アプリが、デベロッパー プログラム ポリシーに含まれるすべてのポリシーに準拠していることを確認します。再度ポリシーに違反したアプリには追加措置が取られることがあります。
デベロッパー コンソールにログインし、ポリシーに準拠した修正済みの APK をアップロードします。必ず APK のバージョン番号を更新してからアップロードを行ってください。
ですって。広告にはNendを使ってたんだけど、こいつが広告IDを使っていた模様。
対応
ストアの掲載情報にプライバシーポリシーのリンクを設定。
アプリからそのリンクに飛べるようにして、アプリをアプデした。
その後・・・。
この記事を書いている時点でアプデしてから24時間経ってないけど、今のところは大丈夫そうな雰囲気。どうなるかはわからないけど。
さいごに
久しぶりに趣味でアプリ作ってアプリリリースしたけど、やっぱりこういう雑なアプリしか個人じゃ作れないなぁという痛感。ネタもないしね。
今後も、雑アプリの案が思いついたらアプリを作っていこうとは思う。