WindowsとMacの両方から自社サーバー上でGitを使おう by SourceTree
皆様、いかがお過ごしであろうか? 最近Web開発よりもアプリ開発のほうがメインで、てんわやんわの野地である。
アプリ開発をする際はネイティブアプリ(各OSごとに用意された言語で開発)とハイブリッドアプリ(Webで使われている言語で開発)という二つの選択肢があるが、自分の場合は元がWeb系のフロントエンドエンジニアなのもあってハイブリッドアプリばかり作ってきた。
ただしアプリを作るとなるとデバイスの固有機能(加速度取得とか内部データベースとか)や外部機器との連携が必要な場合が多いので、プラグインでどうにかならない部分はネイティブ言語も多少は書かなくてはならない場面が多々ある。
今まで担当してきた案件の多くがAndroid専用アプリだったので、そんなときはあやふやなJavaを頑張って書いていたものだが、最近とうとうネイティブアプリ、しかもios向けのお仕事を頂けたのでSwiftを勉強しながらヒィヒィ言う毎日を送っている。
ただ、ヒィヒィ言いつつもSwifが新鮮なのとXcodeが結構快適なIDE(筆者個人の感想です)だったので案外楽しんでいるのも事実だ。色んな他人のブログを読んでると、プロのプログラマーを名乗るなら最低6言語くらい使えなくてはならないらしいし、レベルアップにはこれ以上ない好機だ。ところで先生、htmlとcssは数に入れちゃダメですか。
さて、現在自分はその仕事の真っただ中なのだが、最近一番困った問題はSwiftのバグでもXcodeの取り扱いでもなく、MacでGitを使おうとしたときに起こった。
今回の記事はその際に起こった問題解決のお話である。
未だに争いの絶えないWindos vs Mac戦争だが、どちらも気持ちよく仕事ができる職場が理想なのは間違いない。
そんな職場にお勤め or これから作ろうとする人はいずれちょっと悩む問題かもしれないので、参考にしていただければ幸いである。
目次
この記事の対象者
この記事はGitHubやBitbucketといったWeb上にではなく、自前のサーバー上でGit管理をしている人を対象にしている。さらに厳密に言えばWindowsとMacの両方からアクセスできるファイルサーバーを使っている人だ。
実は、普段なにげなく接続しているそのサーバー、WindowsとMacからGit管理をしようとするとリモートリポジトリへ接続するパスが全然違うのである。
Windows使いの自分は今まで、Git管理にWindows版のSourceTreeを使ってきたのだが、冒頭で話した通りios向けのアプリ開発のためにMacからGitをいじる必要が出てきた。
そこでMacでもSourceTreeを使う事にしたのだが、リポジトリのクローンが上手くいかない。
ネットで調べようにも、ヒットする解説記事はGithubやBitbucketからのクローンを解説しているのがほとんどだ(後で思い出したが、当ブログでもそんな記事を書いていた)。
そんなわけで色々と苦闘してしまったので、両方の環境におけるSourceTreeを使って自前サーバー上のリモートリポジトリからのクローン方法を備忘録も兼ねて記事にしようと思う。
Windows・Mac共通の前準備
WindowsであってもMacであっても、まずはそのサーバーにアクセスできていることが前提となる。
おそらく、リモートリポジトリが作れる時点で既にサーバーへ接続できている可能性が高いが、念のためサーバーへのつなぎ方も解説しよう。
前提の前提としてまずは、社内ネットワークにアクセスできる環境が必要だ。
会社のパソコンなら有線・無線を問わず既にネットワークに繋がっているはずだ。もし繋がっていなかったり自前のパソコンだったりする場合はルーターからLANケーブルを差すなり、Wi-Fiに接続するなり、VPN接続をするなりして繋げよう。
そして「IPアドレス」「ユーザー名」「パスワード」の三つを確保。この三つが分からない場合は、そのサーバーを構成もしくは管理している人物ならほぼ必ず知っているはずなので聞いてみよう。
自分で無理やり調べる方法もなくはないらしいが、それにはかなり複雑な(素人から見ればハッカーなみの)テクニックが必要なので管理者と連絡が取れないなら、既にそのサーバーに接続ができている人に聞いてみよう。
ちなみにIPアドレスとは、超乱暴に言えば「数字と.だけで書かれたコンピューターの住所」なのだがそれにも二種類あり、世界のどこからでもそのコンピューターを指定できる「グローバルIPアドレス」とそのネットワーク内だけで有効な「プライベートIPアドレス」に分けられる。
今回の用途で使うのはよっぽどの理由がない限り「プライベートIPアドレス」の方だと思われるが、その場合のIPアドレスはだいたい「192.168.○○○……」という形をしているので、参考にしてほしい。
Windowsの場合
ネットワークドライブの割り当て
Windowsでファイルサーバーにアクセスするためにはエクスプローラーからネットワークドライブの割り当てをする必要がある。
まずWindowsキーとEキーを同時押しでエクスプローラーを開き、出てきたウィンドウ上部にある「コンピューター」より「ネットワークドライブの割り当て」を選択しよう。
そして出てきた画面でドライブ文字とネットワークへのパスを入力する。
ドライブ文字はいわゆる「Cドライブ」の「C」に値する部分なので好きに決めていい。
パスのほうは先述したIPアドレスを使って「\\IPアドレス\ディレクトリ名」と入力。(例:\\192.168.1.4\nojiDatas\workSpace)
※このブログ上では「\」という表示になっているが、「¥(の半角)」と「\」、「逆向きの/(バックスラッシュ)」は同じ意味なので注意。
※そのサーバー直下にファイルを格納しているのであれば「\ディレクトリ名」部分はいらないかもしれない。
そしてちゃんとパスがあっていれば今度はユーザー名とパスワードを求められるので、上にユーザー名、下にパスワードを入力し、ネットワークドライブの割り当てを完了させよう。
これでエクスプローラー上からサーバー内のファイルがいじれるようになる。
リモートリポジトリの作成
今度はリモートリポジトリを作るために、SourceTreeを起動して画面左上の「新規/クローンを作成する」をクリック。
出てきたウィンドウの「リポジトリを作成」タブを選択し、「リポジトリタイプ」は「Git」に設定し「保存先のパス」は右にある「…」ボタンを押してエクスプローラー上でリモートリポジトリに設定したいフォルダを選ぼう。
もし、まだリモートリポジトリにしたいフォルダを作成していなかった場合はエクスプローラーでサーバーを開いたままCtrl+Shift+Nを同時押しすればその場で新しいフォルダが作れる。
そしてブックマーの設定を任意のものに変えて「作成」をクリックすればリモートリポジトリの作成が完了だ。
ローカルリポジトリへクローン
最後に、リモートリポジトリからローカルリポジトリへのクローンだが、今度はローカルリポジトリとして自分の作業用パソコン上の好きな位置(悩んだらデスクトップ上)に空の新しいフォルダを作成。
そしてSourceTree上でリモートリポジトリを作った時と同じく画面左上の「新規/クローンを作成する」をクリック。
今度は出てきたウィンドウで最初に表示されているであろう「リポジトリをクローン」タブ内で作業を行う。
まず、「元のパス」部分に手入力で先ほど作ったリモートリポジトリへのパスを入力(筆者環境では右の「…」ボタンからエクスプローラー上のリモートリポジトリを参照してもうまく接続できなかったため手入力を推奨)。
ここで入力するパスはエクスプローラー上でネットワークドライフの割り当てをを設定したときに入力したときのパスにリモートリポジトリのパスを足したもので、
「\\IPアドレス\ディレクトリ名\リモートリポジトリのフォルダ名\○○○.git」(例:\\192.168.4\nojiDatas\workSpace\testProject\.git)
といった形となる。
ここで入力した値が正しいものであれば入力欄からフォーカスが外れた後、入力欄の下にある「リポジトリタイプ」の項で「これはGitリポジトリです」という表示が出るので、続けて下の欄に先ほど作ったローカルリポジトリ用の空フォルダを指定。
そして「クローン」ボタンを押せばリポジトリのクローンができる。
Macの場合
サーバーへ接続
実はWindowsの場合、ネットワークドライブの割り当てをしなくてもリポジトリの操作ができるのだがMacでは必ずサーバーに接続するところから始める。
まず、Macの場合はデスクトップをクリックして画面上部に表示されるメニューを「ファインダー」に変更し、そのままメニュー内にある「移動」から「サーバーへ接続…」を選択。
ここでサーバーへのパスが求められるが、パスは
「接続プロトコル://IPアドレス//ディレクトリ名」(例:afp://192.168.1.4/nojiDatas)
という形で入力することになるだろう。
Windowsで接続するときとの違いが「接続プロトコル」部分だが、今回のケースでこの部分はたいてい「afp」か「smb」と入力すればOKなはずだ。
他の可能性としては「cifs」や「ssh」があるので、前述の二種で繋がらない場合はこちらも試してみよう。
正しいパスが通れば、今度はユーザー名とパスワードを求められる。それらを入力すれば、デスクトップ上に接続したサーバー名のアイコンが表示され、サーバーへの接続が成功となる。
ついでに、ログインと同時にサーバーへ繋げる設定をする
前述の手順でサーバーへ接続できるのだが、パソコンへログインする度に同じ作業をするのも面倒なので、この際ログインしたら自動でサーバーへ繋ぐ設定もしてしまおう。
まずは、サーバーを接続したらデスクトップにサーバーのアイコンが表示されていることを確認。
もしサーバーへ接続したのにデスクトップに変化がない場合は画面上部メニューにある「ファインダー」から「環境設定」を開き、「一般」を選択。
その中にある「デスクトップに表示する項目」のうち「接続中のサーバー」のチェックをonにすればアイコンが現れるはずだ。
アイコンを確認したら、今度は画面左上のリンゴマークをクリックして「システム環境設定」を選択。
表示されるカテゴリのうち、「ユーザとグループ」を選択し、画面右側に現れる「ログイン項目」をクリックしよう。
表示された領域へ、デスクトップに表示されたサーバーのアイコンをドラック&ドロップすればOKである。
しかし、下のカギアイコンがロックされた状態になっているとそのまま設定が反映されないので、カギをクリックしてアカウントのパスワードを入力する必要があるので注意。
リモートリポジトリを作る
Windows版とほぼ同じなので割愛。(個人的に)驚いたことに新しいフォルダを作るショートカットキーまで一緒(厳密にはCtrlキー→Comandキーという違いはあるが)なので、特に迷うこともないだろう。
Gitで使うパスを調べる
さて、今回筆者が一番困ったのがこの部分だ。
Windows版のSourceTreeであればリモートリポジトリへ接続するパスは前述した通り
「\\IPアドレス\ディレクトリ名\リモートリポジトリのフォルダ名\○○○.git」(例:\\192.168.4\nojiDatas\workSpace\testProject\.git)
となるが、当然Mac版のSourceTreeで同じパスを打っても通らない。
そもそもMacではパスを通すときは基本的に「\」ではなく「/」を使用する。のだが、これらを変換してもパスは通らない。
そして、サーバーへの接続に使ったパスからヒントを得て、「そうかそうか、つまりプロトコルが足りないんだな」とドヤ顔で
「通信プロトコル://IPアドレス/ディレクトリ名/リモートリポジトリのフォルダ名/○○○.git」(例:afp://192.168.4/nojiDatas/workSpace/testProject/.git)
と打ってもパスが通らないことで筆者は4時間ほどハマッた。
答えは、「ターミナル」というMacに標準でついているアプリから得られる。
プログラマー歴が長いのであれば知らない人はいないだろうが、通称黒い画面と呼ばれる(余談だが、ターミナルの初期設定ではどう見ても「白い画面」である)このアプリはWindowsで言うところのコマンドプロンプトにあたるモノで、コマンドを打ち込んでパソコンに直接色々な命令ができるモノだ。
ターミナルを使いこなすにはそれなりの慣れと知識がいるが、安心してほしい、今回打ち込むコマンドは
mount
の一単語だけである。
サーバーが接続されている状態で(ココ重要)ターミナルを立ち上げたら何も考えず半角英数小文字で「mount」と打ち込んでEnterを押してみよう。
そうすれば現在マウント(平たく言えば接続済み)されたボリューム(ハードディスクとかデータサーバー)が一覧になって出てくる。
さて、いくつかのパスが出てきたと思うが、まずはログイン時に使った「ユーザー名」が書かれている行を探そう。
実際には以下のような行がターミナル上に表示されているはずである。
「//通信プロトコル://IPアドレス/ディレクトリ名 on /Volumes/ディレクトリ名(状態説明英文)」
この部分が含まれる行のうち、「on」の次の「/Volumes」からスペースを除いた「(状態説明英文)」直前までの文字が今回我々が求めてるパスだ。
具体的には、
/Volumes/noji/Datas/workSpace/testProject
といったようなパスになるだろう。
これをコピーして、SourceTreeの「+新規リポジトリ」メニューから「リポジトリをクローン」を選択。
出てきた画面の「ソース URL」部分にコピーしたパスを貼りつけ、どこか適当な空白をクリックしてみよう。
入力欄からフォーカスが外れるとそのパスの先にあるファイルがちゃんとgitリポジトリなのかを調べてくれる。
結果、ウィンドウの下部分に「これはGitリポジトリです」という文が出たら成功である。
あとはWindows版と同じように作業をこなせば大丈夫なので割愛させて頂く(Windowsばっかり優先させてスミマセン)。
まとめ
さて、普段Windowsばっかり使ってる筆者が偉そうに書いた記事だが、いかがだったろうか(もし間違いがあったら是非コメントへお願いします)。
しかし、仕事のためとはいえ使ってみると中々に使いやすいMac。
個人的には甲乙つけ難いWindowsとMacだが、どちらにも違った魅力があるからこそ、どちらも使える職場というのが理想なのは間違いない。
職場だけではなく、まずは自分を両OSに対応した人間にアップグレードして仕事の幅を広げたいものである。
コメントを付ける