アプリアイコンを並べないホームアプリを作った

アプリアイコンを並べないホームアプリを作った

スマートフォンを使い続けて15年ぐらいたった。
iPhone4とかそのへんから使い始めていた気がする。

最近は年齢のせいなのかアプリが探しづらい。
あのアプリどこにるかな?ってたくさんスワイプしてやっと見つける。
もしくは検索して見つける。

そこで一つの疑問が生まれた。 「そもそもなんでアプリアイコンを表示する必要があるんだろうか?」

いままで当たり前のようにアプリアイコンを並べたり整理したりしていた。
しかしそれは時間の無駄なのかもしれない。 AIが出てきたのにアプリアイコンの整理するらできない世の中なんて...

Androidはホームランチャーを自作できる

Echo Show 5を買って遊んでいたときに気づいた。 ホームアプリが作れることに。

アプリアイコンがならぶUIが十数年変わってなくて苛立っていたので、コレはいいやと思い作ってみた。

コンセプト

シンプルなUIで曖昧なキーワードからアプリを検索させる。

ホームにアプリアイコンは並べない。
ホームに出すのは時計と通知と、最近使ったアプリぐらい。アプリを開きたいときは検索する。

見た目はPCで使っている Omarchy に寄せた。上に waybar 風の一行バー、検索は walker 風。
色は Omarchy のテーマの colors.toml を読むようにしているので、PCと同じテーマにできる。フォントはドット絵の DotGothic16。

コードは polidog/simple-launcher に置いた。Pixel 4a(Android 13)で動かしている。

文字で探す

まずは普通の絞り込み。walker と同じように、先頭一致 > 単語頭一致 > 部分一致 > 部分列一致 の順に並べている。
chr と打てば Chrome が出る。

全角半角とひらがなカタカナは区別しない。「まっぷ」と打ってもマップが出る。

あとは、アプリを開くのに使った検索語を10件まで覚えておいて、何も打っていないときに出すようにした。タップで再検索、長押しで消せる。

曖昧なキーワードは Jev に聞く

ここからが本題。
文字で見つからないときは、Jev(TypeSafe)に端末のアプリ一覧と検索語を渡して、どれを開きたいのかを選ばせている。

「どのアプリを開こうとしているか」と「そもそも該当するアプリがあるか」の2つを1リクエストでまとめて聞く。
該当しそうにないときや、確率が低いアプリは出さない。

試しに打ってみた結果がこれ。

打った語 出てきたアプリ
おんがく Apple Music 0.42 / YT Music 0.32 / Spotify 0.25
ちず マップ 0.69
しゃしん カメラ 0.46 / フォト 0.42
おかね おサイフケータイ 0.60 / ウォレット 0.25
しごと Slack 0.30 / Gmail 0.16
てんき Google 0.63 / 緊急情報 0.19

「しごと」で Slack が出てくる。

結果はけっこういい感じだと思う。
アプリが増えれば増えるほど、自分で探すより便利になりそう。

1回あたり200〜300msぐらいで返ってくる。
ただ、APIキーはAPKに入ってしまうので、いまは自分の端末で使う前提。人に配るなら間に中継サーバーが要る。

最初の検索だけ10秒かかる

作っていて一つ引っかかった。
アプリを入れ直した直後の1回目が10.4秒、2回目が5.3秒かかる。3回目からは200msぐらい。

5秒の倍数なので接続タイムアウトっぽい。
api.typesafe.ai は IPv4 と IPv6 のアドレスを2つずつ持っていて、端末から ping6 を打ってみたら 100% packet loss だった。

家の回線から IPv6 で届いていなかった。
IPv6 のアドレス2つでそれぞれ5秒待って、やっと IPv4 に回るので10秒。

headlint のときも犯人は IPv6 だった。

家の IPv6、そろそろなんとかしないと・・・

直し方はこんな感じ。

  • 接続タイムアウトを5秒から1.5秒にした
  • ホームに戻ったときに、裏で先に一度つないでおく(5分に1回まで)。届かない経路は検索する前に踏んでおく
  • 読み切った接続は閉じずに次の検索で使い回す

裏の接続は4秒ぐらいかかっているけど、そのあとの検索は400msちょっとで返ってくるようになった。

ドラクエ風にした

ホームの空いているところには大きな時計を出した。
最初はカレンダーの次の予定も出していたけど、いらないなと思ってやめた。

スライムの画像をホームに出すのも試したけど、なんか違ったのでボツ。

そのかわり、検索のUIをドラクエの呪文を選ぶ画面みたいにした。
黒いUIでシンプルな画面といえば、やっぱりドラクエかなと。

黒地に白枠のウィンドウで、選んでいる行に ▶ が点滅する。タイトルは「じゅもん」ではなく「アプリ検索」にした。

ホームの何もないところを長押しすると設定が出て、walker 風に戻すこともできる。

おわりに

コミットを見返したら、作り始めてから README に GIF を載せるところまで全部1日だった。
iPhoneと違ってAndroidはホームアプリを自分で作れるし、いまはAIを使えばこれくらいならすぐに作れる。
いい時代になったなと思う。

アイコンを並べないと、アイコンを整理する必要もなくなる。
どのページに置いたかを覚えておく必要もない。なんとなくの言葉を打てば、あとは Jev がそれっぽいアプリを選んでくれる。

十数年アイコンを並べ替えてきたけど、それをやめるのに必要だったのは検索窓ひとつだったのかもしれない。

APIキーの問題があるので、いまは自分の端末専用。
人に配れるようにするなら、間に中継サーバーを立てるところからかな。

カテゴリ