🐤AndroidのログをAIが解説してくれるMacアプリ「HiyokoLogcat」を作ったので公開しました

- AndroidのlogcatをリアルタイムGUIで見られるMacアプリを作った
- ログ行の🐣を押すとGemini AIが原因と解決策を日本語で解説してくれる
- **完全無料・OSSで公開中**

---

 きっかけ

AndroidStudioを起動するのが重くて、logcatだけ見たいときに使える軽いMacアプリが欲しかった。
せっかく作るならAI診断もつけてしまおうと思って作ったのが**HiyokoLogcat**です。

---

こんなアプリです



- USBでAndroidを繋ぐだけでリアルタイムにログが流れる
- ERROR/WARN/INFOでカラー分け
- キーワード検索・レベルフィルタ
- 各行の🐣を押すとGemini AIが日本語で原因を解説

---

AI診断の精度がすごい

実際にGeminiに診断させるとこんな感じの回答が返ってきます👇

> **エラー原因**: このログはシステムの正常なライフサイクル管理の一部であり...
> **解決策**: Foreground Serviceを使用し、省電力設定を見直してください...

使っているのは`Gemini 3 Flash Preview`で、無料APIキーで動きます。

---

使い方

1. ダウンロード
[Releases](https://github.com/Hiyoyoko/HiyokoLogcat/releases) から`HiyokoLogcat_1.0.0_universal.dmg`をダウンロード

2. Gemini APIキーを設定
[Google AI Studio](https://aistudio.google.com/) で無料取得 → アプリの⚙️から入力

3. AndroidをUSBで接続してStart!

---

技術スタック

- **Rust + Tauri v2** — ネイティブMacアプリ
- **React + TypeScript** — UI
- **Google Gemini API** — AI診断エンジン
- **react-virtuoso** — 数万行のログも軽快に表示

---

おわりに

GitHubで公開中です。使ってみた感想・バグ報告・スターお待ちしています🐣

👉 https://github.com/Hiyoyoko/HiyokoLogcat

Androidのスクショ、毎回どうやってMacに送ってる?🐤

スマホでスクショを撮って、Macで使いたい。

たったそれだけのことが、なんでこんなに手間なんだろうと思ったことはありませんか。

Googleフォトの同期を待つのか、自分宛にLINEで送るのか、ケーブルを繋いでファイル転送するのか。どれも「できる」けれど、毎日続けると小さなストレスが積み重なっていきます。

そのストレスをなくすために Hiyoko Shot を作りました。


使い方はシンプル

AndroidをMacにUSBで繋ぐか、同じWi-Fiに繋げておくだけ。

あとは普通にスマホでスクショを撮ると、気づいたときにはもうMacのギャラリーに届いています。「転送する」という操作は一切不要です。


特に気に入って使っている機能

ギャラリーからそのままドロップ

メニューバーのひよこアイコンを開くと、最新のスクショが並んでいます。その画像をSlackやDiscordのチャット欄にそのまま引っ張っていくだけで送れます。いちいちFinderでファイルを探す必要がありません。

クリックでコピー

サムネイルをクリックするだけで画像がクリップボードに入ります。NotionやFigmaにすぐ貼れます。

Wi-Fiで繋がる

最初にUSBで一度繋ぐと、あとは同じネットワークにいるだけで自動でつながります。ケーブルなしで使えます。

スマホでスクショ撮ったらmac側は小さくこんな感じで表示されます

こんな人に

毎日Androidのスクショを仕事や発信に使う人、Slackやチャットにスクショを貼ることが多い人、「自分宛に送る」ワンステップをなくしたい人に使ってほしいです。

設定から日本語と英語のどちらの言語設定もできます🐤


¥1,000の買い切りです。サブスクなし。一度買えばずっと使えます。

少しでも毎日が楽になれば🐤

AndroidのスクショをMacに爆速転送するアプリをRust + Tauriで作った話

こんにちは、個人開発者のhiyoyoです🐤

Androidを使いながらMacで作業していると、「スクショをMacに持ってくる」という地味な作業が毎日発生します。Googleフォトの同期を待つ、自分宛にDMで送る、ケーブル繋いでMTPでコピー……どれも微妙にダルい。

この問題を解決するために Hiyoko Shot というmacOSアプリを作りました。この記事では実装で面白かった部分を紹介します。

どんなアプリか

Hiyoko Shot はメニューバー常駐型のmacOSユーティリティです。USB または Wi-Fi で繋いでおくだけで、スクショを撮った瞬間に自動でMacへ転送されます。

  • 📱 AndroidのスクショをMacへ自動転送(USB / Wi-Fi対応)
  • 🖼 ギャラリーUIでプレビュー・ドラッグ&ドロップ共有
  • ⚡ ADB exec-out を使った低オーバーヘッド転送
  • 🦀 バックエンド: Rust、フロントエンド: React + Framer Motion、フレームワーク: Tauri

    スマホでスクショ撮った時のHiyoko Shotでの画面

    設定画面(日本語と英語のお好きな言語を選択できます)

実装で面白かったところ

ADB exec-out による直接転送

Androidのスクショ転送で真っ先に思いつくのは adb pull ですが、Hiyoko Shotでは adb exec-out を採用しています。

adb exec-out screencap -p

adb pull はAndroid端末にファイルを一時保存してからPCへコピーするのに対して、exec-out はコマンドの標準出力を直接ホスト側にストリームします。

方式 フロー
adb pull Android側に書き込み → 転送 → Mac側で読み込み
exec-out 直接ストリーム → Mac側で受け取り

保存・転送・読み込みのオーバーヘッドを極限まで削減できます。

5秒ポーリングによる監視

スクショの「撮った瞬間」を検知するために、ADBでAndroid側の /sdcard/DCIM/Screenshots/ を5秒おきに監視しています。

// 疑似コード
loop {
    let current_files = list_screenshots_via_adb(&device)?;
    let new_files = diff(&last_snapshot, &current_files);
    
    for file in new_files {
        transfer_file(&device, &file).await?;
    }
    
    last_snapshot = current_files;
    sleep(Duration::from_secs(5)).await;
}

アプリがバックグラウンドに隠れているときはポーリング間隔を伸ばして低負荷モードに切り替えています。

Base64方式のギャラリー表示

TauriでフロントエンドからRust側の画像を表示するとき、ファイルパスをそのまま <img src> に渡す方法だと環境によって表示されないケースがありました。Base64エンコードしてData URIとして渡す方式で解決しています。

// Rust側
let bytes = fs::read(&image_path)?;
let base64 = general_purpose::STANDARD.encode(&bytes);
Ok(format!("data:image/jpeg;base64,{}", base64))
// React側
<img src={base64DataUri} alt="screenshot" />

ネイティブ ドラッグ&ドロップ

個人的に一番こだわった機能です。ギャラリーの画像をSlack・Discord・Finderへそのままドラッグ&ドロップできます。Tauriの startDrag APIを使い、macOSのネイティブなドラッグセッションを開始します。

「ファイルを探してドラッグ」ではなく「ギャラリーから直接ドロップ」で済むのは、毎日使うと体感が大きく違います。

Wi-Fi接続モード

USB接続で一度ペアリングした後、同じネットワーク内であればWi-Fiでも接続できます。ADB over TCP/IPを使っており、ケーブルなしでも自動転送が続きます。

adb tcpip 5555
adb connect 192.168.x.x:5555

スタック

レイヤー 技術
バックエンド Rust
フロントエンド React + Framer Motion
フレームワーク Tauri
ADB通信 exec-out / TCP/IP
設定永続化 tauri-plugin-store
画像変換 Rustの画像処理クレート

おわりに

Tauri + Rust でmacOSアプリを作る体験は非常に良く、特にADBとの低レベルな連携をRustで書けるのが気持ちよかったです。「スクショをMacに持ってくる」という超ニッチな課題ですが、毎日使う人には確実に刺さるツールだと思っています。

興味あればぜひ使ってみてください🐤

Hiyoko Shot は¥1,000 / $7の買い切りです。

AndroidからMacへの写真バックアップ、もう「どこまで送ったっけ」と悩まなくていい

旅行から帰るたびにやってた。

AndroidをMacにつないで、どこまでバックアップしたかわからないから全部送る。重複する。また全部送る。

これ、ずっとモヤモヤしてたので自分で解決するアプリを作りました。

🐤 Hiyoko Sync

https://hiyokoko.gumroad.com/l/HiyokoSync

転送済みのファイルは二度と送らない差分同期アプリです。

ケーブルをつなぐだけで自動で同期が始まって、新しいファイルだけを検出して転送してくれます。2回目以降はほぼ一瞬で終わります。

こんな方におすすめ

  • 旅行後の写真バックアップをもっと楽にしたい
  • 毎回「どこまで送ったっけ」と悩んでいる
  • 重複ファイルで容量を無駄にしている
  • 大切なファイルを誤って上書きしたくない

使い方はシンプル

  1. ケーブルでAndroidとMacをつなぐ
  2. 自動で同期が始まる
  3. 新しいファイルだけ転送される
  4. 終わり🐤

安心の設計

  • 上書きしない:同名で中身が違うファイルがあれば必ず確認ダイアログが出る
  • 重要フォルダを守る:システムフォルダへの書き込みはアプリレベルでブロック
  • 履歴が残る:いつ何を転送したかCSVでエクスポートできる

価格

  • 🎉 アーリーバード $10(通常$12)・2週間限定
  • 買い切り(サブスクなし)
  • 30日間返金保証・理由不問

https://hiyokoko.gumroad.com/l/HiyokoSync

同じ悩みを持つ方に届いたら嬉しいです!🐤

バグ報告・ご要望:

🐤 AndroidとMacのファイル転送アプリ「Hiyoko MTP」もあります → https://hiyokoko.gumroad.com/l/HiyokoMTP

AndroidとMacの同期問題をRustの差分エンジンで解決した話【個人開発・Mac専用】

なぜ作ったのか

旅行から帰って、AndroidからMacに写真をバックアップしようとした。

前回バックアップしたのはいつだっけ?どこまで送ったっけ?

わからないから全部送る。重複する。容量が無駄になる。また全部送る……

こんな経験、ありませんか?

  • 「どこまでバックアップしたかわからなくて、毎回全部送り直している」
  • 「同期ツールを使ったら、操作ミスで大切なフォルダが丸ごと消えた」
  • 「数百枚の写真を送ったら、半分は既に持っていたファイルだった」

「転送済みファイルは二度と送らない。それだけに特化したツールを作ろう」 と決意し、開発が始まりました。

作ったもの

Hiyoko Sync — Mac専用のAndroid差分同期アプリです。

https://hiyokoko.gumroad.com/l/HiyokoSync

30日間・理由不問で全額返金します。

主な機能

核心は差分検出エンジンです。ファイルサイズと更新日時を比較し、新しいファイルだけを転送します。

  • 差分検出エンジン:転送済みファイルは自動スキップ
  • 複数ジョブ管理:「写真→Mac」など複数の同期ルールをワンクリックで一括実行
  • DCIMモード:カメラフォルダ全体をワンクリックでMacにバックアップ
  • 接続時自動同期:ケーブルを挿すだけで同期開始
  • 競合解決ダッシュボード:転送前に必ず確認。アプリが勝手に上書きしない
  • システムパス保護:~/Library、~/.ssh への書き込みをアプリレベルでブロック

動作環境

  • macOS 13 Ventura 以降
  • Intel Mac / Apple Silicon(Universal Binary)
  • Android 10〜16

技術スタック

技術 用途
Rust 差分検出エンジン・MTPスタック
Tauri デスクトップアプリ化
React UI
nusb Rust製USBライブラリ・IOKit直接呼び出し
Tokio 非同期ランタイム

libmtp → nusbへの乗り換え

libmtpはLinux向けに設計されており、macOSではUSBデバイスの掴み方が根本的に違います。nusbはRustネイティブでIOKitを直接呼ぶため、認識問題が解決しました。

MTPのタイムスタンプ問題

転送後にタイムスタンプがリセットされる問題に対して、ファイルサイズを主キー、更新日時を副キーとして扱うことで再転送ループを防いでいます。

ロードマップ

機能 v1 v2
片方向同期
双方向同期
スケジュール・自動同期

使ってみてください!

  • 🎉 アーリーバード $10(通常 $12)・2週間限定
  • 買い切り・30日間返金保証

https://hiyokoko.gumroad.com/l/HiyokoSync

バグ報告・ご要望:

🐤 Hiyoko MTPはこちら → https://hiyokoko.gumroad.com/l/HiyokoMTP

MTPの不安定さをRustのマルチスレッドで殴り倒した話【個人開発・Mac専用】

深夜、AndroidとMacをケーブルでつないだ。認識しない。ケーブルを変えた。再起動した。それでも認識しない。

こんな経験、ありませんか?

・転送が途中で止まる → 再起動しても同じ ・数GBのファイルを送ったら20〜30分かかった挙句、途中で失敗して最初からやり直し ・同期ツールで操作ミスをして、大切なフォルダを丸ごと削除してしまった

最後の体験が決定打でした。「転送に特化した、シンプルで信頼できるツールを自分で作ろう」と決意し、このアプリの開発が始まりました。

━━━━━━━━━━ 作ったもの ━━━━━━━━━━

Hiyoko MTP — Mac専用のAndroidファイル転送アプリです。

https://hiyokoko.gumroad.com/l/bwfmdk

30日間・理由不問で全額返金します。「デバイスが認識しなかった」「速度が思っていたのと違った」でも構いません。まず試してみてください。

━━━━━━━━━━ 主な機能 ━━━━━━━━━━

核心は多重レーン転送エンジンです。あとは「あったら便利」を詰め込みました。

【ファイル管理】
・多重レーン転送エンジン:Rustの並行処理で転送待機時間を大幅削減
・デュアルペイン:MacとAndroidを並べて直感的に操作
・ドラッグ&ドロップ:Finderからそのままドロップ
・4GB超えファイル対応:4K動画も安定転送
・衝突解決ダイアログ:Skip / Overwrite / Keep Both を個別に選択
・Smart Resume:転送済みの同名ファイルはサイズ照合で自動スキップ
・バッチリネーム:Replace Text/Add Text/Formatの3モード
・Priority Strategy:Small Files優先/Large Files優先/Sequential
・自動リトライ:失敗タスクを個別・一括でリトライ

【転送モード】
・Turbo:最速、タイムスタンプ更新。とにかく速く送りたいとき
・Balanced:中速、タイムスタンプ維持。通常使用
・Safe(1 Lane):低速、タイムスタンプ維持。大切なファイル

迷ったらBalancedを使ってください。

━━━━━━━━━━ 動作環境 ━━━━━━━━━━

・macOS 13 Ventura 以降
・Intel Mac / Apple Silicon(Universal Binary)
・Android 11〜16

━━━━━━━━━━ 技術スタック ━━━━━━━━━━

・Rust:転送エンジン・nusb連携
・Tauri:デスクトップアプリ化
・React:UI ・nusb:Rust製USBライブラリ
・IOKit直接呼び出し
・Tokio:非同期ランタイム

既存ツールの不安定さの根本原因は、MTPプロトコルをシングルスレッドで処理していることにありました。Rustの並行処理を使い転送キューをスレッドごとに分離することで、「1ファイルの失敗が全体をブロックしない」構造を実現しています。

━━━━━━━━━━ リリースして気づいたこと ━━━━━━━━━━

個人開発のリリース作業は、開発より大変でした。

Gumroadの本人確認でマイナンバーカードが何度撮っても弾かれ続け、深夜にライトを持ってきて撮影する羽目になりました笑。原因はGumroadに登録していた氏名がローマ字なのに、マイナンバーカードは漢字だったという単純なミス。深夜に気づいて脱力しました。

━━━━━━━━━━ 使ってみてください! ━━━━━━━━━━

🐤 Hiyoko MTP https://hiyokoko.gumroad.com/l/bwfmdk

・買い切り $20 ・30日間返金保証・理由不問 ・バグ報告(日本語):https://forms.gle/cEDCJScbarfEcnHU8

同じ悩みを持つ方に届けば幸いです!🐤