今回は 最近になってGitなどバージョン管理を使い始めたとか、意外に使っていない人が多かったのと 自分が少し必要な知識だったので簡単にまとめてみました。

自分はWEB関連の作業だとほぼ必須なので 以前から使用しているのですが、 GitHubから別のサービスへの移行を考えている人がいたりします

おそらくは6月のマイクロソフトのGutHub買収の噂からだと思うのですが。 すでに技術的な部分は多くのサイトで詳細に解説されているので

そこら辺はリンク先で確認していただいて、GItの周辺の情報いろいろあってよくわからない という人向けにざっくり書きます。

 

(18 9.18)ブログを更新した気になっていたが 更新失敗していた

おもにGitSubversion の違いと選択について その他です。


 

Gitとは? ? Gitの仕組みを速攻で理解する

  理解のための 用語解説が必要だと思ったのですけど、こちらのサイトがとても完結で詳しいので抜粋しようと思ったのですが、ブログの文字数制限に引っかかりそうなのでキャプチャさせていただきました。 説明は省く予定でしたけど用語ぐらいは知っておかないとね。

 Gityougo

 


GitSubversion の違い

subversionを使っていた人がgit便利だなと感じたこと

subversion

・単一リポジトリ(リポジトリは一つだけ)
・commit したら即反映
・add するのは新規にファイルを追加するときだけ
・リビジョン番号は数字
・考えるのは『ローカル( checkout した場所)』と『リポジトリ』の2つだけ

 

git

・分散リポジトリ(マスターリポジトリは一つ。でも個人リポジトリを自由に作れる)
・commit しても個人リポジトリにしか反映されない( push するとマスターリポジトリに反映)
・commit 前には毎回 add する必要あり
・リビジョン番号はハッシュ値
・考えるのは『ローカル』と『インデックス』と『個人リポジトリ』と『マスターリポジトリ』の4つ



 

 

■ ドキュメントのバージョン管理はGitかSVNか???

実は、サイズの大きなバイナリファイルをGitで扱うのはあまりお勧めできません。
Gitで管理されるリソースは、圧縮されますが、既に圧縮済みのバイナリファイルはそれ以上圧縮できませんから、サイズが大きくなればなるほどPUSHやFETCHにかかる時間に影響を与えることになります。
Excelのファイル形式にしろ、Javaのライブラリ単位であるJARファイルにしろ、既に圧縮されているバイナリファイルです。

僕個人の意見としては『Gitでの管理対象リソースとして、バイナリファイルは必要最小限とし、可能であれば画像だけにする。』としたいですね。

 

Gitが分散型で 差分データを圧縮管理してそれを結合することで、効率化するシステムなのでバイナリファイルはもともと圧縮状態なうえに

結合ができないためさほど効率の良い管理ができない。 大きなバイナリの塊のままプッシュすると 転送にかかる時間も長くなるためGitの長所はあまり生かせないという仕組みだと考えられます。

 

Subversion Git の構造で混乱しないように画像でわかりやすくしてみます


Subversion(TortoiseSVN)とGit(SourceTree)を比べてみる

GitSubversionの仕組みをなるべく単純に表した画像はないのかと調べた結果こちらのサイトの画像にたどり着きました。

最初の画像では省略されていますが、GitSVNと比較して差分バージョンを派生させるブランチや ブランチを結合するマージといった機能があります>下の2つの画像

解説はそれぞれのリンク先で確認するか 調べていただくとしてここでは深く触れません。 不親切ですが今回の趣旨とは異なるのですいません。

Subversionは単純で理解しやすいですね

 

  • SubversionとGitのデータ管理の相違

20160415193410

  • Gitのブランチによる管理

 

blunch

git-branch

 

 


 

 

ゲームエンジンのバージョン管理

Unityまわりは普通にGitで運用している方が多い印象 UE4では Perforce, SVN, Git(ベータ版) がソース管理に指定できます。

  • Perforce           料金が高めなので個人開発だといまひとつ。 情報があまり出回っていないというハードルがある。
  • SVN                  UE4のプロジェクトが全体に容量大きめなのでGitよりSVNがおすすめらしい。Gitより利便性は落ちる。
  • Git(ベータ版)   細かいバージョン管理ができるため多人数PJならGitが有利?。クラウド越しの管理でなければ使えそう。

前述した理由でUnityはファイルサイズがそれほど大きくならないためGitの運用でも さほど問題が出にくいのか。またはテキストコードを中心にバージョン管理を行っているのかもしれないですが、問題はUE4で巨大なバイナリファイルで運用するのでSVNがおすすめされるのも理解できます。 巨大なファイルをネットワーク越しでGitでにプッシュとかは考えにくいですね。ローカルに環境構築して運用するのが妥当かもしれません。

ローカル環境かクラウド環境か

代表的なリポジトリ管理サービスについても書いておきます

  • クラウド環境

Gitリポジトリ管理サービスのメジャーは GitHub、Bitbucket あたりになりますがこの様に違いがあるようです。

  • GitHub          完全オープンソース OSSで 基本的にリポジトリは公開 有料プランでリポジトリを非公開にできる。
  • Bitbucket      GitHubとほぼ同様ですが無料でも非公開設定が選べる、無料でSSHキーは5人まで有効。

GitHubBitbucket を同じ名前で登録するとエラーが出ることがあるようなので移行時には注意

  • ローカル環境

GitLabBitbucket、AWS CodeCommit といった無料で使用できるサービスでは 自前でサーバーを用意できるため社内開発での導入を検討する向きが多い様で クラウド上に開発ソースを置くことに抵抗があるクライアントサイドの意向だったり理由は様々。 買収の噂でGithubからの移行を検討するケースも多い様子。 導入はNginxApacheが走るXAMPPMAMPでサーバーを立てるだけで良さそうだですが、主にメンテナンスコストがデメリットに挙げられている様です。 担当者の引き継ぎがうまくいかない場合などですね サーバー管理に限らずでしょうが。

  • GitLab、              無料で使用でき GitクローンでGitHubと似たUIで機能面でも遜色ない ローカルに環境が構築できる。
  • Bitbucket               GitLabとほぼ同じ内容だが 個人が運営しているためサポート面で劣るかも。
  • AWS CodeCommit  まだ新しいサービスなので、使い勝手の面で改良の余地ありとか 不満な点も

      ※GitHubは自分のサーバーで利用できるGitHub Enterpriseがあります

 

この中ではGitLabが少し人気が高いようで以下にGitlabの考察について記述があるので 簡単に抜粋してみます。

プロジェクト管理ツールでRedmineTracを使用している場合はプラグインでバージョン管理ができるGit対応ができますが、専用のバージョン管理サービスに比べて機能面ではやや劣るため。 それ以外のローカル環境に構築できる選択肢としてGitLabなどが挙げられているみたいです。

Gitlabに触ってみて、Githubと比較した

会社でのローカル環境で利用していたGitlab, てっきりGithubのローカライズ版かと思っていましたが、githubのマイクロソフト買収話をきっかけに公開webサイトもあると知りました。
知ったのは結構前ですが、なぜか今日急にwebサイト版のgitlabを試してみたくなったので、触ってみた感想を記載します。

  • Githubで普段使う機能は大抵揃っている
  • 各種SNSアカウントでのログインが可能。
  • 無料版でもプライベートリポジトリを作ることが出来る。
  • Githubのリポジトリをインポートできる。
  • UIに癖がある。
  • 動作は重ため?
  • 完全無料。
 

Subversion(SVN) ⇔ Git

GitSVNどっちで環境構築すればいいのかという 悩みが発生しますが、相互にコンバートできるのであまり考える必要はなさそうです。

なーんだ 話終わっちゃった

以下のサイトでの情報のように Git-svnでGit、SVN相互変換が可能で、さらに SubGitのほうが作業のハードルが低めだということです。

 

SubGitでGitリポジトリをSubversionリポジトリへ移行

   

■ Git-svnでSubversionからGitに移行しよう。

  1. 「git svn」コマンドを使用して、GitからSubversionリポジトリへアクセスする(図1の【1】の操作)
  2. 「GitHub Importer」を使用して、SubversionからGitHubへの移行を実行する(図1の【2】の操作)
  3. SubversionクライアントからGitHubリポジトリへアクセスする(図1の【3】の操作)

 

at-it-git-14-001

 

 


■ まとめ

 

  • テキスト、ソースコードやアセット類などで圧縮できるもの サイズのちいさなバイナリファイルならGitを使用するのが有利。
  • プロジェクト全体が大きくなる、大きなバイナリファイルを扱うならばSVN(サブバージョン)を使用する。
  • ファイルサイズが大きい場合、データの流出セキュリティに不安がある場合はローカルにバージョン管理を構築
  • もともとGitが大きなバイナリを扱うゲーム用途の想定でなくWEB系などのテキストコードの扱いを考えられているようなので ゲームではSVNが有利なのかもしれませんが、Gitの利便性も捨てがたいので作業内容によって使い分けるのが良いかもしれません。
  • GitでもSVNでも相互にコンバートできるので、さほど構築時の選択があとで問題になるというわけでもなさそう 。
  • あとは 好みの問題かも 。。 まとめてないね

 

ちなみに 自分の環境では UnityとWEB関連は Bitbucket+SourceTree 、UE4はTurtoiseSVN でやってます。

 

 

もう少し理解を深めたい方にリンクを貼っておきます。



ローカルサーバーでGitHubのようなサービスを構築したい人向けリンク

GitHubのようなサイトを独自に運用できる「GitLab」や「GitBucket」を使ってみよう

GitLab自社運用のための注意点とノウハウ(2018/06版)

 


Git自体がよくわからない人向けリンク

 

■ SVNを捨ててGitを使うべき5つの理由

■ Learn Git Branching
http://pcottle.github.io/learnGitBranching/

■ こわくないgit
http://www.slideshare.net/kotas/git-15276118

 

■ サル以下の存在がまとめた「Git用語」図解

こんなGitの教え方をするエンジニアはデザイナーからモテるぞ!

■ Gitとは?入門向け基礎知識のまとめ


UE4でのバージョン管理が知りたい人向けリンク <Unityは軽いからどんなでもいいかも 雑ね>

 

今日から始めるUnreal Engine 4のSource Control SVN編

UnrealEngine4でGitを使って共同開発したい

 

GIT のGUIクライアント

ついでに書いておきます Git単体でコンソールコマンドで操作というのはつらいです。GUIクライアントを導入するとブランチツリーがグラフィカル表示されて 操作がマイルドになるので導入したいところ、 有名どころは SourceTreeですが、新しめのGitKrakenなどもいい感じです。SourceTreeははじめから日本語対応しています。GitKrakenは非公式ですが日本語パッチを当てることで日本語化が可能なようです。 他にもTortoiseGitはGUIが搭載されているのでGUIクライアントを別に導入する必要はありません こちらも日本語化パッチで日本語化が可能です。

「GitKraken」は使用料金が発生するようですが、個人開発、インディーズならばそれほど負担にならないようです。

洗練されたUIのGitクライアント「GitKraken」の使用料金が発表 - Proライセンスは60ドル/年

GitKrakenを使用して商用開発を行うユーザーは、基本的に60ドル/年のサブスクリプション登録が必要となる事になります。 ただし例外も認められていて、創立後一年に満たず、従業員が20人より少ないスタートアップ企業や、個人開発、オープンソース開発、非営利、教育用途の場合は無料のGitKrakenが継続して使用可能とされています。

 

ちなみnGitのGUIクライアントアプリ どのような種類があるか調べてみたところ Windows対応版だけでこんなにあるらしいです。

多すぎ

 

screencapture-git-scm-download-gui-windows-2018-09-17-13_27_56

 


 

最近のGitサービス移行に関する動きは 、GitHubをMSが買収するかもという噂から。始まっているようですがMSに買われたサービスが室の劣化を遂げているのを観ると悲観的な意見になるのもわかります。 最近だと意見に上がってますけどSkypeかな。以前記事に書いた中でも MSがゲームエンジンの買収に乗り出す可能性が頭によぎってました 近年買収されたところ以外ですが。

まあ 特にすぐ動く必要はないような気もしますが、いざというときのために退避場所は準備しておくのがいいかも

 

どうなるGithub!?MSが買収と噂しているが世間の意見はどうなのかまとめてみた。

 

Git買収

 


 

- おまけ -

 

■ 背景アーティストのためのSubstanceDesignerマテリアルデザイン入門

 

Tweetで流れてきたので購入してみました。以前から使用しているので、内容に目新しい部分というのはないのですが 教え方の切り口に興味があったりで時々学習がひととおり終わってから入門書を購入します 普通は逆なんでしょうけど。知識が入ってる状態だと楽に読めますが  意外に気づかされることも多いんですよね。

SubstanceDesignerは知らない人はもう少ないでしょうが Photoshopフィルタ群のレイヤー処理をノードベースにして、 ノーマルマップのベイク処理(ShaderMap、xNormal, CrazyBump ) エフェクト関連だとFilter Forgeプラグイン そういう各種ツールを一本にまとめた 広範囲に制作パイプラインをカバーすることができる多機能アプリですね。 最近流行りらしいです。

Youtubeのチュートリアル動画などで比較するとわかるかと思いますが使用するフィルタは制作スタイルごとに結構ばらつきがあるようです。SubstanceDesignerは大量のフィルタ機能が搭載されていますが、デザイナーごとにだいたい得意ルートがあるようで どの制作ケースでも似たようなフィルタを使用しています 機能をしぼっている感じ、 従来のPhotoshopでのテクスチャ制作でも機能全部覚えて使ってる人はいないですしね 機能に振り回されないことが必要かな。。

ゲームエンジンでシェーダノードの操作に慣れた人であれば理解はそれほど難しくないと思います。 モジュール化したシェーダのようなもの あってる?。

ゲームエンジン側でスクリプト制御できるのでプロシージャルテクスチャ的な使い方ができますが Unityはいまのとこ実行開始の初期化時にパラメータ変更できる様ですが、最新バージョンはわからないです。 エフェクトなど実行時の制御にはシェーダ書かないとだめかな。

内容には触れませんが、今回の書籍は入門にとても良いと思います。ほんとにはじめての人は動画がセットのほうが理解しやすいので 、さらっと公式のチュートリアル動画を見てからが読むのが良いかと思います。

覚えたての時こういう書籍がもっと出ていたら良かったんだけどね。

SDSD

 


【後記】

ひさしぶりに長い記事を書いたのですが 調子はいまいち。 記事が全体にうす味です

休みを取る宣言をしましたが、休み始めてすぐに魔物が潜んでいたといういつものパターン。 以前にくらべると時間の余裕は少しできたので 散文的にいくつか思うところを書きすすめて 記事になりそうなものを優先してみたというところです。

期待に沿える記事なのかはわかりませんが、様々な目的でブログに訪れる方がいるので たまにはアタリ記事もあることでしょう。

あと時間のあるときにチュートリアルを大量に見て読んでいたので、そこら辺の情報をそのうち形にできたらいいかなと思っています。

 

次回は未定 それでは また

 

 

え アニメ感想ですか? 書いていたんですけどもうすぐ今期アニメ最終回だしどうしようかな という脳内から物言いがついたので、時間が許せば記事にする予定なんですけどね、 スマヌ