1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

スマホを触りすぎるので、LINEだけ残すAndroidランチャーを作ってみた

1
Posted at

はじめに

最近、スマホを触りすぎるので、デジタルデトックス用のAndroidランチャーを作っています。

名前は DetoxLauncher です。

私はプログラミング初心者です。

コードの多くは、AIに相談しながら書いています。

正確には、

このコードをここに貼ってください

と言われたものを貼る係をしています。

貼る係も立派な開発です。たぶん。

この記事では、作ったアプリの概要と、AIに助けてもらいながら個人開発してみた感想を書きます。

技術的にかなりハマった話もありますが、長くなりそうなので今回は軽めです。

軽めと言いながら、すでに少し長いです。

そういうこともあります。

作ったもの

DetoxLauncherは、Androidのホームアプリとして使うランチャーです。

普通のスマホのホーム画面には、SNS、ブラウザ、YouTube、ゲームなど、誘惑がたくさんあります。

強いです。

こちらの意志はだいたい負けます。

そこでこのアプリでは、そういったアプリをできるだけ見えないようにして、必要最低限の機能だけを表示します。

目標は、

スマホを便利にしすぎない

ことです。

普通のアプリ開発は、便利にする方向へ進むことが多いと思います。

でも今回は逆です。

あえて不便にします。

不便を作るアプリです。

言い方を間違えると、だいぶ怒られそうです。

なぜ作ったのか

休日、気づくとスマホを触っています。

ちょっとSNSを見る。

ちょっとYouTubeを見る。

ちょっとニュースを見る。

そして気づくと30分経っています。

ちょっととは。

スマホは便利です。

でも便利すぎます。

気分転換のつもりで開いたはずなのに、気づいたら全然知らない人のショート動画を見ています。

私は何を見ているのでしょうか。

しかも、なぜ最後まで見ているのでしょうか。

そこで、SNSやショート動画を見ないスマホ環境が欲しくなりました。

ただし、LINEだけは残したい。

家族や友人との連絡はLINEが中心だからです。

ここが難しいところでした。

LINEは連絡手段としては必要です。

でもLINEにはVOOMがあります。

LINEを開いたつもりが、気づいたらショート動画を見ている。

デジタルデトックスのためにLINEを残したのに、LINEからデジタルに吸い込まれます。

入口が残っていました。

玄関を閉めたのに、勝手口が開いている感じです。

なので、

LINEアプリは開かず、LINE通知だけ確認して返信できる

という方向で作ることにしました。

主な機能

現在の機能はこんな感じです。

  • MSG:LINE通知の確認と返信
  • CAL:カレンダー
  • TIME:タイマー、ストップウォッチ
  • LOCK:一定時間ホームアプリ変更を制限
  • CALC:電卓
  • CALL:電話
  • CAM:カメラ
  • MAP:地図
  • SET:テーマ変更、設定ショートカット

SNSやブラウザは置いていません。

スマホを開いても、特に面白いものがありません。

良い意味で。

実際に使ってみると、これが意外と効きました。

ホーム画面を開いても、特にやることがない。

なので閉じます。

すごい。

ちゃんとつまらない。

画面

  • メッセージ
  • カレンダー
  • ストップウォッチ
  • ロック画面
  • 電卓
  • 設定

見た目はできるだけシンプルにしています。

ライトテーマはアイボリーとブラウン系にしました。

黒背景ではなく、少しやわらかい雰囲気にしています。

無印良品っぽい雰囲気を目指しています。

無印良品に怒られない程度に。

ダークテーマは夜に見てもまぶしすぎないようにしています。

スマホを触らないためのアプリなのに、画面の見やすさを考えています。

矛盾を感じます。

でも、見にくすぎると普通に困ります。

技術構成

ざっくりですが、技術構成はこんな感じです。

  • Python
  • Kivy
  • Buildozer
  • python-for-android
  • Java
  • Android NotificationListenerService

PythonとKivyで画面を作り、Android固有の通知機能だけJavaで書いています。

ビルドにはBuildozerを使っています。

初心者には、この時点でなかなか強敵でした。

まだLINE通知どころか、ビルドの時点でだいぶ帰りたいです。

ホームアプリを作りたいだけなのに、家に帰りたくなっています。

一番苦労したところ

一番苦労したのは、LINE通知の受信と返信です。

Androidには NotificationListenerService という、通知を受け取るための仕組みがあります。

これを使うことで、LINE通知をアプリ内に表示できます。

さらに、通知に返信用の情報が含まれていれば、LINEアプリを開かずに返信できます。

ここまでは分かります。

いや、分かった気になっています。

実際には、

  • Javaファイルはある
  • ビルドも通る
  • でも通知が来ない
  • 一度は動いた
  • なのに再現できない

という状態になりました。

初心者にとって、

一度動いたのに動かない

はかなり怖いです。

ずっと動かないより怖いかもしれません。

「動く世界線」を一度見てしまっているので。

最終的には、AndroidManifest.xmlにService登録が入っていないことが原因でした。

コードは存在していました。

でも、Android側からは通知Serviceとして認識されていませんでした。

いるのに、いない扱いです。

つらい。

例えるなら、

社員はいるのに社員名簿に載っていない

みたいな感じでした。

そりゃ呼ばれない。

しかも本人は出社しているつもりです。

このあたりは長くなるので、次回詳しく書きます。

AIと開発してみて

今回の開発は、ほぼAIに助けてもらいながら進めました。

Geminiに聞いたり、Codexに聞いたり、ChatGPTに聞いたりしています。

便利です。

かなり便利です。

ただ、初心者がAIの提案を理解しないまま積み上げると、あとで大変なことになります。

私の場合、

  • どのコードが必要なのか分からない
  • どのコメントアウトが古いのか分からない
  • 何をしたら動いたのか分からない
  • 何をしたら壊れたのかも分からない

という状態になりました。

AIは速いです。

でも、自分の理解が追いつかないまま進めると、気づいたときには迷子です。

しかも、けっこう遠くまで来ています。

特に初心者の場合、AIが出してくれるコードをそのまま貼ると、最初はかなり進んだ気になります。

実際、進みます。

ただし、あとから見返したときに、

このファイル、何をしているんだろう

となります。

自分で作ったはずなのに、初対面です。

「はじめまして。どちら様でしょうか。」

そんな気持ちになります。

なので、AIと開発するときは、少しずつ動作確認しながら進めるのが大事だと感じました。

一気に貼ると、一気に迷子になります。

使ってみた感想

実際に使ってみると、スマホを触る時間はかなり減りました。

理由は単純です。

スマホを開いても、面白いものがないからです。

SNSが見えない。

YouTubeも見えない。

ブラウザもない。

すると、スマホを開いてもやることがありません。

閉じます。

これが意外と効きます。

もちろん、完全にスマホを触らなくなるわけではありません。

でも、無意識にSNSを開く回数はかなり減りました。

スマホを便利にするのではなく、あえて入口を減らす。

これはかなり効果があると思いました。

やる気に頼らないのが良いです。

私は自分のやる気をあまり信用していません。

公開について

DetoxLauncherはGitHubで公開しています。

GitHub: https://github.com/gagu0725-cmd/detox-launcher/releases/tag/v0.1.0

現在はPixel 3でのみ動作確認しています。

他のAndroid端末では、動かない機能があるかもしれません。

また、通知アクセス許可など、Android側の設定も必要です。

そのため、誰でもすぐに安定して使える完成品というよりは、個人開発の初回公開版という感じです。

やさしく見守ってください。

できれば遠くから。

iPhone版はたぶん無理です。

Apple先生は自由より秩序を重視するタイプなので。

今回学んだこと

今回の開発で学んだことは、

コードがあることと、アプリで有効になっていることは別

ということでした。

AndroidManifest.xmlにService登録がなければ、Javaファイルが存在していても、通知Serviceとしては動きません。

初心者からすると、

ファイルがあるなら動くのでは?

と思ってしまいます。

でも、Android側に「このServiceを使います」と伝えないと、呼ばれません。

なるほど。

分からん。

ただ、今回の件で少しだけ分かりました。

コードを書くことだけが開発ではなく、Androidに正しく認識してもらうことも大事でした。

人間関係みたいです。

次回予告

次回は、LINE通知機能でハマった話を書こうと思います。

テーマは、

「一度動いた」が一番怖い。NotificationListenerServiceで迷子になった話

です。

具体的には、

  • Javaファイルはあるのに通知が来ない
  • ManifestにService登録がない
  • APK内部を確認する
  • python-for-androidのhookでManifestを書き換える
  • 通知アクセス許可を忘れて焦る

あたりを書きます。

長くなりそうです。

たぶんまた迷子になります。

次回の私は、まだ何も知りません。

おわりに

初心者でも、AIを使うとアプリっぽいものは作れます。

これは本当にすごいことだと思います。

ただし、動いた理由を理解していないと、動かなくなったときに詰みます。

今回の開発では、それをしっかり味わいました。

おいしくはなかったです。

でも、AIに相談しながら少しずつ進めることで、最終的にはLINE通知の確認と返信まで動かすことができました。

同じように、AIと一緒に何かを作っている初心者の方の参考になればうれしいです。

そして、スマホを触りすぎている方にも少しだけ刺さればうれしいです。

刺さったあと、そっとスマホを閉じてもらえれば成功です。

この記事を読んでいる時点でスマホを開いている可能性もありますが、それは一旦見なかったことにします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?