|
| 1 | +# メールアドレスの秘匿 |
| 2 | + |
| 3 | +ここからはあなたの Git デビューに黒歴史を作らないための老婆心みたいな章立てです。Git の操作としてはここまでの章ですでに十分ですが、Gitea や GitHub の公開リポジトリで作業をする際にぜひ覚えておいてほしいことを書いています。 |
| 4 | + |
| 5 | +## Git とメールアドレス |
| 6 | + |
| 7 | +Git では、開発に関わった個人を見分ける ID としてメールアドレスの文字列それ自体が使われています。[必要なツール](/text/chapter-1/requirements.html#git-の設定) の Git の設定にてターミナルに打ち込んだメールアドレスです。 |
| 8 | + |
| 9 | +リポジトリにおけるコミットやその他の操作の履歴にはこのメールアドレスが埋め込まれ、リポジトリが公開されている場合はアドレスも公開されます。ただし、Git やホスティングサービスによってこのアドレスに自動的に何かが送られてくることはありません。 |
| 10 | + |
| 11 | +:::tip コミットの埋め込み情報 |
| 12 | +何かのリポジトリ(たとえば [traQ-S_UI](https://github.com/traPtitech/traQ_S-UI))をローカルにクローンしてきて、そこでターミナルを開いて以下を実行してみましょう。 |
| 13 | + |
| 14 | +```sh |
| 15 | +git log |
| 16 | +``` |
| 17 | + |
| 18 | +すると、歴代のコミットに付属する「コミットハッシュ」「作者の名前とメールアドレス」「作成日時」「コミットメッセージ」などの情報が以下のようなフォーマットで表示されます。 |
| 19 | + |
| 20 | +``` |
| 21 | +commit aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
| 22 | +Author: kitsne <[email protected]> |
| 23 | +Date: Sat Jan 1 12:00:00 2100 +0900 |
| 24 | +
|
| 25 | + fix: このコミットメッセージはサンプルです |
| 26 | +``` |
| 27 | + |
| 28 | +`git log` の表示は Q キーを押すことで中断できます。このように、コミットに埋め込まれる作者名やメールアドレスなどの情報は公開リポジトリならば誰もが容易に閲覧できます。 |
| 29 | +::: |
| 30 | + |
| 31 | +一度コミットに埋め込まれたメールアドレスはあとから抹消することが非常に困難です。従って、公開リポジトリに不用意にメールアドレスを埋め込むのはリスクと言えます。もちろん、リスクを弁えた上でメールアドレスの公開設定を変更しない人もいます。 |
| 32 | + |
| 33 | +:::info メールアドレスが ID だった時代 |
| 34 | + |
| 35 | +それぞれのメールアドレスは世界的にユニークであることが保証されているので、かつては個人を表す ID として公開・使用するのが一般的だったようです。コミットにメールアドレスが埋め込まれる仕様になっているのもそのときの慣習の名残といえます。 |
| 36 | + |
| 37 | +[SSH キーの登録](/text/chapter-1/gitea-ssh.html#ssh-%E3%82%AD%E3%83%BC%E3%81%AE%E7%94%9F%E6%88%90) において SSH キーを生成するにあたり、ユーザー名を用いて以下のコマンドを実行していただきました。 |
| 38 | +```sh |
| 39 | +ssh-keygen -t ed25519 -C ユーザー名 |
| 40 | +``` |
| 41 | + |
| 42 | +この「ユーザー名」にあたる部分にもメールアドレスを記述する文化が今も一般的です。この部分は公開鍵の末尾に単にラベルとして含まれるテキストであり、技術的にはなんでもよく、メールアドレスである必要はありませんが、2025 年現在の [GitHub Docs](https://docs.github.com/ja/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) にもユーザー名の部分にメールアドレスを記述して SSH キーを生成するコマンド例が載っています。 |
| 43 | + |
| 44 | +しかしながら、現代ではメールアドレスが果たす ID としての役割は薄れ、むしろ不用意にさまざまな場所にメールアドレスを書くことがスパムや持ち主の再識別のリスクを高めています。そのため、この講習会は不要なメールアドレスの記入を避ける手順になっています。 |
| 45 | +::: |
| 46 | + |
| 47 | +## メールアドレスの秘匿 |
| 48 | + |
| 49 | +メールアドレスを公開したくないというニーズに応えるため、traP Gitea や GitHub は各ユーザーにダミーのメールアドレスを提供しています。コミットメールアドレスをこれに変更することで、個人的に使っているメールアドレスの公開を避けつつ Gitea アカウントとコミットをしっかりと紐づけることができます。 |
| 50 | + |
| 51 | +Gitea でダミーのメールアドレスを利用する方法を説明します。[プロフィール設定](https://git.trap.jp/user/settings) のページを開き、「メールアドレスを隠す」チェックボックスを見つけてチェックを入れてください。 |
| 52 | + |
| 53 | + |
| 54 | + |
| 55 | +ここにポインターをかざすと、上のような表示が出てきます。要は、あなたの個人的なメールアドレスではなく `ユーザー名@trap.jp` という無効なメールアドレスを用いてもよい、ということです。このアドレスはメールアドレスとしては機能しておらず、実際にメールを送りつけることはできません。 |
| 56 | + |
| 57 | +次に、ここに表示されているメールアドレスで Git を設定し直します。[必要なツール](/text/chapter-1/requirements.html#git-%E3%81%AE%E8%A8%AD%E5%AE%9A) の章で実行したコマンドの「メールアドレス」をダミーメールアドレスで置き換えたものです。 |
| 58 | + |
| 59 | +```sh |
| 60 | +git config --global user.email ユーザー名@trap.jp |
| 61 | +``` |
| 62 | + |
| 63 | +これで Git リポジトリを扱う際にはあなたの個人用メールアドレスではなくダミーメールアドレス `ユーザー名@trap.jp` が活用されるようになりました。あなたの個人用メールアドレスは今後コミットに埋め込まれることがなくなります。ただし、すでに埋め込まれてしまったメールアドレスを抹消・置換することは困難です(不可能とは言いませんが…)。一度でも公開リポジトリで作業をする前にこの章を追っておくと安心ですね。 |
| 64 | + |
| 65 | +## traP と GitHub 公開リポジトリ |
| 66 | + |
| 67 | +ダミーメールアドレスの設定は、どちらかといえばあなたが traP Gitea ではなく GitHub で活動していく上でとても大切な設定です。なぜなら、traP Gitea のリポジトリは公開範囲が部内に限られる一方、GitHub の公開リポジトリは文字通り全世界に公開されているからです。 |
| 68 | + |
| 69 | +traP では、毎年 6 月から 7 月にかけて、主に新入 SysAd 班員を対象として [QSoC](https://q.trap.jp/channels/team/SysAd/QSoC) という自由参加のイベントが開かれます。このイベントは traQ などの traP 内製サービスの開発に貢献してみようという趣旨のものです。 |
| 70 | + |
| 71 | +traQ をはじめとする traP SysAd 班のサービスは全て GitHub 上で管理されており、ほとんどが一般に公開されています。従って、QSoC に参加する際は GitHub のアカウントを作成し、一般に公開されたリポジトリに貢献の足跡を残すことになります。SysAd 班での活動を考えているなら GitHub の公開リポジトリ上での開発は日常的なものになります。 |
| 72 | + |
| 73 | +:::tip traP Gitea が活用される場面 |
| 74 | + |
| 75 | +GitHub は CI/CD など開発に関する機能が多くて何かと便利なのですが、大きいファイルのアップロードに関する制約が多く、ゲーム開発に用いるには適さないことがあります。このため、ゲーム班やプロジェクトの活動ではしばしば Gitea にリポジトリが置かれています。 |
| 76 | + |
| 77 | +また、部外に公開すべきでない情報を扱う際も Gitea が用いられることがあります。たとえば traP のサークル規約の原本、役員会に関係する資料、合宿のしおりなどは Gitea に置かれています。 |
| 78 | +::: |
| 79 | + |
| 80 | +そのため、GitHub で同様にダミーのメールアドレスを利用する方法についてもここで説明しておきます。まだ GitHub のアカウントを持つ予定がなければ、ここは飛ばして大丈夫です。 |
| 81 | + |
| 82 | +GitHub の [E メールの設定](https://github.com/settings/emails) を開き、**Keep my email addresses private** にチェックを入れます。その下の **Block command line pushes that expose my email** にもチェックを入れておくと、ダミーでないメールアドレスでコミットのプッシュを試みたときにブロックしてくれます。 |
| 83 | + |
| 84 | + |
| 85 | + |
| 86 | +あとは同様に `git config` コマンドでメールアドレスを適用させればよいです。 |
| 87 | + |
| 88 | +あなたがもし GitHub アカウントを作った時は、真っ先にこの設定を有効にすることをおすすめします。「別にメールアドレスを埋め込むくらい大した問題じゃないでしょー」と思うなら、そう思えるくらい Git について理解を深めたときに戻すのでもよいでしょう。 |
| 89 | + |
| 90 | +:::warning GitHub と Gitea の設定の両立 |
| 91 | + |
| 92 | +Gitea のダミーアドレスの設定と GitHub のダミーアドレスの設定は競合します。たとえば、GitHub のダミーアドレスを `git config` でグローバルに設定すると、traP Gitea 側でコミットのメールアドレスからユーザーを特定できず、以下のようにアイコンが正しく表示されなくなります。 |
| 93 | + |
| 94 | + |
| 95 | + |
| 96 | +コミットのメールアドレスの設定は、グローバルに効かせるほか、それぞれのリポジトリに対して個別で効かせることもできます。GitHub と Gitea のうちどちらか一方をメインで使っていく場合には、多く使う方のダミーアドレスをグローバルに設定しておいて、あまり使わない方のリポジトリには個別でローカル設定を書いておくとよいでしょう。 |
| 97 | + |
| 98 | +```sh |
| 99 | +git config user.email ダミーメールアドレス # --global をつけない |
| 100 | +``` |
| 101 | + |
| 102 | +GitHub と Gitea のどちらもよく使うようになった時は `~/.gitconfig` の内容を直書きし `includeIf` を用いて設定を分岐させる方法がおすすめですが、発展的な内容になるので割愛します。詳しいことは [#event/workshop/git/sodan](https://q.trap.jp/channels/event/workshop/git/sodan) や [#random/sodan](https://q.trap.jp/channels/random/sodan) などで質問すると教えてもらえるはず。 |
| 103 | +::: |
0 commit comments