LocalSend - AirDropの代替となるオープンソースのクロスプラットフォームなローカルファイル共有アプリ
(github.com/localsend)Repository: https://github.com/localsend/localsend
- 無料のオープンソースアプリで、インターネット接続なしにローカルネットワーク内の近くのデバイス同士でファイルやメッセージを安全にやり取りできる
- 外部サーバーやサードパーティーサーバーに依存せず、デバイス間通信をREST APIとHTTPS暗号化で処理し、高速で信頼性の高いローカル通信を実現する
- 転送データはすべてHTTPSで保護され、TLS/SSL証明書を各デバイスで即時生成してセキュリティを高める
- Windows、macOS、Linux、Android、iOS、Fire OSで提供されており、アプリストアやパッケージマネージャー経由でのインストールを優先的に推奨している
- アプリに自動更新機能がないため、READMEではアプリストアまたはパッケージマネージャー経由の利用を推奨している
- 配布チャネルには、WindowsのWinget、Scoop、Chocolatey、EXE、Portable ZIP、macOSのApp StoreとHomebrew、LinuxのFlathub、Nixpkgs、Snap、AUR、DEB、AppImage、TAR、AndroidのPlay Store、F-Droid、APK、Fire OSのAmazonが含まれる
- 最小サポートバージョンはAndroid 5.0、iOS 12.0、macOS 11 Big Sur、Windows 10で、Windows 7をサポートする最後のバージョンはv1.15.4
- Linuxではデスクトップ環境に応じてxdg-desktop-portal系の依存関係が必要で、Gnomeは
xdg-desktop-portalとxdg-desktop-portal-gtk、KDEはxdg-desktop-portalとxdg-desktop-portal-kdeを必要とする - ほとんどの場合は追加設定なしで動作するが、送受信に問題がある場合はファイアウォールでTCP/UDP 53317の受信を許可し、送信側のTCP/UDPも許可する必要がある
- ルーターのAP isolationが有効だとデバイス間接続が遮断されるため、デバイス検出に問題がある場合はこれを無効化する必要がある
- ポータブルモードは、実行ファイルと同じディレクトリに空でもよい
settings.jsonファイルを置くと有効になり、設定の保存先がデフォルトパスではなくそのファイルに切り替わる - トレイにのみ隠した状態で起動するには
--hiddenフラグを使える - 速度が遅い場合は5 Ghzの利用と両方のデバイスでの暗号化無効化が案内されており、Androidの受信速度低下は既知の問題として残っている
- ソースビルドにはFlutterとRustが必要で、プロジェクトは
.fvmrcで指定された古いFlutterバージョンを使用するため、fvm flutterの使用が推奨される
2件のコメント
ボードゲームの集まりで撮ったタイムラプスの共有用によく使っていました。
最近はGalaxyとPixelがAirDropのような共有に対応して、少し用途が曖昧になりました。
もちろんデスクトップに送るときは、今でも便利です。
Hacker Newsのコメント
問題は、こうした代替手段はどれも 同じローカルネットワーク 上にいる必要があること
Airdropの良いところは、そのローカルネットワークを裏で自動的に作って処理してくれる点だと理解している
だから友人たちとハイキング中でも、その場ですぐ何かを送れた
Androidに乗り換えてからは、友人の端末に テザリング してLANを作ってからLocalsendを使っているが、体験自体はずっと滑らかではない
単なる静的なGitHubページとして動く device-to-device転送 ツール
gh repo: https://github.com/mbarlow/thinair
各端末がスキャン用のQRコードを生成し、WebRTC接続を確立する
Android同士では、互いにQRモードからカメラスキャンモードへ切り替えるよう知らせる オーディオchirp も使う
Android↔Appleでも試して動作はしたが、Appleはそのオーディオchirpを拾えない
その場合は少し待てばQRコードが消えて、スキャン段階に進める
急ごしらえで作ったもので、もともとは鳥のさえずりのようなchirpや昔のモデム方式で、スマートフォン同士のオーディオハンドシェイクを試していた
端末を近づけてオーディオフレームをやり取りしながら転送開始を確認するのは面白かったが、ハンドシェイクは遅く信頼性も低かった
フローをもっと磨きたいと思っていて、今はiPhone/Android/PC間で、アプリ・メール・アカウントなしにファイルを送るときにすでに使っている
ただ、あまり安定しているとも使いやすいとも言えない
https://github.com/spieglt/FlyingCarpet
Androidアプリ で、共有時にLANは不要だという
https://play.google.com/store/apps/details?id=com.fastfilelink.wrapper
相手のスマホを見つけられないことがあり、おそらく以前の転送がバックグラウンドでひっそり失敗したときにそうなるようだ
モバイル/Wi‑Fi接続がないと連絡先検索にも問題があり、山で別のスマホに写真を送ろうとしたときに経験した
たまにただ固まってまったく動かないこともあり、こういうApple magicはあまり助けにならない
Localsendを使うには、まず1台の端末でad-hoc Wi‑Fiを作り、他の端末をそこへ接続し、その後でようやくLocalsendを起動しなければならない
前の2段階がかなり面倒で、Airdropはそこを勝手にやってくれるので、ずっと摩擦が少なく感じられる
最近使い始めたが 本当によく動作 して、Airdropよりずっと信頼できた
ただしUXには改善の余地がある
それでもAppleにはAirdropをもう少し直してほしい
使うたびに信頼性が低すぎるし、端末を見つけられなかったり、Macユーザーが複数いると同じMacを2つ表示してどのユーザーなのかも示さないので混乱する
そこまでこういうアプリが必要になるほど、どんな 大きなファイル を作ってやり取りしているのかよく分からない
自分の場合、スマホで発生するファイルは写真と動画だけで、Immichにバックアップしてからリンク共有すれば済む
普通の人もiCloudやGoogle Photosで同じようなことをしている気がする
文書など他のファイル同期にはownCloud OCISを使っているし、多くの場合はDropBoxやiCloud、あるいはメールやWhatsAppでも十分そうだ
ローカルネットワークでISOのようなものを移すならSMBでコピーすればよく、実質どこでも使えて別アプリも不要
バックアップならハードドライブをそのままつないでもいい
だから、なぜこれを使うべきなのかあまり納得できない
昔は自分も不可視の問題があったが、最近はいつもちゃんと動く
確実に直す方法はまだ見つかっておらず、両方でAirdropをオフにして入れ直すのがいちばんマシだが、それでも 70%程度 しか効かない
Sendme https://github.com/n0-computer/sendme と AltSendme https://github.com/tonyantony300/alt-sendme は見ておく価値がある
どちらもIroh https://github.com/n0-computer/iroh を使っていて、中央サーバーなしでデータを送れる オープンソースの暗号化P2P relayサービス なので、送受信できるファイルサイズの制限は実質ない
似たようなスレッドでファイル共有アプリの話をしたときにもこれを勧めた
https://news.ycombinator.com/item?id=47906587
コードが口頭で伝えられるほど短くも単純でもないし、そのコードを送れるならたいていファイル自体もそのまま送れる
https://github.com/schlagmichdoch/pairdrop
似たプロジェクトだが、これはすべて ブラウザで動作 し、"public" roomを使ってローカルネットワーク外のクライアントとも接続できる
iPhoneとLinuxデスクトップ間の転送用にLocalsendを入れてあるが、いつも順調に動くわけではない
FirewalldでLocalsendのポートを開けても、端末同士が互いに見えるようになるまで 10分以上 かかることがある
ブラウザベースなら少なくともdiscoveryはもっと速そうだ
ドキュメントが少し見つけにくいが、FAQは https://github.com/schlagmichdoch/pairdrop/blob/master/docs/faq.md で、
Android、iOS、Windowsの共有メニュー統合方法は https://github.com/schlagmichdoch/PairDrop/blob/master/docs/how-to.md にある
sharedropとsnapdropがLimeWireに買収された後に壊れたため、それをforkしたものだ
Airdrop代替を名乗るものについては spamsolutions.txt のようなものが必要だと感じる
これは、既存のWi‑Fiネットワーク に2つのピアが両方つながっていなくても使えるべき、という基準を満たしていない
https://craphound.com/spamsolutions.txt
似たようなものを Tauri で出したことがある
インストーラーのサイズはMacで約27MB、Linux .debで45MB、Windowsで53MBほどで、Electronは最低でも150MBくらいだった
.AppImageだけは例外で110MBほどだが、ランタイムをバンドルするためだ
このサイズ削減はOSのwebviewを再利用することで実現するが、それが同時にコストでもある
LinuxのWebKitGTKはMacのWebKitやWindowsのEdge WebViewとは本当に挙動が違い、Chromiumが肩代わりしてくれていた部分がなくなるため、クロスプラットフォームデバッグ に時間を取られる
意外にもさらに驚いたのは、フレームワークより Linuxパッケージング のほうだった
AppImageはどこでも動くが、大半のユーザーには二級市民のように感じられ、.debは主流ディストリをカバーするものの、動き続けるglibcバージョンを追いかけなければならない
Snap/Flatpakは公式なcross-distroの答えのように見えるが、サンドボックスと権限処理のせいで、インディー開発者は数週間を簡単に溶かしてしまう
結局.debと.AppImageを配布したところ、数時間もしないうちに「なぜAURにはないのか」というメールが来始めた
ブラウザでも動く
https://web.localsend.org/
WindowsからAndroid、iOSまで転送できる
Firefox、Chrome、スマホ、ノートPCで送受信の両方を試した
コンソールには
WebRTC: ICE failed, add a TURN server and see about:webrtc for more details.と出ていて、これをユーザーがどう解決すべきなのかよく分からなかった検索してもほとんどが開発者向けの助言ばかりだった
最終的に分かったのは、Tailscale を切ると動くということ
ただ、v1.18.0 はまだF-droidには来ていない
自分も去年この領域で何か作っていた
基本的には peer-to-peer filesystem であるkeibidropを作った: https://keibidrop.com/
先週公開したもので、local sendがやることに加えてWANでも動作する
モバイルアプリはまだリリースしていない
さらに一歩進んでいる点は、双方向で同期される virtual filesystem まで備えていることだ
リポジトリはこちら: https://github.com/KeibiSoft/KeibiDrop
UIを除くコードはオープンソースで、loopback基準でlocalsendともベンチマークしたが、local sendのほうが速かった
https://keibisoft.com/blog/keibidrop-benchmarks-vs-competition.html
昨日は/r/golangにもコメントスレッドを立ててみようとした
内部的にはPQC、gRPC、FUSEを使っている
Linuxに移ってから最初に入れたアプリのひとつがこれだった
オープンソースアプリ がどれだけ素晴らしいかをはっきり実感させてくれた
Tailscale が有効だと、Localsendは今のところ安定して動作しないようだ
残念な点だ
同じ tailnet 内のクライアント同士でもファイル転送をサポートしてくれたら本当にうれしい