Gitに共有しよう
Gitをインストールしたら、履歴を記録してみよう。君や仲間たちの作品をマージして、他の人たちとシェアしよう。そして、Webサイトを更新しよう。つまり、FabAcademy のWebサイトにね。この中核をなすものはこのUSBメモリに構築されたリポジトリだ。Labに接続したら、リポジトリのクローンを作る。そして、LabとこのUSBメモリの両方に君たちの作品のスタックが出来上がる。そして、それはこのスティックに戻される。君たちは、このスティックに作られたスタックを更新したり、利用したりすることができる。そしてそれは誰でも利用できるようにすることができる。 FabAcademy のWebサイトはまさに、参加する皆がデータの共有に同意したサイトだ。しかも、中央管理されているものではない。これは完全に脱集権化され、完全にpeer-to-peer なシステムだ。君たちはどのリポジトリのどの場所でもアクセスができるし、編集することもできる。これは僕たちがたったひとつのサイトを進化させながら更新していくということでもある。 さて、ここで、またもや犯しがちなミスを列挙してみよう。君たちの中には、毎年のように、そうでなくても、何回かはこれらのミスを犯してしまうだろう。だから、そのミスについて話をさせて欲しい。どんなミスを犯しがちかお教えしよう。
アクセス権について ひとつ目は、すべての設定を終えた時に起こる。動かないんだ。「読み込みできません」的なエラーメッセージを見ることになるだろう。それよりも、Gitは有用なメッセージを表示してくれる。 秘密鍵にアクセス権を与えただろうか?タイトに許可を与えることはできない。そうすると、秘密鍵を周りに知られてしまう状態になる。秘密鍵が公開されている状態はよろしくない。だから、かつて我々がやっていた方法ではあるが、GitへのSSH接続もあまり良くない。君たちはアクセス権の設定を確実にする必要がある。 ファイルがデカすぎる!
あとは、ファイルが大きすぎるという問題だ。君たちはこれから、毎週のように何メガバイトもの情報を生み出していく。君たちは100人くらいいるよね。でもって、この講座は20週続く。つまり、この講座が終わる頃には君たちは数Gバイトのデータを生み出しているだろう。過ちはまさに第1週目に始まる。100Mバイトものコミットを行なってしまうんだ。この主な理由は画像を圧縮しないまま直にチェックインさせてしまうことだ。編集していないデータではなく、君たちの作品に必要なものだけをリポジトリに置くべきだ。そして、リポジトリを圧迫する最も一般的な犯人は増殖した非圧縮の画像ファイルだ。だから、画像ファイルのサイズは確認して欲しい。 ファイルをコミットする前に手軽にサイズ確認する方法は知っているかな?これも、よくある過ちだが、でかいファイルをコミットして、やっちゃった後に、それを良しとしてしまうことだ。「いいよ」って言っちゃう。でも、僕は消すよ。しかし、憶えておいて欲しい!Gitは忘れることなんてできないんだ。なにせ、それこそが大事な仕事の1つだからだね。 あと、自分で大きいファイルを削除しても、履歴が残っていたりする。履歴からファイルを削除することもできることはできるが、大手術になる。何となくじゃできない。決して簡単なことではない。何度も言うが、コミットする前はサイズを確認するんだ! さて、僕たちが利用できる容量には制限がある。プロットサイズについて言えば、10Mバイト程度なら問題はないだろう。さあ、この話題については、もう良いかな。ちゃんと守ってね。
2つの例外 基本的に僕たちはリポジトリ上に君の作品を残していってほしいのだが、2つだけ例外がある。動画はあまりにサイズが大きい。だから、動画配信サイトなんかを使ってほしい。あとはSTLファイルなんかも100Mバイトくらいあるけど、これも君たちは作ることに並ぶ。巨大なファイルは時としてリポジトリの外側に保存されるべき理由がある。しかし、そうでなければ、全てをリポジトリに保存すべきだ。
(つづく)
講義の目次は【和訳版】FabAcademy 2016からご覧ください。
※この記事はFabAcademy 2016 におけるニール・ガーシェンフェルド教授(MIT)による講義動画をもとに作成しました。正確な訳ではないので間違っていたら指摘いただけるとありがたいです。