スマホからパソコン上のファイルを編集する
リポジトリを参照し、ファイルを検索し、ピンポイントで編集して、差分を確認してからコミットする実践的なワークフロー。リモートデスクトップは使わず、すべてスマホから行います。
- CLI
- 0.2.17
- プレビュー ref
- a2c45c8
目標は「スマホで開発する」ことではありません。
目標はもっと狭いものです。
- 設定値を1つ直す
- README の1行を調整する
- パスを更新する
- フィーチャーフラグを切り替える
これらをスマホから、リポジトリはパソコンに置いたまま行います。
本当につらいのは入力ではないからです。
デスクから離れた瞬間、ファイルへのアクセスが中途半端な選択肢の寄せ集めになることがつらいのです。
このガイドでは、スマホからの「ピンポイントの編集1回」を安心して行えるワークフローを紹介します。
トレードオフ(意図して選ぶために)
「iPhone からリモートでファイルを編集したい」と言うとき、たいていは次のどれかを指しています。
- SSH とターミナルエディタ(vim/nano)
- リモートデスクトップ(画面共有)
- リモートフォルダを iOS のファイルアプリにマウントする
- リポジトリをスマホにクローンする(モバイル Git クライアント)
どれも使えます。
問題は、自分にとってどれがより失敗しにくいかです。
よくある方法とトレードオフ
- スマホからの SSH: 技術的には問題ありませんが、快適な編集ワークフローではありません。小さなターミナルで本格的な作業をすることになります。
- リモートデスクトップ: 特にモバイル回線では重く、操作も面倒です。日常のワークフローではなく、非常用の手段です。
- iOS のファイルアプリへのフォルダのマウント: 魅力的ですが壊れやすい方法です。 隠しファイル、権限、ツールの前提などで、おかしな状態になりがちです。
- スマホ上のモバイル Git クライアント: iPad 中心のワークフローなら、とても良い選択です。 iOS では Working Copy が代表例です。
ただ、どれもここで大事な組み合わせを満たしません。
パソコンが正となる情報源のままで、ファイル、差分、コミットのための使いやすいスマホ UI がある。
動くワークフロー
このワークフローでは、リポジトリを持つパソコンに対してリモート UI を使います。
Happier は、この方法に対応する選択肢の1つです。
Happier のセッションはどれも、いずれかのパソコン上のフォルダに紐づいていて、セッションからそのフォルダを直接扱えます。スマホでは、セッションはモバイルのコックピットで開き、次のタブがあります。
- ファイル(Files): 参照、検索、アップロード、ダウンロード、プレビュー
- 小さなピンポイントの編集のための埋め込みエディタ(設定(Settings)→ 機能(Features)→ 埋め込みファイルエディタ(Embedded file editor) で既定でオン)
- Git: 変更ファイル、差分、コミット、プル/プッシュ、履歴
トレードオフ: パソコンはオンラインである必要があります。
Happier を初めて使う場合(概要と入手方法)
Happier を初めて見る方へ。Happier はオープンソースのコンパニオンアプリ(モバイル/Web/デスクトップ)で、ワークフローは信頼できるパソコンに置いたまま、スマホから管理できます。
セットアップ:
- スマホから Happier を使う方法
- GitHub: https://github.com/happier-dev/happier
- インストール/ダウンロード: https://github.com/happier-dev/happier#how-it-works
- Discord(コミュニティとサポート): https://discord.gg/W6Pb8KuHfg
手順: スマホからパソコン上のファイルを編集する
1) リポジトリのフォルダでセッションを開く
リポジトリで動いている既存のセッションを開くか、新しいセッションを始めて、作業ディレクトリとしてパソコン上のリポジトリのフォルダを選びます。
ここから先は、スマホ上のコピーではなく、パソコン上のフォルダを扱います。セッションが非アクティブでもパソコンがオンラインなら、Happier はファイルを読み込めます。
2) 「ファイルだけ見たい」ときはファイルタブを使う
セッションで ファイル(Files)タブを開きます。
スマホでの編集に効く機能は3つです。
- 検索(ツリーをスクロールしなくて済む)
- ダウンロード/アップロード(何かを移したいとき)
- 「ピンポイントの編集1回」に十分なエディタ
次のラベルの検索バーがあれば:
- ファイルを検索...(Search files...)
積極的に使いましょう。
スマホでは移動にコストがかかります。検索がそれを取り戻してくれます。
3) できるだけ小さく編集する
目的のファイルを開きます。
前に進むための最小限の編集をします。
それから次を押します。
- 保存(Save)
深みにはまりそうだと気づいたら、次を押します。
- キャンセル(Cancel)
良いスマホのワークフローは「全部やる」ことではありません。
「止まらないための 10% をやる」ことです。
4) 変更内容を確認する(自分の記憶を信じない)
保存したら、次に切り替えます。
- Git タブとその変更ファイル
そしてファイルの差分を開きます。
リポジトリが大きいと、次のように表示されることがあります。
- 大きな差分を検出しました(Large diff detected)
これは、編集を小さく保つべきだというサインです。
5) 決める: 残す / 戻す / コメント / コミット
スマホで編集するたびに、はっきり決めましょう。
- 残す: 正しい。
- 戻す: 違うところが変わった。
- レビューコメントを残す: エージェント(または後の自分)がピンポイントで変更すべき。
- コミットする: それだけで完結した改善。
コミット、プル、プッシュは Git の書き込み操作です。Git のドキュメント(英語)によると、これらは 設定(Settings)→ 機能(Features)→ バージョン管理操作(Source control operations) の下にあり、実験的で既定ではオフです。0.2.12 以降、レビューでコミットするファイルを正確に選べるので、スマホでの編集をエージェントの他の変更と一緒にコミットせずに済みます。
コミットするときは、次が表示されます。
- コミットメッセージ(Commit message)
- コミット(Commit)
コミットはわかりやすく正直に保ちましょう。
6) プッシュする(自信があるときだけ)
Git タブでは次を使えます。
- プル(Pull)
- プッシュ(Push)
役立つルール:
- プルはいつでも
- プッシュは差分をざっと確認してから
次のように表示されたら:
- Operation requires a clean working tree.(作業ツリーがクリーンである必要があります)
そのとおりにしましょう。
提案ではありません。
実例(スマホから編集する価値があるもの)
「スマホ向きの編集」:
- フィーチャーフラグや設定定数の更新
- 壊れたリンクの修正
- バージョン固定の調整
- 環境変数名の変更1つ
- 今後の作業を進めるための TODO の追加
「スマホ向きでない編集」:
- 大規模なリファクタリング
- マイグレーション
- 複数ファイルにまたがる一括リネーム
不可能だからではありません。
いつものツールから離れていると、気づかないうちに間違えやすいからです。
ターミナル(任意)
本当にターミナルが必要なときもあります。
埋め込みターミナルが使える場合、セッションには ターミナル(Terminal)タブも表示されます。機能一覧(英語)によると実験的な機能で、接続済みのデーモンと到達可能なマシンが必要です。
最後の手段として扱いましょう。
- ファイル、差分、コミットは UI で
- ターミナルは UI にないコマンドが必要なときだけ
何でもターミナルでやるなら、「スマホからの SSH」の問題を再現しているだけです。
よくある質問
モバイル Git クライアントを使えばいいのでは?
リポジトリをスマホに置きたいなら、そのとおりです。
Working Copy のようなモバイル Git クライアントはとても良いものです。
このガイドは「リポジトリはパソコンにあって、リモートで編集とレビューをしたいだけ」という場合のためのものです。
IDE の代わりになりますか?
いいえ。
代わりになるのは、焦る瞬間です。
「今すぐ1つだけ変えたいのに、デスクから離れている」
これは別の仕事です。