Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
アプリブロック機能のつくりかたと、AIとHTMLの不合理な相性の良さについて
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kumamotone
May 15, 2026
Technology
220
1
Share
アプリブロック機能のつくりかたと、AIとHTMLの不合理な相性の良さについて
potatotips #95 での発表資料です。
https://potatotips.connpass.com/event/389026/
kumamotone
May 15, 2026
More Decks by kumamotone
See All by kumamotone
AIエージェントを活用したアプリ開発手法の模索
kumamotone
1
1.1k
YOUTRUSTでやった技術発信まとめ
kumamotone
0
280
Integration Test で パフォーマンス計測する
kumamotone
0
700
VSCodeから一発でProxymanを起動する
kumamotone
0
790
スワイプで閉じれる画像ビューアを作る
kumamotone
1
1.1k
ColorFiltered で カメラフィルタを実装する
kumamotone
1
640
Swift Regex Builder
kumamotone
1
690
SwiftUI の @State, @ObservedObject, @EnvironmentObject
kumamotone
4
1.1k
5分でわかる Kotlin Contracts
kumamotone
2
1.4k
Other Decks in Technology
See All in Technology
会社説明資料|株式会社ギークプラス ソフトウェア事業部
geekplus_tech
0
210
The 7 pitfalls of AI
ufried
0
200
毎日の作業を Claude Code 経由にしたら、 ノウハウがコードになった
kossykinto
1
1.2k
雑談は、センサーだった
bitkey
PRO
2
220
Tachikawa.any 運営挨拶
daitasu
0
130
EMから幅を広げるために最近挑戦していること / Recent challenges I'm undertaking to expand my horizons beyond EM
hiro_torii
1
180
そのSLO 99.9%、本当に必要ですか? 〜優先度付きSLOによる責任共有の設計思想〜 / Is that 99.9% SLO really necessary? Design philosophy of shared responsibility through prioritized SLOs
vtryo
0
420
2026-05-14 要件定義からソース管理まで!IBM Bob基礎ハンズオン
yutanonaka
0
110
「強制アップデート」か「チームの自律」か?エンタープライズが辿り着いたプラットフォームのハイブリッド運用/cloudnative-kaigi-hybrid-platform-operations
mhrtech
0
150
AI対話分析の夢と、汚いデータの現実 Looker / Dataplex / Dataform で実現する品質ファーストな基盤設計
waiwai2111
0
270
[Scram Fest Niigata2026]Quality as Code〜AIにQAの思考を再現させる試み〜
masamiyajiri
1
290
AIの揺らぎに“コシ”を与える階層化品質設計
ickx
0
270
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9k
First, design no harm
axbom
PRO
2
1.2k
Documentation Writing (for coders)
carmenintech
77
5.3k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
170
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
740
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
400
It's Worth the Effort
3n
188
29k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
190
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
250
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Leo the Paperboy
mayatellez
7
1.7k
Transcript
アプリブロック機能のつくりか たと、AI とHTML の不合理な相 性の良さについて potatotips #95 iOS/Android 開発Tips 共有会
2026.05.15 LINE ヤフー株式会社@新オフィス 赤坂トラストタワー
自己紹介 経歴 2014.4 - 2016.3 筑波大学大学院 コンピュータサイエンス専攻 2016.4 - 2019.11
ヤフー株式会社 iOS/Android エンジニア 2019.12 - 2023.4 株式会社メルペイ iOS エンジニア 2023.5 - 2024.3 株式会社YOUTRUST Flutter エンジニア 2025.4 - フリーランス Flutter エンジニアとか X @kumamo_tone Claude Code 研究所 (@claudecode_lab) のメンバーとしても活動 ヤフーの熊本としてpotatotips の取り次ぎをしているようす
スマホ中毒とのたたかい マジでずっとX とYouTube を見ている 広告のゲームもやってしまう(ゾンビを打ち倒す やつとか、庭を育てるやつとか) デジタルウェルビーイングアプリやアプリを消す などの原始的な方法はダメ 戦いの記録↓ デジタルデトックスチャレンジ
2025/03 版 https://kumamotone.hatenadiary.jp/entry/2025/03/25/024256 デジタルデトックスチャレンジ 2025/03 版 経過報 告 https://kumamotone.hatenadiary.jp/entry/2025/04/01/024636 ← 超おもしろい ← 超おもしろい
解決策 1. 表示のミニマルなランチャーを使う 2. 家のWiFi でだけ特定のアプリをブロックするルールを追加 3. 使用時間の統計を取り、上位のアプリをリストに追加 それぞれのアプリに課金や広告などがあり、アプリブロックの広告で出てきた広告のゲームで長時間 遊んでいたことがあった
作ったもの Focus Launcher スマホ中毒防止のためのAndroid ネイティブアプリ 1. ミニマルなホーム画面アプリで刺激を適度に減らす 2. ユーザーが指定したルールで指定したアプリを開いたときに全画面でブロック 3.
ユーザーが接続した Wi-Fi のみ有効になる ような詳細なルール設定 focus-launcher.com
技術スタック UI Jetpack Compose + Material 3 アーキテクチャ MVVM +
Repository パターン Hilt (DI) Navigation Compose データ・永続化 Room (SQLite) Kotlinx Serialization 非同期処理 Coroutines + Flow バックグラウンド処理 WorkManager AccessibilityService ( アプリ検知・ブロック) Firebase Crashlytics ( クラッシュ報告) Analytics ( 匿名利用統計) Remote Config ( 強制アップデート制御) 課金・ストア Google Play Billing ( サブスクリプション) Google Play In-App Review ログ Timber ビルド・配信 Gradle (KTS) + KSP Firebase App Distribution ( テスト配布) Gradle Play Publisher ( ストア公開自動化)
1. ランチャー 1. 自分をホームアプリとして認識させる AndroidManifest.xml に MAIN / HOME /
DEFAULT を設定。 2. アプリを開く PackageManager.getLaunchIntentForPackage(packageName) で起動 Intent を取得し、 startActivity() 。 Android 11 以降で他アプリの起動 Intent を解決するなら、 <queries> で MAIN + LAUNCHER などを宣言する。 <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <queries> <intent> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent> </queries>
2. アプリブロック Service を登録 前面アプリの切り替わりを検知 TYPE_WINDOW_STATE_CHANGED を受け取り、 event.packageName で開いたアプリを判定。 <service
android:name=".BlockingAccessibilityService" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" android:exported="true"> <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService" /> </intent-filter> <meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibility_service_config" /> </service> override fun onAccessibilityEvent(event: AccessibilityEvent) { if (event.eventType != AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) return val packageName = event.packageName?.toString() ?: return if (packageName == applicationContext.packageName) return // ここでルール判定する }
3. 使用統計 Usage Access 権限を案内する PACKAGE_USAGE_STATS は通常の runtime permission ではない
→ 設定画面で許可してもらう。 UsageStatsManager で使用状況を取得する 日単位なら queryUsageStats() 、細かい前面遷移なら queryEvents() 。 <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" tools:ignore="ProtectedPermissions" /> startActivity(Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS)) val usageStatsManager = context.getSystemService(UsageStatsManager::class.java) val stats = usageStatsManager.queryUsageStats( UsageStatsManager.INTERVAL_DAILY, startMillis, endMillis, )
作ってみてどうだったか 全部バイブコーディングで できてしまった…
バイブコーディングのコツ コツは、HTML を先に作る 1. LP とプロトタイプを自然言語で作る 2. その 2 枚の
HTML を Claude Code に渡す 3. ストア操作は AI エージェント経由で fastlane を使う Focus Launcher のつくりかた① (note.com/kumamo_tone/n/nd53559ba4ed6 ) X でも似たような主張が最近バズっていた
ほかにもAI とHTML の活用方法 アプリのアイコンを作る CSS で形を作ると、AI くささが抜けやすく、解像度などの自由度も高い
ほかにもAI とHTML の活用方法 フィーチャーグラフィックの管理と多言語化 ストア用のスクリーンショットを作ってと伝えると画像生成し始めてしまうが、HTML 上でやるよう指定すると良い 同じ構造のまま、言語だけ差し替えて使える 同じ HTML を元に、日本語版と英語版のストア素材をまとめて管理できる
まとめ Android でマインドフルネスなランチャーを作るための技術を紹介した HTML は便利 ご清聴ありがとうございました アプリ: focus-launcher.com https://focus-launcher.com/ ブログ:
note — Focus Launcher のつくりかた① https://note.com/kumamo_tone/n/nd53559ba4ed6 X: @kumamo_tone https://twitter.com/kumamo_tone