iPhoneからAndroid(Leica Leitzphone powered by Xiaomi)に乗り換えました

15年ぐらいずっとiPhone使ってたんですが、Leica Leitzphone powered by Xiaomiに移行しました。レンズリングが回転するというギミックを知って(最高にクールじゃないですか!?)から即buyというほとんど衝動買いです。

先に結論からいくと

  • Leitzphoneはめっちゃ良い。レンズリング回転機構は最高に良いので一代限りにならず継続して欲しい
  • Windows母艦の環境においてAndroidはiPhoneよりずっと良い、めっちゃ快適になった
  • Android自体も悪くない、Xiaomi HyperOS + Snapdragon 8 Elite Gen 5は十分強力

というわけで、全体的には大満足で、なんだったらもっと早く脱Appleすれば良かった……(?)

私は基本的にPCはWindowsから離れられない(主にVisual Studioのため)ので、元々iOSでのエコシステム連携は全然強くはなかったのですが、それでもiPad, Apple TV, Apple Watch, AirPods, HomePod, AirTagと、せっかくなのでとApple製品で固めてしまっていて、それはそれなりにそこそこ便利ではあった。

が、メインのイヤホンをHUAWEI FreeClip(FreeClip 2)に変え(ちなみにFreeClipはめっっっっっちゃくちゃ良い)、HomePodをSonosに変え、Apple TVは別に大して使ってないし、となると、よく考えると現状Apple製品エコシステムには別にもうあんま縛られてるわけではないな、と。AirTagは使えなくなっても、Xiaomi Tag出たし。これはケース不要のデザインなのが使い勝手良き。

機種変の際の手間がないのは大いに利点ではあったけれど、毎年新しいiPhoneに買い替えててきた(Pro Max -> Pro Max -> Air)ものの、ある意味、そのせいでマンネリ感があった。20万とかするものを買ってるのに、特にここ最近のiPhoneの新しいフィーチャーはコケ気味なので、なんか別になんも変わらんよね、を無限に繰り返してた。Airは薄い軽いで大きな変化で、良いっちゃあ良いけど、機能じゃあないので大きな感動とはまた違う感じだったんですよね、なんだったら機能面ではPro Maxに比べて低下していたわけだし。

そしてAI Codingブームじゃないですが、ちょっとした個人的な不便を解消するアプリを自分のスマホに入れたいなあという思いがずっとあったんで、Vibe Codingで雑に作ってデプロイしたかったんですよね。それがWin x iPhoneだと絶対的にできない。じゃあ、もう、ついにAndroidですね、と。

Switch to Android

iOS -> iOSとまではいかなくとも、今どきもう全自動で一瞬でサクッと移行できるっすよーという話を信じた(?)んですが、そんなこたぁなかった。ほとんど全部手動になりました、ふぁぃ。

  • eSIM転送は無理なので再発行(auと一部機種なら行けるらしい)
  • 画像は節約でiCloudに退避させるオプションにしていたせいか歯抜けで入ってしまった。どうしようかなーってところで、Webからエクスポートできないかなと思ったんですが1000件毎では全然足りない。最終的にicloud_photos_downloaderというスクレイピングダウンローダーを実行してローカルに全部落としてから、USB接続でPC to AndroidでDCIMに放り込みました。工程が目に見えてて確実&十分高速だったので、これはアリ
  • アプリ類は当然なら再ログイン&ものによっては独自のデータ移行、みたいな感じなので(あとログインの仕方忘れてるとかApple認証で入っちゃってるので連携し直しとか)まぁ、延々と頑張るしかない、と

手動とはいえ、別になんだかんだでやれる範囲なのと、iOSにしかないようなアプリとか機能をそんなに多用していたわけでもないので、意外とスムーズといえばスムーズとも言える、でしょうか。最近のアプリはほとんどサブスクだし、古の買い切りアプリ/ゲームはどうせ起動できないので、十分切り捨てられました。しいていえばFlorenceだけは入れておきたかったのだけど、最新のAndroid OSに対応していない(?)っぽく移行できず、残念……。Super HexagonもAndroid版だけストアから消滅してるし。我慢できるけど悲しいといえば悲しい。この2つは人生のトップ10ゲームに絶対に入れるんですが。

Xiaomi HyperOSがiOSに似てる(これはかなり似せてる系ですよね?)ので、ホームのレイアウトやウィジェットなども、それなりに元通りにできました。

No Suica

Leica Leitzphone powered by Xiaomiは、グローバルで同一モデルということで、NFCは搭載していますが、日本独自のFeliCaは非搭載。マイナンバーカードの登録やクレジットカードのタッチ決済はできますが、Suicaは入れられない。なるほど!Xiaomi端末は結構非搭載が多め、と。

まぁそれは、いいことだと思います!余計なコストかけずグローバルモデルであるべきだし、そもそも私はSuica全然好きじゃないので!なくていいです!なんだったら、ないほうが思想的に良いです!

と、思想的にはなくていいんですが、実用的には困るといえば困る……。日常的な決済でSuicaが必要なシーンはゼロなのですが(電子決済としてSuicaしか対応してない、なんてことはないので)、やっぱバス・電車がどうしても……。Suicaカードでも別にいいかなあとあ思ったんですが、チャージの仕様が微妙すぎて今更チャージはしたくないんですよねえ。オートチャージの仕様も終わってるので基本、使えないと思っていいし。

そこで、最近ずっとApple Watch Ultra使ってるので(去年体調崩してから、頻繁に心拍計測して安心感を得ている……)、とりあえずApple WatchにSuicaを入れて凌ぐことにしました。今のところやってやれなくもなし。Apple Watch自体は心拍測るのにしか使ってないので(?)母艦と連動してなくても問題なし。

難点はチャージにiPhoneが必要だということ。もう完全にAndroidに移行したからiPhone触ることはないのに、チャージのためだけに電源を入れる……!それは面倒だなあ、というところですが、そんなゴリゴリと残高が減るような使い方はしてないので、多めに残高入れておけば大丈夫ではあるでしょふ。

だったらカードでもアリなのでは?という気もしたけど、うーん、そこは悩ましいところです。あとはAndroid系のスマートウォッチに変えるか、そのへんはとりあえず追々考えていきます。

Gboard to SwiftKey

入力システムは慣れの問題もあるので、あまりどうこう言いたくはないのですが、Gboardの日本語QWERTYの機能/レイアウトだけは、流石に駄目です。私は入力は 英語QWERTY + 日本語QWERTY でやっているのですが日本語キーボードのレイアウトが

スペースがキー2つ分しか取られてない!さすがに狭すぎる。そしてレイアウト変更や不要キー削除などで広げることはできない。←→の矢印キーとか削除したいんですが。そしてフリーカーソルがない。日本語キーボードではこのクソみたいな←→矢印でカーソル移動するしかない。英語キーボードだとスペースのドラッグでカーソル移動できるのに何で……?さすがにキー2つじゃ移動させられないから機能搭載していないということ?

というわけでキーボードはMicrosoft SwiftKeyを使うことにしました。

細かいことは置いといて、とりあえずレイアウトに関しては100点です。英語/日本語切り替えでアルファベットのレイアウトの移動がないのが素晴らしい。かわりに「ー」がShiftの位置になっているのが打ち間違いをたまによくやってしまいますが、ここは慣れでなんとかなるでしょう。フリーカーソルも日本語/英語の両方でちゃんと付いてるし。

ところでクリップボードに関しては明確にiOSのキーボードよりも、こちらのほうが良いですね、履歴や固定が便利すぎて、なんでiOSにはないんですかー?WindowsにもWin+V(よく使ってる)で(やっと)標準で入ってるというのに……!

また、Windows 11でのスマートフォン連携は明らかに超強力でした。Windowsのクリップボードがリアルタイムに即Androidのクリップボードに入る。ようはAndroidで打たなきゃいけない文章をPCでさっと書いてAndroidに送り込める、と。今までiPhoneでチマチマ文章打ってたのが馬鹿らしくなってきましたほんと。。。

サッとカメラロールをチェックできるのも良いですね。スクリーンショットとかPC上で確認/取得したかったりするケースが多いので。いやあ、母艦Windows使っててiPhone使い続けていたのはなんとも愚かだった。

Leitzphone

Leica Leitzphone powered by Xiaomiは3月5日に発売されたばかりの端末で、Xiaomi 17 Ultraにレンズリング回転機構を追加してデザイン変えて一部UIのアイコンを変えたもの、です。価格差がまぁまぁあるのですが、レンズリング回転機構は値段以上の価値があるのでLeitzphoneのほうがいいですよ絶対……!リングは回すと本体のハプティックが連動してコトコトするのがまた気持ちい。

スペック的には最新のSnapdragon 8 Elite Gen 5を積んでいて文句無し、なのですが誰もスペックの話はしないし、なんだったら公式サイトもカメラの話しかしないぐらいに、カメラ推し、です。私が撮ったものはここに載せたりはしませんが、適当に撮ってもめっちゃ映える絵が出力されて、すんごく気持ちいい。

ところでXiaomi 17 Ultra/LeitzphoneにはPhotography Kit Proというカメラグリップめいたものを接続することができて、完全に見た目がカメラになります。

で、これの使用感がまためっちゃいいんですね、ポートレートモードで、レンズリングでズームしてグリップのダイヤルで絞り値を変えて、反押しシャッターとか、完全にカメラで気持ちいい。これはいいものだ。

と、非常に気に入ったのですがケースをつけないと使いにくい(サイズがケース着用に合わされてる)ので、裸で使うか、カメラグリップを使うためにケースをつけて使うか(なおケースは一度付けるとめちゃくちゃ外しにくい)の二択を迫られて、最初はケース付きを選択したのですが最終的に裸で使うことにしました。いかんせんケースつけてると美しくない&厚い&重い&端のスワイプの操作感が悪くなるで、徐々にツラミが増してきたので。

カメラグリップなくても割と普通にちゃんとカメラっぽくいけそうですし。Leitzphoneのサイドのローレット加工(ギザギザ)は滑り止めとしても機能としていて、見た目だけじゃなく(カメラとして構えているときの)持ちやすさにも寄与してます。Leitzphoneの場合はレンズリングがあるので、ダイヤルやズームレバーが死に設定になりがちなのも、なくてもいいかな、と思った理由でしょうか。

各種レビューとか見るとLeitzphoneのレンズリング別にいらなかったとかいう評価もあるんですが、ほんとに……?スマホでこんなに自然にズーム回せるのはレンズリングだからこその体験だし(そのためにかLeitzphoneの75-100mmは光学ズームまで搭載されている!)。しいて言えば縦で普通に持つとリングが回しにくい(レンズに手がかかっちゃう)のですが、ここはグリップ付けた時の感覚で、レンズを下にするとスススッと回せるんですよね。というわけですっかり縦撮りのときは逆さにするようになりました。

というわけで裸でもいいといえばいいんですが、でも気分も変わるのでグリップも併用していきたいので、裸使用でも接続性の良いPhotography Kit、出してくれませんかね……?

Xiaomi Buds 5 Pro Wifi

メインのイヤホンはHUAWEI FreeClip 2で、オープンイヤー型は、音楽を聞くだけではない、何だったら音楽を聞いている時間のほうが短い、ぐらいの現代のイヤホンの使い方に非常にマッチしたデザインだと思っています。YouTube見たり配信見たりZoomしたりだと、ノイズキャンセリングよりもこちらのほうが耳に自然で圧倒的にいいんですよね。

最近のノイズキャンセリングイヤホンの外音取り込みモードは、それ自体はどれも優秀で自然なのですが、耳をふさいでいるということの軽い圧迫感に加えて、話したり、歩いたり、食事したりといった際に発生する人間の内側から出すノイズに脆弱で違和感が強く出てしまうのが難点でした。特にイヤホンしたままの食事は、私は無理だなあ、という感じです。

オープンイヤー型は付け心地の軽さに加えて、それらが全く発生しないので、外音取り込みモードがどれだけ進化しても超えられないんじゃあないかな、と。実際これはSONYの最新ハイエンドのノイズキャンセリングイヤホンWF-1000XM6でも意識されているみたいで「イヤフォン本体から耳への通気量が増えたことで、自らの足音や咀嚼音などの体内ノイズが大幅に減少しました」といった対策を取ったりしているみたいですが、つまり構造的に絶対にオープンイヤー型レベルの体内ノイズ減少にはならないでしょう。

そんなオープンイヤー型の中でもFree Clipの出来は断然よく、そしてこないだ発売されたばかりのFree Clip 2は更に進化していてすごい、すごい!絶対買うべき!

なのですが、それはそれとしてノイズキャンセリングしたいし音楽もちゃんと聞きたいというシチュエーションはいっぱい存在するので、ノイズキャンセリングイヤホンも欲しい。と、そこでXiaomi Buds 5 Proです。厳密にはXiaomi Buds 5 Pro Wifiです。

高音質と言われるコーデックLDACでも990kbpsのところを、Wi-Fi接続によりBluetoothの限界を突破して最大4.2Mbpsの伝送速度(4倍!) 96kHz/24ビットの真のロスレスオーディオに対応している、と。これはQualcommのXPANという最新の技術で実現していて、伝送側も対応している必要があるので、今のところ現実的に使える組み合わせはXiaomiのハイエンド端末とXiaomi Buds 5 Pro Wifiだけ、です。

QualcommからはBluetoothに代わり、Wi-Fiがイヤフォンのワイヤレス伝送の中核に。Qualcomm「XPAN」とは何かということで夢いっぱいな規格という雰囲気ですが、しかしとりあえず今のところ使えるのはXiaomiだけ、と。

せっかくそんなハイエンド端末を買ったので(LeitzphoneはXiaomi 17 Ultraと同スペック)、これは是非試したい。最新究極プロトコルとか、圧倒的なロマンに溢れていますから……!

感想としては、パーフェクト。Wi-Fi伝送すごい、XPANすごい、これは流行るべき……。

正直Bluetooth伝送だとイマイチ(特に比較対象として、いま手元にある Bose QuietComfort Ultra Earbuds (第2世代) が相手だと)なのですが、Wi-Fi伝送だと変わります。いうてそこまで変わらないでしょと思いきや、かなり良くなる。BluetoothとWi-Fiでチューニング変えてるんじゃないの?というぐらいに変わってる感じがある。Boseと比較してどうこうというのはおいておきますが、とりあえずWi-Fi伝送はすごい、と。

音質設定のコンフィグが色々とっ散らかっているんですが、外耳道スキャンしてサウンド補正とか、聴覚テストして補正とか、色々入っているのも面白い。ただ、どっちも、ONにすると個人的にはむしろ悪化したのでオフにしちゃいましたが……。サウンドモードに関してはデフォルトはHarman AudioEFXだったのですが、これはHarman Masterのほうが好ましかったです。

とりあえず、今のところ特別な組み合わせによる音質ということに、嬉しさが上乗せされてて満足度めっちゃ高い。

C# MAUI Android

Androidで嬉しいのは野良アプリを入れ放題ということ、実際、まだ一週間ですが幾つか野良アプリを入れる機会が。で、つまりは野良アプリだけじゃなくて自作の雑アプリも入れ放題というわけですね!

というわけでAndroidアプリを作ったことはないのですが(やるのはUnityアプリのデプロイぐらい)、Claudeの助けを借りて雑にやっていきましょう。C#で。

AIがやるならネイティブで(Kotlinで)やれよ、という話もあるんですが、自分のスキルセットにない言語や環境でVibe Codingでアプリケーションを作ると、コードをほとんど見なくなっちゃうんですよね、なんか読んでもあんまわからないし、みたいな。動きゃあなんでもいいだろ、と。そして動くなくなったら普通に詰んで投げ捨ててる。さすがにC#なら分からないなりに分かるのと、環境セットアップもほぼ不要でVisual Studioで完結できるので、楽でいいです。

作りたいものは決まっていて、ストップウォッチです。いや、なんかXiaomiのコントロールセンターにストップウォッチ(というか時計/アラーム)がないので、サクッと起動できないんで普通に困ってるんですよ、ないわけないと思うんですけど、なんで?

あとラップタイムを叩いた時にトータルタイムだけじゃなくて、そのラップタイムの時間もリアルタイム表記して欲しいんですよね。これApple Watchのストップウォッチができなくてイライラしています(なのでワークアウトの表記をカスタマイズしてセグメントを常時表記して代用してます)。Xiaomiの標準ストップウォッチもできてないです。

適当なストップウォッチを探す旅に出るほどのものでもないので、こういうものこそ雑に自作する時代でしょう、小さな不満は自作で解決する時代!

というわけで初めてのMAUI Androidです。Visual StudioでAndroidのテンプレートで作ってCtrl + F5すると、いきなりdotnet workload restoreしろと言われる。体験悪い……。幸いrestoreしただけでビルドは通って、デプロイしようとするとエミュレーター入れてね、とエミュレーターインストールウィンドウまで出てきて親切……!

ただエミュレーターで開発してくのは興味なくて、今はVibeで実機にボンボン突っ込みたいだけなので、Leitzphoneのほうを開発者モードを有効にしてUSBデバッグを有効にして、Error ADB0010: Mono.AndroidTools.InstallFailedException: Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]で怒られる。これはUSB経由でインストールも有効にしてなかったせいらしいので、そっちも有効にする(なお、これはXiaomiアカウントを作ってログインしとかないと有効化できないらしい。個人端末なので普通にログインしてるので問題ないんですが、法人での開発用端末だと面倒ですね)。

これでVisual Studio上でもデプロイ先にXiaomiがいるじゃないですかー。25128PNA1GがLeitzphoneのモデル名らしい。あとはこれでデプロイ、と。

そんなわけで初めてのインストールを済ませたら、後はMainActivity.csactivity_main.xmlをClaudeに雑に編集してもらう、ということで何度かダメ出しして10往復ぐらいした後のAndroidApp1がこちら。

全然いいんじゃないでしょうか……!ストップウォッチに見た目も機能もなくて結構なので、全然これでヨシです。業務の複雑なコードの仕事ですらこなせる昨今、こんなドシンプルな要求に対するコードを生成できることに驚きは特になく。とはいえ、もはやそんな当たり前のことを当たり前にやってもらえることにしみじみ喜びがあります。いかんせん、Android知識ゼロなので、多分手書きしてたらこれ作るのそれなりにドキュメント読んでチュートリアルこなす必要があったので、それを完全にスキップして数分で完成なら上出来すぎます。

コードは正直クソみたいなコードだな、とは思いましたが(長ったらしいのでここには貼りません)、AndroidのXmlも分からんし Android.App.Activity もわからんのに、ここまでやってくれるなら言うことは特にないです。

さて、アプリが及第点なので、不満点の解消としてコントロールセンターから起動できるようにしたい、と。ClaudeによるとTileServiceを実装すれば追加可能になるよ、と。

using Android.App;
using Android.Content;
using Android.Service.QuickSettings;

namespace AndroidApp1;

[Service(
    Name = "AndroidApp1.StopwatchTileService",
    Label = "ストップウォッチ",
    Icon = "@drawable/ic_stopwatch",
    Exported = true,
    Permission = "android.permission.BIND_QUICK_SETTINGS_TILE")]
[IntentFilter(new[] { "android.service.quicksettings.action.QS_TILE" })]
public class StopwatchTileService : TileService
{
    public override void OnClick()
    {
        base.OnClick();

        var intent = new Intent(this, typeof(MainActivity));
        intent.AddFlags(ActivityFlags.NewTask);

        var pendingIntent = PendingIntent.GetActivity(
            this, 0, intent, PendingIntentFlags.Immutable)!;
        StartActivityAndCollapse(pendingIntent);
    }
}

やってることはシンプルそうですが、こっちはミリしらなので、別にレビューすることもなく素通ししかない。

アイコンもXMLで生成してくれてありがたい。

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">
	<!-- stopwatch body -->
	<path
        android:fillColor="#FFFFFF"
        android:pathData="M12,4C7.03,4 3,8.03 3,13s4.03,9 9,9 9,-4.03 9,-9S16.97,4 12,4zM12,20c-3.86,0 -7,-3.14 -7,-7s3.14,-7 7,-7 7,3.14 7,7 -3.14,7 -7,7z" />
	<!-- hand -->
	<path
        android:fillColor="#FFFFFF"
        android:pathData="M11,8h2v6h-2z" />
	<!-- top button -->
	<path
        android:fillColor="#FFFFFF"
        android:pathData="M11,1h2v3h-2z" />
</vector>

というわけで無事ストップウォッチがコントロールセンターに追加されました(右下)

完成!

ここまでサクサク行ったので、更に欲張って、iPhoneのストップウォッチと同じ用にXiaomiのダイナミックアイランド(Xiaomi HyperIslandというらしい)に対応させてやろう、と思ったら、なんと独自の非公開データを投げつけなきゃいけないとか複雑骨折仕様なので、少しやらせたけど、うまくできなかったので撤退しました。これはXiaomiが悪い。ちなみに独自仕様は、次のHyperOS 3.1からは標準仕様に乗っかるらしいので、無理やり頑張るよりそれを待ったほうがお得っぽいのでヨシ。

まとめ

せっかくなので断捨離したからとかもありますが、全体的に満足度は非常に高くなりました。面倒くさくはありましたが、移行して良かった。色々良さはあるんですが、やっぱLeitzphone自体が良いのが何より、かな。ハプティックフィードバックのあるレンズリングをグルグル回す原始的な楽しさと、雑にぱっと撮ってもそれなりに見栄えがしてしまうライカマジックのカメラは官能度高いです。

AndroidなのかXiaomi HyperOSなのか、という切り分けもありますが、iOSに比べてぱっと見は一緒なのだけど、すぐに作りの甘さみたいなのは感じてしまいます。特に文字周りがイマイチになりがちではあるかなあ。Windowsはもっとボロボロなので全く許容範囲なのですが!ガクガクするような動きの遅さとか引っ掛かりは一切感じず、ちゃんとヌルッとしてるので全然アリではありますよ。

サードパーティアプリまで広げると、ダイナミックアイランド(Xiaomi HyperIsland)が全然活かされていない。iOSでのライブアクティビティがダイナミックアイランドに格納されるのはかなり便利だったので、ちゃんと動いて欲しいと思ったんですよね。雑アプリ作っていて知ったんですが、現状はだいぶ独自対応、というか非公開の仕様に沿った出力が必要なようで、こういうOSの分断は、そりゃあサードパーティアプリはカバーできるわけがないよねえ、と理解しました。中国国内のアプリはかなり対応していそうですがグローバルなアプリが完全に未対応になっちゃってるんですね。ただしこれは、標準APIと繋ぎ合わせて対応させていくみたいな流れ(HyperOS 3.1(Beta)ではAndroid 16の標準API経由で対応できそうらしい)も合わせて、時が解決していく流れでやってるのならヨシ、ということで。

また、これもHyperOS起因なのか、素のカスタマイズ製はiOSよりもないですね。コントロールセンターにアプリも追加できないし。思ってたよりも遥かにガチガチで何も追加できない雰囲気で(iOSはなんだかんだでショートカット組めば何でもできるみたいなところがあった)、これは雑アプリを作ってカバーするか、といった気持ちでいます。

とはいえ総評としては本当に改めて大満足で(移行が面倒くさくてサンクコスト爆発してるので、そういい聞かせているところもなくはない)、WindowsユーザーはAndroid使うべきですよ過激派に転向します……!

Profile

Yoshifumi Kawai

Cysharp, Inc
CEO/CTO

Microsoft MVP for Developer Technologies(.NET)
April 2011
|
July 2026

X:@neuecc GitHub:neuecc

Archive