11= GitでSteins;Gateを解説する
22
3- GitとSteins;Gateは親和性が高いです。
4- それは自分が過去にSteins;Gitという本を書けたことからも分かるでしょう@<fn>{steins-git}。
5- // footnote[steins-git][http://o2project.github.io/steins-git/]
3+ Gitを使ってSteins;Gateの説明をする前にSteins;Gateの目的を書きます。
64
7- ここからはGitやGitHubの機能を使ってSteins;Gateを解説していきます。
8-
9- == Steins;Gateの目的
10-
11- GitをGitHubの開発の流れに沿って使った場合、masterブランチはいつでもリリース可能なものとなります@<fn>{github-flow-japanese}。
5+ GitをGitHub流の開発手法に沿って使った場合、masterブランチはいつでもリリース可能なものになります@<fn>{github-flow-japanese}。
126// footnote[github-flow-japanese][https://gist.github.com/Gab-km/3705015]
13- Steins;Gateはmasterブランチを「シュタインズゲート」バージョンとしてリリース可能にするために岡部倫太郎が試行錯誤し、ブランチ間を@<code>{git checkout}していきます 。
7+ Steins;Gateはmasterブランチを「シュタインズゲート」バージョンとしてリリース可能にするため、岡部倫太郎が試行錯誤してブランチ間を移動します 。
148
15- Steins;Gateは、アトラクタフィールドβから始まりました。これはGitのタグで ` beta` というタグが作られた状態です 。
16- 1.130426 ブランチに岡部倫太郎の「紅莉栖が刺された」というDメールをコミットして電話レンジ(仮)というリモートリポジトリにプッシュしたあと、` alpha` というタグが作られました@<fn>{software-version}。
9+ Steins;Gateは、アトラクタフィールドβから始まりました。これはGitのタグで@<kw>{ beta}タグが作られた状態です 。
10+ 1.130426 ブランチに岡部倫太郎の「紅莉栖が刺された」というDメールをコミットして電話レンジ(仮)というリモートリポジトリにプッシュしたあと、@<kw>{ alpha} というタグが作られました@<fn>{software-version}。
1711// footnote[software-version][ソフトウェアのバージョンはα→β→RC→GAと進んでいきますがSteins;Gateのストーリー上これに依らない流れになっています]
1812これでアトラクタフィールドαへ移動した状態です。
1913
2014Steins;Gate 0 はβ世界線で阿万音鈴羽が岡部倫太郎に対し牧瀬紅莉栖を助けることが世界を助けると教えたところからブランチが分岐した物語となります。
2115Steins;Gateでは、椎名まゆりが岡部倫太郎に対しビンタをして鳳凰院凶真が復活するブランチ(1.130209 )でした。
2216それがSteins;Gate 0 では岡部倫太郎へビンタしようとする阿万音鈴羽を椎名まゆりが止めるブランチ(1.129348 )となります。
2317
24- どちらのブランチも最終目標はシュタインズゲート世界線へ行くことです。
25- つまりmasterブランチへ世界を騙すPull Requestをマージしてシュタインズゲートというタグを作るのが目的となります。
18+ どちらのブランチも最終目標はシュタインズゲートというタグを作ることです。
2619
2720== init
2821
@@ -32,20 +25,20 @@ Gitも@<code>{git init}をターミナル上で実行することにより、任
3225
3326== clone
3427
35- Gitのクローンは既存のセーブデータを別のセーブデータの枠へ保存する行為です 。
36- Steins;Gateシリーズではすでにあるセーブデータを別のセーブデータの枠へセーブできます 。
28+ Gitのクローンは既存のセーブデータを別のセーブデータ枠へ保存する行為です 。
29+ Steins;Gateシリーズではすでにあるセーブデータを別のセーブデータ枠へセーブできます 。
3730Gitも@<code>{git clone}をターミナル上で実行することにより、任意のリポジトリを自分の環境上にコピーできます。
3831
3932== branch
4033
41- Gitのブランチは世界線です。Steins;Gateではそれぞれの世界線で岡部倫太郎などが行動した記録があります 。
42- Gitも同じように各ブランチで各々が作業しコミットした記録が残ります 。
34+ Gitのブランチは世界線です。Steins;Gateでは岡部倫太郎などがそれぞれの世界線で行動した記録があります 。
35+ Gitも同じように各ブランチで作業してコミットした記録が残ります 。
4336
4437== commit
4538
4639Gitのコミットは作業内容のセーブです。Steins;Gateのみならず大半のゲームでは意識する・しないに限らずセーブ機能を備えています。
47- ただゲームの場合はセーブデータの任意の場所へ戻ることができません。Gitの場合はセーブデータの任意の場所に戻る事ができます 。
48- それは「特定のエンディングに進もうとしてセーブしておいたデータに、誤って別のデータをセーブしてしまっても元に戻せる」という事を意味します 。
40+ ただゲームの場合は任意のセーブポイントへ戻ることができません。Gitの場合は任意のコミットへ戻る事ができます 。
41+ それは「特定のエンディングに進もうとしてセーブしておいたデータに、誤って別のデータをセーブしても元に戻せる」ことを意味します 。
4942
5043== checkout
5144
@@ -54,20 +47,22 @@ Gitのチェックアウトは作業内容のロードです。Steins;Gateのみ
5447Gitのチェックアウトはロードした内容が既存のファイルに影響を及ぼさないときのみできます。
5548
5649また世界線変動の機能もあります。特定のブランチを指定した場合はブランチの移動も伴います。つまり世界線変動が起きます。
57- Steins;GateではDメールを送ったときや打ち消したとき、牧瀬紅莉栖が刺された現場を偽装して刺されていないようにしてタイムマシンで帰ったときに世界線変動が起こっています 。
50+ Steins;GateではDメールを送ったときや打ち消したとき、牧瀬紅莉栖が刺された現場を偽装してタイムマシンで帰ったときに世界線変動が起こっています 。
5851Steins;Gate 0 では" 紅莉栖" からの着信を受けたり、手に入れたタイムマシンの情報を元にロシアが時間跳躍をおこなったときに世界線変動が起こっています。
5952
6053== log
6154
62- Gitのログは会話ログです。誰が会話したか、会話の内容はどんなものだったかをいつでも見ることができますが、Gitでも同じように誰がいつどんな作業をしたかを見ることができます。
55+ Gitのログは会話ログです。
56+ Steins;Gateでは誰が会話したか、会話の内容はどんなものだったかをいつでも見ることができます。
57+ Gitでも同じように誰がいつどんな作業をしたかを見ることができます。
6358
6459== tag
6560
6661GitのタグはSteins;Gateだと世界線収束範囲(アトラクタフィールド)です。
6762Steins;Gateの場合はアトラクタフィールドαからアトラクタフィールドβへ変動したときのみタグが作られるのではなく、もうちょっと細かい単位で作られます。
6863
69- たとえばアトラクタフィールドαの中でも0.571024 というブランチから 0.523299 というブランチへ移動したときにタグが作られます 。
70- この状態をタグで表すと @<code>{0.571024 -alpha}と@<code>{0.523299 -alpha}というタグがある状態になります 。
64+ たとえばアトラクタフィールドαの中でも0.571024 ブランチから 0.523299 ブランチへ移動したときにタグが作られます 。
65+ このときタグの状態は @<code>{0.571024 -alpha}と@<code>{0.523299 -alpha}のタグがある状態になります 。
7166
7267Steins;Gateでは世界線変動がおこなわれるたびに次のことがおこなわれています。
7368
@@ -84,39 +79,39 @@ Gitのdiffはダイバージェンスメーターです。Gitのdiffは作業し
8479Gitのdiffは基準となる世界線に対してどれだけ世界線が変動したかを数字でしか見られないダイバージェンスメーターと比較して高機能です。
8580
8681ブランチ間で状況が違うことは多々あります。たとえば大抵の世界線において秋葉原は萌えの街です。しかしフェイリスがDメールを送った場合は電気街になります。
87- そういった分かりやすい変化であれば差分を見るまでもなく変化に気づきますが、漆原るかが女性になったように変化が分かりにくい事象もあります 。
82+ そういった分かりやすい変化であれば差分を見るまでもなく変化に気づきますが、漆原るかが女性になったような変化が分かりにくい事象もあります 。
8883そういったときにブランチ間の差分を簡単かつ詳細に見られるGitのdiffは便利です。
8984
9085== merge
9186
92- GitのマージはDメールやDラインです。Gitのあるブランチに別のブランチをマージした瞬間、そのあるブランチは別のブランチの影響を受けます 。
93- Steins;Gateではマージした瞬間にmasterブランチの状況が変わり、元の世界線の世界線変動率を基としてタグが作られます 。
87+ GitのマージはDメールやDラインです。Gitのあるブランチに他のブランチをマージすると元のブランチにも影響を及ぼします 。
88+ Steins;GateではDメールが送られた瞬間にmasterブランチの状況が変わり、元の世界線変動率を基としてタグが作られます 。
9489タグが作られたあとは、新しいブランチが作られチェックアウトされます。
9590
9691== revert
9792
98- GitのリバートはDメールの打ち消しです。Steins;Gateではアトラクタフィールドβに変動するため、次のように今まで送ってきたDメールを打ち消すDメールを送りました 。
93+ GitのリバートはDメールの打ち消しです。Steins;Gateではアトラクタフィールドβに変動するため、次のように今まで送ってきたDメールを打ち消しました 。
9994
100- * 阿万音鈴羽を尾行せよというDメールに対しては、それは罠だと警告するDメールを送った
95+ * 阿万音鈴羽を尾行せよと示唆するDメールに対しては、罠だと警告するDメールを送った
10196 * フェイリスが送った自身の誘拐を騙ったDメールに対しては、それが冗談であるDメールを送った
10297 * 漆原るかが送った母親に対しての野菜を食べろというDメールに対しては、意味をなさないメッセージでいたずらだと思わせるDメールを送った
10398 * 桐生萌郁が送ったIBN5100は柳林神社にあるというDメールに対しては、FBの携帯から作戦は中止し待機するよう伝えるDメールを送った
10499
105- このようにDメールを打ち消すDメールを送ってきましたが 、Gitでもリバートを使えば指定したコミットでの変更内容をなかったことにできます。
100+ このようにDメールを打ち消しましたが 、Gitでもリバートを使えば指定したコミットでの変更内容をなかったことにできます。
106101
107102== cherry-pick
108103
109- Gitのチェリーピックは劇場版で岡部倫太郎が他の世界線で経験したことをフラッシュバックした現象を指します 。
104+ Gitのチェリーピックは劇場版で岡部倫太郎が他の世界線で経験したことをフラッシュバックした現象です 。
110105Gitのチェリーピックはあるコミットだけを現在のブランチに取り込むものです。
111106
112107Steins;Gate 負荷領域のデジャブでは岡部倫太郎が阿万音鈴羽エンディングにつながる無限サイクリングなどの記憶を突如思い出します。
113- これは岡部倫太郎の記憶の中で無限サイクリングなどの記憶をチェリーピックした状態といえます 。
108+ これは岡部倫太郎の記憶から無限サイクリングなどの記憶をチェリーピックした状態といえます 。
114109
115110== Issues
116111
117112GitHubのイシューは円卓会議です。
118113GitHubのイシューは現在のリポジトリにある問題点や改善したい点を皆で議論することができます。
119- またソフトウェアを象徴するロゴをどうするかなどの議論も時々おこなわれます 。
114+ またソフトウェアの象徴となるロゴをどうするかなどの議論も時々おこなわれます 。
120115さながら岡部倫太郎たちが時間を遡って送れるメールをDメールと名付けた円卓会議に似ています。
121116
122117== Pages
@@ -135,19 +130,19 @@ GitHubのWikiもそのリポジトリの説明ややることを書けます。
135130== Projects
136131
137132GitHubのプロジェクトはオペレーションです。
138- 過去のコミットへさかのぼったまま戻れなくなった椎名まゆりと阿万音鈴羽に現在のHEADのハッシュ値を渡し 、可能ならばHEADに戻ってこさせるオペレーションがあります。
139- それはオペレーション・アルタイルと岡部倫太郎が名付けましたが、GitHubのプロジェクトもそのようにやることに対し名前を付けて一連の作業をおこなうことができます 。
133+ 過去のコミットへさかのぼったまま戻れなくなった椎名まゆりと阿万音鈴羽にHEADのハッシュ値を渡し 、可能ならばHEADに戻ってこさせるオペレーションがあります。
134+ そのオペレーションはオペレーション・アルタイルと岡部倫太郎が名付けました。GitHubのプロジェクトも一連の作業に対し名前を付けられます 。
140135
141136== Pull Request
142137
143- GitHubのプルリクエストは岡部倫太郎以外がDメールやDラインを送る場合に岡部倫太郎に文言を見せる行動を指しています 。
144- 実際の例を出すと、桐生萌郁が「携帯の機種変に失敗したので前の携帯を使い続ける」旨のDメールを送ろうとしたときに 、岡部倫太郎に見せてからDメールを送りました。
145- これは作業内容をコミットしてプッシュした後、他のメンバーに変更点を伝えて何かあればコメントしてもらってからマージする流れと同じです 。
138+ GitHubのプルリクエストは岡部倫太郎以外がDメールやDラインを送る場合、岡部倫太郎に文言を見せる行為です 。
139+ 実際の例を出すと、桐生萌郁が「携帯の機種変に失敗したので前の携帯を使い続ける」旨のDメールを送ろうとしたとき 、岡部倫太郎に見せてからDメールを送りました。
140+ これは作業内容をコミットしてプッシュした後、他のメンバーに変更点を伝えて何かあれば修正してからマージする流れと同じです 。
146141
147142プルリクエストにはその変更が問題ないと承認する機能があります。また変更してほしい場合に変更をリクエストする機能もあります。
148143Steins;Gateで桐生萌郁がDメールを送る直前に文言を差し替えたことは、変更が問題ないと承認されてから変更を加えたことになります。
149144承認されていない変更なのでバグが起きる可能性もあります。実際にSteins;Gateでは世界線変動が起きて、岡部倫太郎の主観からは桐生萌郁が消えたように見えました。
150145なので承認されたあとは何も変更を加えないようにするのが良いと言えます。
151146
152- Steins;Gate 0 の @<kw>{盟誓のリナシメント}では自分自身に向けてDラインという形でPull Requestを送ります 。
153- これをマージした結果、岡部倫太郎は2025 年に過去の自分へ向けて「自分を騙せ、世界を騙せ」とDメールという形でPull Requestする執念オカリンへつながります。
147+ Steins;Gate 0 では @<kw>{盟誓のリナシメント}で自分自身にDラインを送ります。これは自分で自分へPull Requestすることになります 。
148+ これをマージした結果、岡部倫太郎は2025 年に過去の自分へ向けて「自分と世界を騙せ」とPull Requestする執念オカリンへつながります。
0 commit comments