ひとり開発でも、GitHubおいぼれになって、やっと腑に落ちた
リポジトリという言葉すら怪しく、commit・push・pull は呪文だった。バックアップのつもりで長年GitHubを使い、開発はいつも同じ一台。二台目を持ち歩きたくなって、ようやく同期の意味が腑に落ちた話。
少し、コーヒーブレイクの話をしよう。
白状すると、つい先日まで「リポジトリ」という言葉すら、よく分かっていなかったのである。
commit、push、pull。画面のボタンには出てくる。それが何をしているのかはずっと霧の向こうで、押せば何か起きる呪文のようなものだった。むにゃむにゃと唱えると、たぶん保存される。そういう扱いである。
この年になって、やっとその霧が晴れた。晴れてみれば実にあっけない話で、そのあっけなさも含めて書き留めておきたい。
バックアップのつもりで押していた
GitHub 自体は、ずっと前から使ってはいた。理解して使っていたわけではない。消えたら困るから、どこかに置いておこう。 早い話がバックアップである。作業がひと区切りついたら、よく分からないままボタンを押す。エラーが出なければ、たぶん保存された。押した。よし。以上。そういう付き合い方だ。
それで困らなかったのには理由がある。開発はいつも同じ一台(MacStudio M1 Max・2022)でやっていたからだ。書くのも、直すのも、動かすのも、全部この机の上。GitHub はただの念のためのコピー先で、そこから何かを取り戻す必要が一度もなかった。送る一方(push)で用が足りていたのである。
だから pull の出番がない。出番がないから意味も知らない。知らなくても回る。ひとりで、一台で閉じている限り、人間はいつまでも学ばないのだ。
二台目が現れた日
風向きが変わったのは、まったく技術的でない理由からだった。
ときどき、遠くまで出かけてプレゼンをする。勤め先に命じられた出張ではない。NGW の営業である。自分たちで作った行政システムを、役所の方々に見てもらいに行く。遠方だと日帰りは難しく、ホテルに一泊して帰る。
そして、ホテルの夜は驚くほど暇なのだ。
テレビをつけると知らない土地の知らない祭りをやっている。それを十分ばかり眺めて消す。風呂は熱いかぬるいかのどちらかで、中間がない。窓の外は暗い。まだ九時である。せっかくだからブログでも書こうか、という気になるのは、ごく自然ななりゆきだった。
営業にはノートパソコン(MacBook Air M2・2022)を必ず持って行く。その場でデモ画面を動かして説明するためだ。常に最新の状態を映せるようにしてある、いわば営業用のデモ機である。ならば、と考えた。この MacBook で、移動中やホテルで記事も書けばいい。 書いたものは、帰ってきたら机の MacStudio で続きを見る。同じ記事を、二台の機械で行き来させたい。
ここで私は、ようやく壁にぶつかったのである。
片方で書いたものを、もう片方でどうやって受け取るのか。コピーして持ち歩くのか。USB か。……いや待て、それこそ GitHub の出番ではないか。二十年以上コンピュータで飯を食っておいて、この気づきである。遅い。
これは、CMSを使わない代償だ
考えてみれば、この悩みは CMS を使っていれば起きなかった。WordPress のような CMS なら、ブラウザで管理画面にログインするだけ。記事はサーバの向こうに一箇所だけあって、どの机から書いても同じそこが更新される。持ち歩くファイルなど、どこにもない。
このブログは、あえて CMS を使わない静的な作りを選んだ。その身軽さと引き換えに、記事はファイルとして手元の機械に宿る。だから二台目が現れた途端、二つを揃える段取り——同期——が要る。これは確かに、CMS を使わないことの代償である。
もっとも、その代償を埋める道具が、ほかならぬ GitHub だった。CMS の代わりに Git が真ん中に立つ。手放したはずの「どこからでも書ける」を、ずいぶん遠回りして取り戻したことになる。人は自分で捨てたものを、あとから別の名前で拾いに行く。
必要になって、やっと言葉が意味を持った
二台目が現れた瞬間、GitHub の役割が私の中で書き換わった。バックアップの置き場所から、二台をつなぐ真ん中へ。
そして、あれほど呪文だった三つの言葉が、急に意味を持ちはじめたのである。
- commit(コミット) — 「ここまで」と区切って記録する。日記に日付を打つようなもの。
- push(プッシュ) — その記録を、真ん中の GitHub へ送る。
- pull(プル) — 真ん中の GitHub から、最新を受け取る。
流れにするとこうだ。
MacBook(ホテル) ──push──▶ GitHub ──pull──▶ MacStudio(机)
ホテルで書いて commit して push。帰宅して机で pull。それだけで、昨夜の続きがそこにある。
……たったこれだけのことなのだ。この三行を理解するのに何年かかったのか、考えると少々くらくらする。長年ボタンの上を素通りしていた言葉たちは、使う理由ができて初めてするりと腑に落ちた。知識が先にあって理解したのではない。やりたいことが先にあって、道具の名前が後から意味を持った。順番はいつもそうなのである。
痛い目を見ないためのコツも覚えた。編集を始める前に、まず pull。 両方の机で別々に書き足すと、あとで話が食い違う。触る前に受け取る、終えたら送る。この順番さえ守れば、ひとりの二台はきれいに揃う。
コマンドは暗記、ボタンは目の前
正直に打ち明けるが、私はターミナルが得意ではない。おいぼれプログラマなりに少しは使える。だがその「少し」もコピペが主役である。どこかで見つけたコマンドを貼り付けて、Enter。画面にテキストがすらすら流れていく、あのカッコいい使い方は、いまだに敷居が高い。あれは映画の中の人がやることだと思っている節すらある。
ターミナルの難しさは、突き詰めると覚えていないと何も始まらないところにある。画面はいつも空っぽで、こちらが何をできるのかを教えてはくれない。真っ黒である。知っているコマンドだけが動く世界だ。
その点、エディタ(VSCode)のボタンはありがたい。更新、コミット、同期。できることが目の前に並んでいて、暗記していなくても手が出せる。押せば、さっきの pull や push が裏でちゃんと走る。覚えていないと入れない部屋の扉に、案内板が付いているようなものだ。
仕組みはどちらも同じ Git である。ならば敷居の低いほうから入ればいい。というわけで私は、なんの気兼ねもなくボタンを押す。押す。
ひとり開発でも、GitHub
チーム開発の道具だと思って、どこか自分には関係ないと構えていた。違ったのである。ひとりでも、二台目が現れた瞬間に GitHub は効いてくる。 バックアップとしてだけ使っていたものが、場所を越えて自分自身と作業を受け渡す仕組みに変わる。
出張のホテルで書いた数百文字が、翌日には自宅の画面に当たり前のように載っている。このささやかな地続き感が、思いのほか気持ちいいのだ。前の晩の自分が置いていったものを、翌朝の自分が拾う。ちょっとした文通である。
AIとの協働作業での学び
面白かったのは、言葉を完全に理解してから始めたのではないことだ。「出張に MacBook を持って行って、ホテルでブログを書いて、帰って机で続きを見たい」。やりたいことをそのまま言葉にしたら、リポジトリの共有も同期の段取りも AI と一緒に整っていった。手を動かしながら、commit・push・pull の意味が後から追いついてきた。
もうひとつ。あれこれ覚えなくていい、覚えるのはたったひとつのアクションでいい、と AI が言うのである。
「必ずプルしてね」
これだけは守る。机に向かうときも、ホテルで開くときも、書き始める前にまず pull。あとの commit も push も、やりたいことに押されて自然と手が動く。だが触る前に受け取る、この一手だけは意識していないと抜ける。壁に貼っておきたいくらいだ。
学びは、たぶんこうである。分からない用語の前で立ち止まらなくていい。 やりたいことを具体的に口にすれば、道具のほうが寄ってくる。理解は、必要になった順番に、後からちゃんとついてくる。
……それにしてもだ。二十年以上プログラムを書いてきた男が、この年になって pull の意味に膝を打っている。しかもきっかけが「ホテルの夜が暇だから」である。ずいぶん立派な学びのように書いてきたが、要するに暇だったのだ。技術の習得というのは、案外こういう情けない動機からしか始まらないのかもしれない。