- CLI
- 0.2.17
- プレビュー ref
- a2c45c8
「デスクから離れているとき」に繰り返し出てくる問いがあります。
何が変わった?
「理想的なアーキテクチャは?」ではありません。
「次に何をリファクタリングすべき?」でもありません。
ただ、何が、どこで変わったのか、そしてそれを信頼できるのか、です。
これが出てくるのは:
- チームメイトからリグレッションについて連絡が来たとき
- 何日も見ていないブランチで CI が失敗したとき
- リリースの途中にいるとき
- 少し前の自分の変更をレビューしているとき
答える方法が「パソコンにリモートデスクトップで入る」しかないと、たいてい後回しになります。
このガイドでは、「最近のコミットをレビューする」ことをスマホから可能にするワークフローを紹介します。
よくある方法とトレードオフ
- SSH: さっとコマンドを打つには良いですが、スマホで差分を目で見てレビューするには向きません。
- リモートデスクトップ: 使えますが、重くて気が散ります。
- Git ホスティングのアプリ: 変更がすでに PR になっているなら良い選択です。 でも、どこでホストされているかに関係なく(あるいはプッシュする前に)、パソコン上のリポジトリをレビューしたいこともあります。
動くワークフロー
このワークフローでは、リポジトリを持つパソコンに対してリモート UI を使います。
Happier は、この方法に対応する選択肢の1つです。
Happier のセッションはどれも、パソコン上のリポジトリのフォルダに紐づいています。スマホでは、セッションの Git タブで次のことができます。
- コミット履歴を見る
- コミットを開いて差分をレビューする
履歴と差分を見るだけなら、実験的な 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) リポジトリのフォルダでセッションを開く
リポジトリで動いているセッションを開くか、リポジトリのフォルダを作業ディレクトリにしてセッションを始めます。
2) Git タブの履歴を開く
セッションの中で:
- Git タブを開く。
- コミット履歴を開く。
次が表示されます。
- 最近のコミット(Recent commits)
- さらに読み込む(Load more commits)操作
3) コミットを開いて差分をレビューする
スマホでのシンプルなレビューループ:
- 最新のコミットを開く
- コミットメッセージ(意図)をざっと読む
- リスクが高そうなファイルを先に開く
- 決める:「問題なし」か「フォローが必要」か
「なぜこうなった?」が知りたいときは、履歴から次に移動できます。
- 現在の作業ツリーの 変更されたファイル(Changed files)
4) コンテキストが必要ならファイルタブを使う
履歴は、何が変わったかを教えてくれます。
ときには「このファイルは何?」というコンテキストも必要です。
そんなときは次を開きます。
- ファイル(Files)
検索してファイルを開き、読んで、戻ります。
5) フォローの判断をする
レビューのワークフローの多くは、行動で終わらないせいで失敗します。
スマホからできる便利な行動:
- レビューコメントを残す
- 変更の理由を1段落で説明してもらう
- 小さな修正をキューに入れる
- または「これで問題ない」と決めて次に進む
ターミナル(任意)
埋め込みターミナルが使える場合、セッションに ターミナル(Terminal)タブが表示されます。機能一覧(英語)によると実験的な機能です。
単発のコマンド(git show、git grep など)に使い、ふだんのワークフローは UI 中心のままにしましょう。
よくある質問
変更されたファイルを見るだけでなく、履歴を使うのはなぜですか?
変更されたファイルが答えるのは:「この作業ツリーで、今何が変更されている?」
履歴が答えるのは:「時間をかけて何が起きた?」
どちらも役立ちます。答える問いが違うのです。
どこまでさかのぼれますか?
さらに読み込む を使います。
マージコミットに差分は表示されますか?
素の Git では、特定のマージ差分の形式を指定しない限り、マージコミットに差分が表示されないことがよくあります。
マージをレビューするなら、何を確認したいか(first-parent の表示か、結合された差分か)をいつも以上に意識しましょう。(出典: https://git-scm.com/docs/git-log)
GitHub にプッシュしなくてもコミット履歴をレビューできますか?
はい。
それがセッションベースのワークフローの中心的な利点の1つです。すでにプッシュしたものだけでなく、パソコン上にあるものをレビューできます。
よくある大きな失敗は?
ホストのパソコンがオフラインになることです。
リポジトリのマシンを安定してオンラインに保てないなら、どんなスマホのワークフローも安定しているとは感じられません。
「この2つの時点の間で何が変わったか」にスマホからどう答えますか?
実用的な方法は2つです。
- 履歴 で2つのコミットを開き、それぞれの差分を1つずつレビューする。
- 本当に「A…B を比較する」差分が必要なら、ターミナル で単発の
git diff <a>..<b>を使う。
ターミナルは非常口として扱います。便利ですが、既定の手段ではありません。
「このバグを入れたコミット」をどう探しますか?
スマホからなら、たいてい次が近道です。
- 怪しいファイルから始める
- それに触れた最近のコミットをざっと見る
- 小さな範囲に絞り込む
本格的な bisect が必要なら、それはふつうキーボードの仕事です。
GitHub にないリポジトリのコミット履歴もレビューできますか?
はい。
セッションは、パソコン上のフォルダに対して動きます。
そのフォルダが Git リポジトリなら、GitHub、GitLab、セルフホストのリモートでホストされていても、どこにもホストされていなくても、履歴をレビューできます。
履歴は読み取り専用ですか?それともそこから変更できますか?
履歴はレビューのための画面です。
何かを変えたいと決めたら:
- ファイル を開いて編集する
- それから Git タブでレビューしてコミットする(コミットは実験的な Git の書き込み操作で、既定ではオフ)
スマホでコミットメッセージが途中で切れるのはなぜですか?
UI に収める必要があるからです。
コミットメッセージが切れていたら、次のサインとして受け止めましょう。
- コミットの詳細をタップして開く
- メッセージよりも差分を頼りにする
大きな変更セットを、流れを見失わずにレビューするには?
スマホ向けのコツ:
- まず上位 1〜3 個の「リスクのあるファイル」(認証、設定、マイグレーション、ロックファイル)だけをレビューする
- 見直してほしい点にはレビューコメントを残す
- 判断したらやめる
スマホで 200 個のファイルを完璧にレビューしようとすると、時間を使ったうえに見落としも出ます。
このワークフローで AI エージェントが変えた内容をレビューできますか?
はい。とても相性の良い使い方です。
長いセッションが昨日変更を加えたなら、次に何をするか決める前に、履歴 が「実際に何が入ったか」に答えてくれます。
代わりにリポジトリのホスティングアプリを使うべきなのはいつですか?
変更がすでに PR になっているなら、ホスティングアプリが良い選択になりえます。
Git タブの履歴が合うのは:
- 変更がまだプッシュされていない
- 自分のローカルのコミットをレビューしている
- リポジトリがどこでホストされていても同じワークフローを使いたい