世界を動かす技術を、日本語で。

Android用Nextcloudアプリの最近失われたファイルアップロード機能

概要

  • Google がNextcloudの ファイルアップロード権限 を復元する提案を行い、機能回復の見込みが発表された提案。
  • 問題の発端は、 Android版Nextcloud アプリの 全ファイルアップロード権限 がGoogleにより取り消されたこと確認。
  • 一時的に 写真・動画のみ アップロード可能となり、多数ユーザーに影響が発生した経緯。
  • Big Techによるゲートキーピング問題、競争抑制の実例として本件を位置付ける分析。
  • EU規制や業界全体への影響、今後の展望についても言及する内容。

Nextcloud Androidファイルアップロード問題とGoogleの対応

最新状況と今後の予定

  • 2024年5月15日朝、Google よりNextcloudに 権限復元の提案 が届いたことを発表。
  • テストリリース を今夜公開予定、問題なければ 来週初めに正式アップデート を配信する計画。
  • これにより 失われていた全機能の回復 が期待される状況。
  • 継続的な ユーザーのサポート に感謝を表明する姿勢。
  • 公式発表は 2024年5月15日14:50 CET に投稿されたことを明記。

問題発生の経緯

  • 数ヶ月間、Androidユーザー のNextcloudで ファイルアップロードが制限 される事態が発生した経緯。
  • 写真・動画以外 のファイルがアップロード不可となり、ユーザー体験が大きく損なわれた認識。
  • Google重要な権限を撤回 し、2024年半ば以降の再申請も却下された事実。
  • 結果として 数百万人規模のユーザー が影響を受けたことを強調。
  • F-Droid 等の代替ストア利用は一部ユーザーに限られるため、全体解決には至らない現状説明。

Googleの主張とNextcloud側の反論

  • Googleはセキュリティ上の懸念 を理由に権限を撤回したと説明。
  • 2016年から同機能を提供 しており、過去に問題指摘がなかったことを指摘。
  • Google自身や他の大手アプリ は同様の権限を保持している現状を問題視。
  • プラットフォーム支配による自社優遇 の疑念を表明。
  • 再三の申請や説明 にも関わらず、Googleからは定型文やドキュメント案内のみで、協働的な対応がなかったことを批判。

技術的背景と対応策

  • Nextcloud Filesアプリ は2011年から 全ファイルアクセス権限 を持っていた事実確認。
  • 2024年9月、Google Playストアでの更新 が突如拒否され、権限削除または SAFやMediaStore API利用 を指示された経緯。
    • SAF は他アプリへのファイル共有用であり、Nextcloudのワークフローと適合しないことを指摘。
    • MediaStore API はメディアファイルに限定され、全ファイルアクセスには不十分と説明。
  • バグ修正や顧客対応 のため、Googleの新規則に一時的に従い、 機能制限付きでアップデート をリリースした対応策。
  • F-Droid等外部ストア では従来通りの権限で新バージョンを公開、 Google Playストア固有の問題 であることを明記。

Big Techのゲートキーピング問題

  • 小規模ベンダーへの不利な扱い や競争阻害の典型例として本件を位置付ける分析。
  • Microsoftの過去の事例 (WordPerfectに対する機能制限)と同様の構図を指摘。
  • Googleはセキュリティ名目で競合製品の開発を困難に している現状を批判。
  • AppleやMicrosoftのような大手 には同様の措置が取られていないことを問題視。
  • Nextcloudのような新興・破壊的企業 が標的になりやすい状況を説明。
  • 苦情対応チームの形骸化 や、実質的な対応拒否の実態を指摘。

EU規制と業界への影響

  • EUによる規制強化(Digital Markets Act等) の動きがあるものの、実効性や罰則金額の低さを問題視。
  • MetaやAppleへの制裁金 も数日分の売上に過ぎず、抑止力として不十分であると分析。
  • 規制施行から初回制裁発表まで2年近く を要し、デジタル市場では遅すぎることを指摘。
  • 法的手段やEUへの訴え はコスト・時間面で中小企業には現実的でないことを説明。
  • 2021年には約40団体と共に競争法違反の訴え を提出したが、4年経過しても進展がない現状。
  • 現行の監督体制が巨大IT企業には無力 であると結論付ける。

今後の展望とユーザーへの呼びかけ

  • Nextcloud Summit 2025 への参加を呼びかけ、 デジタル主権革命 を共に議論する場を案内。
  • 業界有識者・リーダーとの対話 を通じ、より公正なデジタル市場実現を目指す姿勢を強調。
  • 公式サイトでの参加登録 を案内し、ユーザーとの連携強化を目指す提案。

Hackerたちの意見

これがEUのデジタル市場法が存在する理由なんだよね。だからこそ、もっと強い規制が必要なんだ。GoogleがAndroidでNextcloudの全ファイルアクセスを無効にして、自社のアプリや大企業のサービスはそのままにしているのは「セキュリティ」のためじゃなくて、コントロールのためだよ。Nextcloudはヨーロッパのプライバシー重視のオープンスタンダードに基づいた代替サービスで、GDPRの要件にも完全に沿っている。自社サービスを優遇しながらそのコア機能をブロックするのは、プラットフォームの力を乱用している典型的な例だ。Androidはオープンであるべきだったのに、こういう動きがあると(少なくともPlay Services版は)ただの囲い込みの庭になってることがわかる。EUがデジタル主権と公正な競争を真剣に考えているなら、こういう行動は止めなきゃいけない。そうしないと、どんなに準拠していてもオープンでユーザーフレンドリーなヨーロッパの技術はチャンスがない。

「AOSPをインストールしたり、APKをサイドロードするのは簡単だから、ここには既得権の乱用はない!」って言ってくる細かいことを言う人たちを待ってるよ。IE(別のブラウザをインストールできる)やiPhone(別のブランドを買える)と同じように。追記:あ、もう他の投稿で見かけたわ。

[フラグ]

モバイルは二級のオペレーティングシステムプラットフォームだね。デスクトップで使うブラウザやOSは簡単にブロックやフィルタリングができるけど、モバイルユーザーは毎日ポップアップやマルウェア、DNSハイジャックにさらされてる。もしそうじゃなかったら、モバイルは広告主にとっての金のなる木にはならないよ。

Googleのエコシステム内で「全ファイル」権限を持っているアプリはどれ?Google Driveは確実に持ってないよ。GDriveの「アップロード」ボタンは、NextCloudと同じようにファイルを選択するように促す。SAFには高リスクの権限なしで「一つのフォルダだけを同期する」機能がある。既存のプロファイルの移行は面倒かもしれない(ユーザーが新しいAPIに切り替えるときにフォルダの権限を付与する必要があるから)。全体の仮想ストレージやダウンロードフォルダ、Samsungのようなベンダーがブラックリストに追加したかもしれない追加フォルダの同期は新しいAPIではできないけど、Googleのサービスでもできないよ。DMAはGoogleを特別な位置に置かないことを要求するだけだから、そんな機能を提供しない限り、NextCloudに提供する必要はないんだ。

アプリが気まぐれにあなたのプライベートデータを読み取るのを防ぐためにGoogleを罰するのは、EUを巻き込むにはかなりの意見ですね。この施行がなければ、マルウェアゲームやFacebookのようなアプリが「全アクセスが必要」と言ってあなたの写真をアップロードし、EXIFの位置情報をスキャンしていました。そして、既存のトピックでわかったように、よりプライバシーを保護するAPIは存在しますが、Nextcloudはそれを使いたくないだけです。

SAFは使えない、他のアプリとファイルを共有/公開するためのものだから。NextCloudにとっては良い選択肢ではない理由がある(例えば、内部ストレージ全体やダウンロードフォルダ、SDカードのルートを共有できない)けど、NextCloudの声明は意味がないと思う。

彼らのアプリの目的は、フォルダ全体をバックアップすることなんだ。あるアプリからNextcloudに共有しても、ファイルの後のバージョンをバックアップするための継続的なアクセスは提供されないよ。

完全に正しいですね、例えばこちらを見てください:https://developer.android.com/training/data-storage/shared/d... 昨日これについて話し合われましたね:https://news.ycombinator.com/item?id=43970959

確認したいんだけど、Googleのソフトウェアって、全体で同じ正確な権限構造を持ってるの?例えば、どのGoogle製品もNextCloudが求めてるのと同じ権限を使ってないってこと?それとも、代わりにSAFを使ってるの?特にNextCloudがやってることに関して。GoogleがNextCloudや他のアプリ開発者に出してるルールに従ってるか、確認したいんだ。

Nextcloudの痛みを感じてるよ。Everfind(Drive、OneDrive、Dropboxなどを横断的に検索するサービス)のチームは、ファイルをダウンロードしたり、OCRを実行したり、ユーザーのために全文をインデックスするために、drive.readonlyスコープを求めてこの1年戦ってきた。Googleはずっとdrive.file + drive.metadata.readonlyで我慢しろって言ってくるけど、これだと継続的な発見ができなくなって、新しいドキュメントや更新されたドキュメントの検索結果が壊れちゃう。要するに、Googleの「最小権限」っていうスローガンは立派に聞こえるけど、実際にはビッグテックのファーストパーティアプリに特権的なアクセスを与え、独立したベンダーには半分しか機能しない製品を提供させることになる。結果として、ユーザーは機能や選択肢を失い、小さな開発者はコピー&ペーストのポリシーボットと何時間も議論する羽目になるんだ。

そろそろ(別の)独占禁止法の訴訟を起こす時期かも。少なくともNextcloudはヨーロッパに拠点を置いていて、最近はテックジャイアンツに立ち向かう意欲を見せていますからね。

これはまさに独占禁止法のためにあることですね。

うーん、私の知る限りでは、drive.readonlyはGoogle Driveの機能だね。TFAはローカルファイルへのアクセスについて話してるんじゃなくて、Google Driveのアクセスについて話してるわけじゃないよ。

ユーザーとして、これを決めるのは私の権利であって、Googleの権利じゃないはず。でも、Appleがもっと自由にやってるのはちょっと変だと思う。Appleの顧客は一般的に「自分たちを守ってくれ」っていう考え方が強いからね。

Googleのファーストパーティアプリに特権アクセスを与えることよりも、チームがエンジニアリングの努力を割く優先度がすごく低いってことの方が大きいと思う。私は数年間Google WorkspaceのPMをやってたけど、思ってるほど悪意はないよ。決定は収益や他の機能(特に企業顧客向け)に最適化されてるから、エンドユーザーの満足度は犠牲にされがちなんだ。

Googleのビルドで壊れてる機能を制限して、他のチャンネルで機能を使えるようにするのはどう?個人的には、PlayStoreよりF-Droidからアプリをインストールすることを優先してるよ。

これが公式のSyncThing Androidアプリが配布を停止した理由でもあります。フォークはありますが、Playストアにはありません。

SyncThing Androidアプリの問題は、SyncThingのラッパーに過ぎないことです。SyncThingはGoライブラリですが、SAFはネイティブコードで使える簡単なファイルディスクリプタを提供しません。代わりに「content://」のURLが与えられ、これをファイルディスクリプタに変換するためにJava/Kotlinのブリッジが必要です。それはSyncThing自体で行う必要があります(編集:または他のトリックが必要ですが、どうやらsyncthing-forkは何とか動作させたようです)。ただし、私の知る限り、この問題はNextCloudアプリには当てはまらないと思います。

フォークはPlayストアにあり、Android 15で問題なく動いています:https://play.google.com/store/apps/details?id=com.github.cat... 公式クライアントが突然消えたのにはちょっと驚きましたけどね。

Googleの以前のモットー「悪事を働くな」は、彼らの企業行動規範の重要な部分で、倫理的で透明なビジネス慣行を強調していました。2015年にそのモットーは削除され、それ以来私たちは彼らの手中にあります。今や彼らはMicrosoftのようになってしまいました、それがNextcloudが作られた理由です!

独占行動だね。他の人たちが自分たちと同じように運営できるように必要なデューデリジェンスに投資しないなら、彼らがその分野を管理する資格はないよ。監視するのがコストかかる?じゃあ、監視が負担なら企業に少額の手数料を請求すればいい。ほかのプレイヤーを締め出すのは適切な対応じゃない。

AOSPプラットフォームの開発者だよ。(ファイルシステム)意見は自分のもので、Googleの代弁をしてるわけじゃない。注意:NextCloudは使ってないし、彼らのアプリを具体的に見たこともないけど、比較的情報を持った視点からの表面的な観察だよ。私の見解:SAFはこのユースケースに合うと思う、他の人も言ってるしね。Google DriveはNextCloudが主張してるような特別扱いの権限を持ってないし、NextCloudのアプリと同じようにPlayストアから提供されてる。他の人が指摘してるように、MANAGE_EXTERNAL_STORAGEのような権限は過去にひどく乱用されてきたことがあるよ。

他の人も指摘してるように、MANAGE_EXTERNAL_STORAGEのような権限は過去にひどく乱用されてきたことがある。スレッド内でこの点に対する考慮が欠けてるのが怖い。こういう権限を使ってデバイスから取得できるデータの量はかなり大きいだろうし、「ユーザーを自分たちから守る」だけの問題じゃないよ。どのアプリでもそれを有効にするのは安全だとは思えないし、デバイス上のすべてのデータを同期するのはすごく便利そうだけど、Googleにとっては「やってもやらなくても」っていう状況になっちゃうね。

ひどい方法で使われることが多いね。もしかして、貸金業者のアプリとか?それとも、もっとひどいことがあるのかな?(基本的には、捕らわれのローンを得るために人々が「自発的に」インストールするランサムウェアみたいなもので、実際にどう動くのか知らずに使ってることが多い。支払いに失敗すると、電話がロックされるだけでなく、そのデータを使って脅迫されたり、友達にヌードを送るぞとか、データから特定された親戚に対する脅迫までされる - https://www.welivesecurity.com/en/eset-research/beware-preda...)

SAFは選択肢にならないよ、めっちゃ遅いから[1][2][3][4][5]。まともなクラウド同期アプリには絶対無理。引用元[1]: > SAFは遅い。SAFのファイルIO操作は、IPC呼び出しを使うから20-30msかかる。時々、ディスク上にたくさんのファイルが存在するか確認したり、存在しない場合は作成したりする必要があることもあるけど、それがめっちゃ遅い。Googleの例でも、速くするためにハックを使ってるくらいだよ。引用元[3]: > SAFと標準のファイル操作のパフォーマンスを比べるために新しいサンプルを追加するね: > […] > SAFで15秒、ネイティブのlsで6ミリ秒!しかもファイルは128個だけだよ、笑える ———————— [1] https://github.com/K1rakishou/Fuck-Storage-Access-Framework#... [2] https://www.reddit.com/r/androiddev/comments/ga5u72/saf_is_s... [3] https://issuetracker.google.com/issues/73044953#comment5 [4] https://magicbox.imejl.sk/forums/topic/storage-access-framew... [5] https://issuetracker.google.com/issues/130261278#comment52

SAFはクロスプラットフォームアプリを作ろうとしてる人には最悪の解決策だよ(もしそうじゃないなら、なんでAndroidをターゲットにしてるの?)、だってネイティブコードと動かないから。

Google Driveは、Nextcloudが主張するような権限を持ってない。GoogleがDriveに特別扱いしてるかもしれないけど、システム全体はGoogleがコントロールしてるから、確かにそうだよ[0]。 [0]: https://support.google.com/googleone/answer/9149304?hl=en&co...

まったく関係ない質問だけど、Androidのファイルシステムの話をしてるから、AOSPの開発者がAndroid 11でファイル名に「特別な」文字 ":?|*" を無効にしたのがすごくイライラしてるんだ[0]。多分、NTFS/FATとの互換性を達成するためだと思うけど。残念ながら、これのおかげで、特に古いアプリがファイル名に疑問符を使うときにクラッシュしちゃうし、Linuxマシンから電話にファイルを同期することもできなくなった。これが完全に元に戻る可能性はほとんどないと思うけど、開発者設定で以前のようにext4のファイル名を許可するオプションを作ることはできないかな?君のチームがそんな動きに納得する可能性はあると思う?この問題を提起したり、パッチを提供するために適切な場所はどこかな? [0]: https://github.com/GrapheneOS/os-issue-tracker/issues/952

他の人も指摘してるけど、MANAGE_EXTERNAL_STORAGEのような権限は過去にひどく乱用されてきたことが多い。新しいアプリにこの権限を与えるときは慎重にすべきだってわかるけど、NextCloudはよく知られてるし、ファイル管理アプリでもあるから、むしろこういうアプリにはこの権限が必要だと思う。もし完全に廃止するつもりなら、代替手段が十分に良くないとダメだね。いくつかのコメントを見る限り、そうじゃないみたいだし。私はAndroidの開発をしたことがないし(多分これが理由で今後もやらないだろうけど)、正しく判断できない。Google Driveアプリはクラウドストレージの上にあるUIに過ぎないって理解してる。バックアップのような面白い部分はそれを通じて処理されてないし、Google Driveはこれに対して特別扱いされてる。そんな機能をエミュレートするには追加の権限が必要だよ。

Googleは自社のAndroidアプリに優位性を与えるために、ファーストパーティ専用のAPIを作る歴史があるね。2014年にGoogleはドライブアプリをドキュメントやシートなどの複数の別々のAndroidアプリに分けたんだ。ユーザーに新しいアプリをインストールさせて移行させるのは負担になるから、ドライブが通常のPlayストアへのリダイレクトの代わりに使える1クリックインストールモーダルを設計したんだ。すごいね!その頃、私が働いていた会社(ドライブの大きな競合)は、コア機能をスタンドアロンアプリに分けようとして、似たような理由で同じ流れを使いたかったんだけど、ダメだった!GoogleはそのAPIをアプリ署名の検証の後ろにロックして、Googleが署名したアプリだけが使えるようにしたんだ。権限をリクエストしたり、異議を唱える可能性はゼロで、完全にハードコーディングされた独占状態だよ。こういうことにはリスクがある正当な理由があるけど、Googleは乱用の軽減と反競争的行動の間で定期的に越えてるラインがあるね。

GoogleのアプリはNexcloudが欲しい権限を使ってないよ。唯一の例外は、クラウドと統合してないプリインストールの「ファイル」ファイルエクスプローラーアプリだね。

私の読んだ感じだと、新しいAPIはいい方向に進んでるみたい。でも、どちらにしても、GoogleはNextcloudに対して、ユーザーが許可を与えるまでバックアップや同期を黙って止めるように求めてるんだよね。多くのユーザーはデータ損失に気づくまで気づかないんじゃないかな - それによる信頼やブランドへのダメージはかなり大きいと思う。ユーザーがほとんど影響を受けるのに、Googleがこんな要求をするのは公平じゃないと思うな。

GoogleがNextcloudに連絡して、許可を復元する提案をしたみたい。技術的な議論が理由だったのか、それとも独占禁止法の裁判やメディアでの言及が影響したのか、ちょっと気になるね。