Slide 1

Slide 1 text

個人開発という実験場 Android エンジニアが手にする4つの自由 id:SlashNephy 2026/9/2 @ DroidKaigi 2026 1

Slide 2

Slide 2 text

SlashNephy ● 株式会社はてな ● Web アプリケーション エ ンジニア ● いろいろやってます ○ Web フロントエンド・ バックエンド・インフラ ● Android: 業務で1年程度 GitHub @SlashNephy 2

Slide 3

Slide 3 text

Android アプリ開発との出会い ● Kotlin の経験 (趣味) はあった ● Android ユーザー歴 10年くらい ● 社内の「はてなリスキリングプログラム」 ○ ▶Androiderを育成する「高速道路」と実戦を経て辿り着いた現在地 3

Slide 4

Slide 4 text

学ぶことが多い! 😇 ● アーキテクチャ ○ Lifecycle, ViewModel, Hilt, … ● フレームワーク ○ Material 3 Expressive ○ Jetpack Compose / Navigation 3 / Glance, … ● ビルドシステム ○ Gradle, AGP, KSP, ProGuard, … 4

Slide 5

Slide 5 text

さらに AI エージェントの発展 ● Claude Code ● OpenAI Codex ● Antigravity CLI エコシステムのほか、開発手法も絶えず変化 5

Slide 6

Slide 6 text

個人開発で業務を補う ● 「はてなリスキリングプログラム」の実践 ● 学んだ成果として、自分でも何か作ってみよう 6

Slide 7

Slide 7 text

業務と個人開発は、役割が違う 業務 — 顧客との信頼 個人開発 — 壊して学べる ● 安定性が最優先 ● AI 利用にはセキュリティ・ 権利の制約 ● 影響が及ぶのは自分だけ ● 最新技術も AI も思いきり 試せる → 品質を守る合理性がある 7

Slide 8

Slide 8 text

業務と個人開発は、役割が違う 業務 個人開発 ● チームでの合意形成と ● プロセスは自分で設計 レビューを丁寧に ● 組織の意思決定に沿う → チーム開発の品質を支える 強みがある できる ● 自分のためのアイディア も実現できる 8

Slide 9

Slide 9 text

個人開発は 自由な実験場である 9

Slide 10

Slide 10 text

4つの自由 🗽 ● 自由1: Alpha 版で運用する自由 ● 自由2: アイディアを実装に運ぶ自由 ● 自由3: プロセスを最小化する自由 ● 自由4: 自分のためのアプリを作る自由 10

Slide 11

Slide 11 text

自由1: Alpha 版で運用する自由 ● アプリの依存ライブラリを Alpha 版で揃える ● 安定前の最新の機能を使える ● Renovate で最新に保つ 11

Slide 12

Slide 12 text

自由2: アイディアを実装に運ぶ自由 ● AI エージェントを制約なく持ち込める ● 思いついたら実装に入り、ダメなら捨てられる 12

Slide 13

Slide 13 text

自由3: プロセスを最小化する自由 ● 品質ラインを定め、リリースサイクルを高速化 ● 流行っている AI レビューボットも実験できる 13

Slide 14

Slide 14 text

自由4: 自分のためのアプリを作る自由 ● 自分が欲しいから作る。好きなものを作る。 ● ユーザーとして改善し続けられる 14

Slide 15

Slide 15 text

個人開発を実験場として 使い倒す 15

Slide 16

Slide 16 text

実験場1: Mitsubachi ● 旅行の訪問先・写真を記録する ○ Material 3 Expressive, Jetpack Glance, … 初めてのアプリ。AI 支援を 最小限にして “土地勘” を作った https://github.com/SlashNephy/mitsubachi 16

Slide 17

Slide 17 text

実験場2: ときどき六法 ● 法令の条文を読む・学習する ○ e-Gov 法令 API, Firebase AI Logic 特殊なドメインで AI との 相性を試す題材 https://github.com/SlashNephy/tokidoki-roppou 17

Slide 18

Slide 18 text

実験場3: OneMoreCoffee ● 某カフェの店舗の訪問記録アプリ ○ Maps SDK for Android, Maps Compose, … 位置情報を使った 地図アプリを作ってみたかった https://github.com/SlashNephy/OneMoreCoffee 18

Slide 19

Slide 19 text

いろいろな題材で実験 旅行記録アプリ / 法令学習アプリ / 地図アプリ ● 3つとも自分が使うために作った ● 実験場として、4つの自由を行使してきた 19

Slide 20

Slide 20 text

● 自由1: Alpha 版で運用する自由 ● 自由2: アイディアを実装に運ぶ自由 ● 自由3: プロセスを最小化する自由 ● 自由4: 自分のためのアプリを作る自由 20

Slide 21

Slide 21 text

androidx.compose.material3 Mitsubachi ● 2025/10/22 に 1.5.0-alpha07 を入れた ● 2週間おきに追従 Alpha 版 → 最新の機能が使えるということ 21

Slide 22

Slide 22 text

compose-bom-alpha ● 通常は compose-bom (安定版) を使うはず ● 全面的に Alpha を使いたいので とにかく最新の機能を使いたいから! 22

Slide 23

Slide 23 text

Renovate ● ライブラリ更新自動化 ● CI 通ったら自動マージ ● メジャー系は保留 // renovate.json5 { automerge: true, packageRules: [ { matchUpdateTypes: ['major'], automerge: false, }, ], } 23

Slide 24

Slide 24 text

そこまでして作り たかったもの Segmented List Items (M3 Expressive) android-review.googlesource.com/c/ platform/frameworks/support/+/ 3806783 設定画面のような、角丸で グループ化されたリスト 24

Slide 25

Slide 25 text

alpha リリースより早く ● androidx の alpha が出るのは約2週間おき ● その間に入った実装も触りたい 25

Slide 26

Slide 26 text

SNAPSHOT を導入する // settings.gradle.kts maven(uri("https://androidx.dev/snapshots/builds/[build Id]/artifacts/repository")) { content { includeGroupByRegex("androidx.*") } } 26

Slide 27

Slide 27 text

M3 Expressive 試行錯誤 ● サンプルが揃っていない (2025年10月時点) ● 使い方と見た目までがよくわからない (初心者 だからなおさら) ● そもそも、どれが Expressive なのかの区別が つかない 27

Slide 28

Slide 28 text

採用した M3 Expressive ● ListItem (先述) ● DropdownMenuGroup ● LoadingIndicator ● TopAppBar の subtitle ● Typography の Emphasized ● …等、3アプリで速やかに採用 28

Slide 29

Slide 29 text

先に触った経験が下地になる ● どのコンポーネントが最新 Expressive なのか ● 見栄えと使い方を、実機で確認した ● API がどう変化したのかを理解できた 29

Slide 30

Slide 30 text

気楽に API 安定化を待つ 実験的な API にアノテーションが付く @ExperimentalMaterial3ExpressiveApi opt-in して使えば、安定化した時に移行できる 30

Slide 31

Slide 31 text

「Alpha 版で運用する自由」の責任 最先端の実装に触れられる分 ● 自己責任で不安定な API を使用する ● 少ない実装サンプルの中から自己解決する 31

Slide 32

Slide 32 text

● 自由1: Alpha 版で運用する自由 ● 自由2: アイディアを実装に運ぶ自由 ● 自由3: プロセスを最小化する自由 ● 自由4: 自分のためのアプリを作る自由 32

Slide 33

Slide 33 text

ボトルネックは移動した ● AI で実装は、速くなった ○ 着手の数時間後にマップも法令ビューワーも動いていた ● 人間側の着想と判断は、速くなっていない ○ 何を作るか、どこで完成とするか 33

Slide 34

Slide 34 text

AI によるイノベーション 産業革命と同じことが起きている ● 織機が速くなると、次に不足するのは糸だった ● 実装が速くなると、アイディアが不足してきた 34

Slide 35

Slide 35 text

思い立ったが吉日 でも裏を返せば ● AI エージェントのおかげで実装コストは激減 ● 思い付いたらすぐ試せる状態 だからアイディアを大切に育てたい 35

Slide 36

Slide 36 text

私の取り組み方 ● アイディアを思い付いたら書き留めておく ○ Notion とか GitHub Issue ○ 1行だっていい 36

Slide 37

Slide 37 text

私の取り組み方 ● 方向性が明白だったら AI とブレスト ○ たとえば Superpowers Brainstorming スキル ● 曖昧な状態でも、とりあえず方向性を固める ○ たとえば grill-me スキル 37

Slide 38

Slide 38 text

38

Slide 39

Slide 39 text

土地勘のないスタート ● 最初のアプリ (Mitsubachi) はほぼ人力で ● 学習の成果をアウトプットするために ● “土地勘” が身についた 39

Slide 40

Slide 40 text

最初のアプリが参考実装になった 後続のアプリ開発では真似をさせた → 加速 // AGENTS.md Mitsubachi の実装パターン (モジュールレイアウト・ アーキテクチャ ) を参考にする。 ローカルに clone されているため、参照してよい。 40

Slide 41

Slide 41 text

「アイディアを実装に運ぶ自由」の責 任 ● 自分が判断できるのは知っていることだけ ○ 最初のアプリを手で書いて知識が定着させた ● “土地勘” を鍛え、判断の質を上げる 41

Slide 42

Slide 42 text

● 自由1: Alpha 版で運用する自由 ● 自由2: アイディアを実装に運ぶ自由 ● 自由3: プロセスを最小化する自由 ● 自由4: 自分のためのアプリを作る自由 42

Slide 43

Slide 43 text

だれも待たなくていい レビューがない、Approve 待ちもない リリース日を合わせる必要もない そのかわり、品質の基準を決めるのは自分 43

Slide 44

Slide 44 text

使えるものは全部使う 個人開発なので、なるべく無料で ● linter ルール マシマシ ● リポジトリの安全な Ruleset 整備 ● AI に徹底的にレビューしてもらう 44

Slide 45

Slide 45 text

linter の整備 ● Android Lint, ktlint, detekt を遵守させる ● 全ルールを有効化 ○ 個別にルールを調整する 45

Slide 46

Slide 46 text

GitHub の Ruleset ● main 直接プッシュ禁止 ● マージできる条件 ○ ワークフローの成功 ○ ≠ Change Requested 46

Slide 47

Slide 47 text

個人開発でもコードレビューしてもら う ● PR 作成前 ○ 別のエージェントに敵対的レビューさせる ● PR 作成後 ○ AI レビュー bot 47

Slide 48

Slide 48 text

いろいろな AI レビュー bot 公開リポジトリなら無料枠がある ● CodeRabbit ● Gemini Code Assist (7月に sunset 🌅) ● Sourcery ● Qodo, … 48

Slide 49

Slide 49 text

レビュー bot の様子 49

Slide 50

Slide 50 text

レビューへの対応 ● 最初のアプリは自分で指摘に対応していた ○ 自身の学習のためでもある ● 以降はエージェントに判断させた ○ 「レビューを確認し、技術的に妥当なら修正して。」 50

Slide 51

Slide 51 text

「プロセスを最小化する自由」の責任 業務と比べて、プロセスを簡素化するには ● 品質は別で維持する仕組みが必要 ● 品質のベースラインを定義しておく 51

Slide 52

Slide 52 text

● 自由1: Alpha 版で運用する自由 ● 自由2: アイディアを実装に運ぶ自由 ● 自由3: プロセスを最小化する自由 ● 自由4: 自分のためのアプリを作る自由 52

Slide 53

Slide 53 text

いちばんのユーザーになる ● 欲しいから作る・必要だから作る ● リリースした後も、いちばん使うのは自分 ユーザー・開発者として、改善し続けられる 53

Slide 54

Slide 54 text

Mitsubachi ● 開発を実践する最初のアプリ ○ 技術スタック全般を振り返りたい ○ DB, ネットワーク, ウィジェット, … 趣味にフォーカスして モチベを維持 54

Slide 55

Slide 55 text

ときどき六法 ● アファメーションのアプリにインスパイア ○ 肯定的な言葉を通知でくれる ● 法令科目の学習で条文知識が必要 ○ 定期的に通知で条文を送ったら覚えられる? ○ → 「ときどき」六法 55

Slide 56

Slide 56 text

OneMoreCoffee ● 某コーヒーチェーンが好き ○ 店舗のスタンプラリーのようなものがある ● ときどき六法は Claude で ● OneMoreCoffee は Codex で ○ エージェントの癖を理解したつもり 56

Slide 57

Slide 57 text

次の実験テーマ? ● 自分以外のユーザーもターゲットにしたい ● マネタイズも検討 ○ ビジネスの視点を持つ ○ 多くのユーザーにリーチする 57

Slide 58

Slide 58 text

「自分のためのアプリを作る自由」の責 任 ● 自分専用に偏ってしまう ○ 一人で開発していると凝り固まってしまう ● インプットを絶やさず、他者の視点を借りる 58

Slide 59

Slide 59 text

業務への逆輸入 59

Slide 60

Slide 60 text

はてなブログ Android アプリ ● 2025年11月 にリニューアル ● 最新の技術でフルスクラッチ ✨ ● Pure Kotlin, Jetpack Compose, … https://staff.hatenablog.com/entry/androidappv3 60

Slide 61

Slide 61 text

はてなブログ Android アプリ (v3.0.0) 61

Slide 62

Slide 62 text

ウィジェットが追加 ● アクセス解析 ● お知らせ ● 購読中のブログ 62

Slide 63

Slide 63 text

Glance の経験 ➡ 業務 ● 私がウィジェット実装を担当した ● 個人開発の経験が活きた ● 先に触った経験が下地になっていた https://developer.hatenastaff.com/entry/2026/08/26/110000 63

Slide 64

Slide 64 text

動作確認の自動化 ➡ 業務 ● エージェントに mobile-mcp を使わせて検証 ○ 自律的にエミュレータを操作させ、スクショ・録画 ● PR に動作確認の「証跡」として添付 ○ 人間のレビュアーの負荷軽減・成果物の品質保証 64

Slide 65

Slide 65 text

PR の「証跡」 ● 視覚的にレビュアーが理 解しやすい ● 連続的な操作の検証では 録画させる指示 65

Slide 66

Slide 66 text

まとめ 66

Slide 67

Slide 67 text

個人開発の自由 ● 自由1: Alpha 版で運用する自由 ○ 実験的な API を自己責任で使い自己解決する ● 自由2: アイディアを実装に運ぶ自由 ○ 知っていることだけ判断できる。土地勘を鍛える 67

Slide 68

Slide 68 text

個人開発の自由 ● 自由3: プロセスを最小化する自由 ○ 品質のベースラインを自分で定義する ● 自由4: 自分のためのアプリを作る自由 ○ ユーザーが自分しかいない偏りと付き合う 68

Slide 69

Slide 69 text

まとめ ● 好きなやり方で、好きなものを作っていい。 個人開発は楽しい! ● 自分だけの実験場、はじめてみませんか? ● おまけに、蓄えたノウハウは業務にも 逆輸入できます 69

Slide 70

Slide 70 text

hatena.co.jp/recruit ご清聴ありがとうございました 70 70