今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

TeamAmaze/AmazeFileManager

Android向けのマテリアルデザインファイルマネージャー。軽量で高速、広告なし

複数タブを開いたまま、片方でZIPの中身をその場でプレビューし、もう片方でGoogle DriveやDropboxのフォルダを並べて操作する、その流れを一度試すと手放せなくなります。APKやデータベースファイルまで内蔵リーダーで開けるので、別アプリを探す手間がなくなる感覚を体感できます。広告や課金なしのGPL-3.0で、DummyFileGeneratorやFtpServiceEspressoTestといったテストコードまで備えたMVVM構成なので、今日Google PlayかF-Droidから入れて自分のファイルで触ってみる価値があります。

01 / 概要
何をするものか一文で言うと
ひとことでAndroid向けのマテリアルデザインファイルマネージャー。軽量で高速、広告なし

Amaze File Managerは、Android向けのMaterial Designベースのファイルマネージャーです。ローカルストレージの基本操作に加え、クラウド接続、FTP/SSHサーバー機能、暗号化、アーカイブ圧縮・展開、アプリ管理まで備えたオープンソースアプリです。Google Play、F-Droid、IzzyOnDroidなど複数チャネルで配布されています。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

コードはAndroidアプリのGradleマルチフレーバー構成になっており、flavorDimensionsで「fdroid」と「play」を分けています。fdroidフレーバーでは独自実装のRarExtractor・Billing・CloudRailスタブを使い、playフレーバーでは課金や商用クラウドSDKを使う構造です。ファイル操作はHybridFileParcelableというモデルを軸に、OpenModeでローカル・SMB・SFTP・クラウドなどの種別を抽象化しています。コピー・削除・暗号化・圧縮解凍はAbstractProgressiveServiceを継承したCopyService、DeleteTask、EncryptService、ExtractServiceなどのAndroidサービスやAsyncTaskが担当し、進捗はRxJavaやコールバックで画面に伝えます。FTPサーバー機能はFtpService・FtpReceiver・FtpTileServiceで構成され、データベース層はRoom(UtilitiesDatabase・ExplorerDatabase)でブックマーク・履歴・SFTP接続情報・暗号化エントリなどを管理します。UtilsHandlerTestやHybridFileParcelableTestなどのJUnit/Espressoテストが、暗号化URIのエンコードやファイル名変更などの個別ロジックを検証しています。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    app/build.gradleを見ると、fdroidとplayの2つのproductFlavorがあり、Android Studioでビルドする際にどちらのフレーバーを選ぶかで依存ライブラリ(RARサポートや課金処理など)が変わることが分かります。

  2. STEP 02

    AndroidManifest.xmlやFtpService.ktの構成から、アプリ内でFTPサーバーを起動するとKEY_PREFERENCE_SECUREなどの設定によりFTPSまで切り替えられることを確認できます。

  3. STEP 03

    androidTestフォルダのFtpServiceEspressoTestを実行すると、実機またはエミュレータ上でFTPサーバーを起動し、FTPClientで実際にログイン・アップロード・ダウンロードまで検証する流れを体験できます。

  4. STEP 04

    UtilsHandlerTestを動かすと、SSH接続文字列(ssh://user:pass@host:port形式)のパスワード部分を暗号化・復号する処理が、特殊文字を含むケースでも壊れないことを確認できます。

  5. STEP 05

    Android 11以降の実機では、StoragePermissionHelperが示すように「すべてのファイルへのアクセス」権限を手動で許可するダイアログ操作が必要になります。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

ビルドすればMaterial Designのファイルブラウザが手に入り、コピー・削除・圧縮解凍・暗号化・FTPSFTP接続・アプリのバックアップアンインストールといった操作が1つのアプリ内で行えます。fdroidフレーバーならクラウド連携は限定的なスタブ実装、playフレーバーなら追加のクラウドプラグインと連動する構成です。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

READMEには「KitKat端末の外部SDカードでは読み書きが不安定で、カットペーストでファイルを失う可能性がある」と明記されており、古い端末では注意が必要です。

02

buildConfigFieldにCRYPTO_IVやFTP_SERVER_KEYSTORE_PASSWORDが固定文字列でソースに埋め込まれており、暗号化・FTPS機能のセキュリティ強度は鍵管理の実装次第で評価が変わります。

03

クラウド連携機能はfdroidフレーバーでは独自のスタブ実装(com.cloudrail.si以下)に置き換わっているため、Google Playのクラウドプラグインと同じ体験にはならない可能性があります。

04

Androidアプリのため、提示されたファイルだけではUIの見た目や実機固有の権限ダイアログの挙動までは確認できず、実際の操作感は実機テストでしか分かりません。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

ローカルファイル操作に加えてFTPSFTPサーバーやAES暗号化、アーカイブ処理まで欲しいAndroidユーザーに向いています。GPLライセンスで広告や課金なしという方針もREADMEから確認できます。ソース構成(サービス分離・Room DB・Espressoテスト群)は実務的で、CI設定やテストコードの存在から継続的に検証されている実装だと判断できます。ただし暗号鍵のハードコードなど細部は実機でのセキュリティ検証が必要で、今回の分析はコードと設定ファイルの記述に基づく推測を含みます。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する