Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

XPages開発におけるGit/GitHubの利用

3,986 views

Published on

Published in: Technology
  • Be the first to comment

XPages開発におけるGit/GitHubの利用

  1. 1. XPages開発における Git/GitHubの利用 九州地区ノーツパートナー会技術部会 2014年1月14日 リコーITソリューションズ株式会社 海老原 賢次(Kenji.Ebihara@jrits.ricoh.co.jp) 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 1
  2. 2. 今日話すこと      バージョン管理とは Git/GitHubとは TortoiseGitのインストール TortoiseGit を使ったDomino DesignerとGitの連携 Issuesについて 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 2
  3. 3. バージョン管理システム  バージョン管理システムを使う理由 - 参考:@IT-「知らないと現場で困るバージョン管理システムの基礎知識 」 http://goo.gl/pXapC - アジリティを高める • 開発中にソフトウェアにバグを埋め込んでしまっても、問題の発生する以前の状 態へ簡単に戻せます。 - 素早い開発が可能に • 過去にさかのぼって変更の差分を確認することで原因を分析したり、別に同じ 環境を作って同じ問題が再現するかどうか調査できます。 - 余計な情報でコードが肥大しない • 変更前の内容をコメントアウトしてコード中に残すようなことをする必要はありま せん。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 3
  4. 4. 何をバージョン管理するのか  ソフトウェアのソースコード  ビルドスクリプト  データベースのスキーマ定義、マイグレーションの SQL、初期 データ  環境構築用の設定ファイル・スクリプト  Xpagesでは、オンディスク・プロジェクトの内容をすべてソースコー ド管理に含めます。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 4
  5. 5. GitとGitHub  Git - バージョン管理システムの1つ。 - 同類の他製品には、Subversion、CVS等があります。 - Gitはオープンソースで社内やローカル環境など、どこでも構築ができます。  GitHub - Gitをバージョン管理とした、SaaSによるSNS機能を持ったソフトウェア開発 プロジェクト共有クラウド環境。 - バージョン管理以外にもIssueやメンバ管理などの機能を合わせ持ちます。 - ソースコードは提供されていないため、同じ環境をオリジナルで建てること はできません。 - 同じような環境を自前で作りたい場合は、Gitと合わせてRedmineや ALMinium などオープンソースの製品を使用します。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 5
  6. 6. Domino Designerでの利用  ここでの前提 - Domino Designer 9.0 を対象としています。 - R8.5.2以降であれば、「Source Control Enablement」プラグイン (http://goo.gl/QzRtbi)を導入することで、可能です。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 6
  7. 7. Domino DesignerとSCMとの連携 DBとオンディスクプロジェクト間は 自動的に同期される SCM(git,SVN等) 1つのDBに対して複数の開発者が作業するのではなく、 開発者毎にDBを作成する。 オンディスクプロジェクト 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 7
  8. 8. Gitクライアントの用意  Gitクライアントにはいくつか種類があります。 Domino Designer用のアドインは、OpenNTFにありしたが、R9では 使用できないそうですし、もう使っちゃダメなようです。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 8
  9. 9. TortoiseGitとは  ということで、TortoiseGit(トータスギット)を使用します。 URL:http://goo.gl/s16zT  特徴 - エクスプローラーからGitをGUIで操作ができる - Language Packが充実しており、UIが日本語で表示できて使用しやすい 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 9
  10. 10. TortoiseGitのインストール準備  TortoiseGitは、Gitクライアントのエンジンは持っていません。 「msysgit」というGitクライアントが必要です。  msysgit:http://goo.gl/Ggm3J - 最新版の「 Git-1.8.5.2-preview20xxxxxx.exe 」をダウンロード(xxは日付) - exeを実行してインストールする。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 10
  11. 11. TortoiseGitのインストール  こちら(http://goo.gl/xGZDU)から、本体とLanguagePackesをダウ ンロード&インストールします。 exeを実行するだけで、後はそんなに難しくないかと。 環境に合わせて 32/64bit を選択して下さい 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 11
  12. 12. TortoiseGitのGUI  インストールが完了し、Windowsを再起動した後、エクスプローラー でフォルダを右クリックすると、このようなメニューが出ます。 英語で表示される場合は、設定で言語を選択します。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 12
  13. 13. TortoiseGitの環境設定(1)  前の画面のメニューから、「設定」を選択します。  言語を「日本語」に設定します。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 13
  14. 14. TortoiseGitの環境設定(2)  GIT上で表示されるユーザー名とメールアドレスを入力します。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 14
  15. 15. TortoiseGitの環境設定(3)  プロキシサーバーを利用している場合は、「ネットワーク」にプロキ シの情報を入力します。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 15
  16. 16. GitHubからクローンを作成する(1)  ここでは、既にあるNotesDBのGitリポジトリからローカルに落とし、 Domino Designerに取り込み、DBに反映させます。  クローンとは・・・ - リモートGitリポジトリ(ここはでGitHub)から自分のローカルPCに、ローカル リポジトリとしてコピーすること。 - リポジトリまるごとコピーするため、SubversionやCVS、MSVSSなどと異なり、 履歴もコピーされる。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 16
  17. 17. GitHubからクローンを作成する(2)  ローカルリポジトリを作成するフォルダで右クリック→「Gitクローン (複製)」をクリック。  URLを入力してOKを押します。URLは「https」で始まる必要があり ます。GitHubのWebページの左側に出ています。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 17
  18. 18. Domino Designerにインポートする(1)  メニュー「ウィンドウ(w)」→「Eclipseビューの表示」→「パッケージ・ エクスプローラー」を開く  「パッケージ・エクスプローラー」ウィンドウで、右クリック→「イン ポート」、インポートダイアログで、「既存プロジェクトをワークス ペースへ」を選択して「次へ」を押します。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 18
  19. 19. Domino Designerにインポートする  「ルートディレクトリーの選択」に、Gitのクローンで作成したローカ ル・リポジトリのパスを入力します。正しければ、プロジェクト欄に プロジェクトが表示されます。  「プロジェクトをワークスペースにコピー」のチェックを外しておきま す。  「終了」を押すとインポートが開始されます。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 19
  20. 20. NotesDBに割り当てる(1)  インポートしたプロジェクトはオンディスク・プロジェクトなので、こ れをNotesDBに割り当てます。  空のDBを作成します。  デザイナで、DBタイトルのところで右クリック→「チーム開発」→ 「既存のオンディスクプロジェクトに関連付ける」をクリックします。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 20
  21. 21. NotesDBに割り当てる(2)  「選択したオンディスクプロジェクトから・・・」を選択し、オンディスク プロジェクトのリストにある、先ほどインポートしたプロジェクトを選 択して、「終了」を押すと、DBに設計がインポートされます。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 21
  22. 22. 用語の説明  コミット - ソースコードの目的の編集が完了した時に、SCMに対して記録を行います。 - SCMではコミットの単位で履歴が作成されます。また1つのコミットで複数のファイル の変更が記録できます。そのため、複数のファイルの変更をセットとして遡ることが できます。 - gitでは、コミットしただけではリモート・リポジトリには反映されません  プッシュ - ローカルのコミット情報をリモート・リポジトリに送信します。 - 他のユーザーが先にプッシュしていた場合、プッシュは失敗します。その場合は、プ ルを行います。  プル - リモート・リポジトリの最新のコミット情報を取得し、ローカル・リポジトリにマージしま す。通常マージ処理は自動的に行われますが、他の人と同じ箇所を修正した時など、 競合が発生します。 - 競合が発生した場合は、手動で解決する必要があります。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 22
  23. 23. コミットする  開発作業はNotesDBで行いますが、コミットはオンディスクプロジェ クトから行います。この間は自動的に同期されます。  エクスプローラーで、オンディスクプロジェクトのフォルダを開き、 右クリック→「Gitコミット->master」をクリックします。  *必ず*コメントを入れてOKボタンを押します。 コメントにIssuesのIDを入れて 連携させることができます。(後述) 変更したファイルの一覧です。 必要があればコミットするファイルを 選択します。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 23
  24. 24. プッシュする  エクスプローラーで、オンディスクプロジェクトのフォルダを開き、 右クリック→「TortoiseGit」→「プッシュ(リモートへ反映)」をクリック します。  ダイアログが表示されますが、そのまま「OK」ボタンを押すとプッ シュされます。この時、ユーザー/パスワードを聞いてきた場合は、 GitHubのWebページにアクセスする際のものを使用します。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 24
  25. 25. プルする  ソースコードの変更がコミットされていない場合、プルできません。  エクスプローラーで、オンディスクプロジェクトのフォルダを開き、 右クリック→「TortoiseGit」→「プル(ローカルへ反映)」をクリックし ます。  ダイアログが表示されますが、そのまま「OK」ボタンを押すとプッ シュされます。この時、ユーザー/パスワードを聞いてきた場合は、 GitHubのWebページにアクセスする際のものを使用します。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 25
  26. 26. プッシュに失敗?  プッシュした時に、他の人が先にリモートリポジトリにプッシュして いた場合、エラーになります。  その場合は、先にプルしてローカルリポジトリを最新の状態にマー ジします。 メッセージを読むと、pullとかして 先にマージしてね、と書いているのがわかります。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 26
  27. 27. プルに失敗?  プルした時に、他の人が自分と同じ箇所(ファイル単位ではなく、 ファイルの中の同じ箇所)を修正していると、マージできずに失敗 します。→競合状態のファイルがあります。  その場合は共同を解消しましょう。 メッセージを読むと、競合をfixしてcommitしてね と書いているのがわかります。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 27
  28. 28. 競合ファイルの確認(1)  競合の解消は、ツールを使用することで容易にできますが、何を 残すか、削除するかを判断する必要があります。  競合が発生したファイルおよびそのファイルがあるフォルダは、エ クスプローラー上で[!]のアイコンが表示されます。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 28
  29. 29. 競合ファイルの確認(2)  エクスプローラーの右クリック→「競合の解消」をクリックすると、競 合しているファイルの一覧が表示されます。  そこでファイルを右クリック→「競合の編集」とすると、ツールが起 動します。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 29
  30. 30. 競合の解消-どっちも残す場合  競合している箇所は、赤く表示されます。それ以外の部分は自動的にマージさ れているので、何もする必要はありません。  この場合は、同じ箇所に「削除」ボタンと「閉じる」ボタンが追加されています。こ れらはどちらも必要と判断しました。  削除ボタン->閉じるボタンという順番にしたいので、範囲を選択して右クリック→ 「「こちら側」の前に「あちら側」のテキストブロック使用」を押します。  画面下の「マージ済み」で競合が解消できたのを確認できたら、「解決済みマー ク」ボタンを押して、ツールを終了します。 範囲を選択(行単位)して、 右クリック 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 30
  31. 31. 競合の解消-片方のファイルの変更を無視  一方のファイルの変更を無視して競合を解消することも有ります。  この場合、ファイル内の競合箇所だけでなく、片方のファイルへの変更はすべて無視さ れます。  競合ファイルの一覧ダイアログで、ファイルを右クリック→「「あちら(こちら)側」を使用し て競合を解決する」をクリックします。  XPagesでは、「.metadata」という拡張子のファイルがよく競合しますが、これは更新者、 更新日時情報なので、マージする必要がありません。  「あちら側」「こちら側」どちらを採用しても問題ありません。  また画像ファイルなどバイナリファイルもこれで競合を解消します。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 31
  32. 32. よく使うコマンド(1)  変更の取り消し - 変更したソースコードを前のコミットの状態まで戻す。 ※編集内容が削除されるので注意!  ログを表示 - コミットの履歴の一覧を表示する。 - コミット毎に変更ファイルの一覧が表示される。 • 変更ファイルの一覧から、差分を見ることができる。 - 差分エディタで、部分的に前のコミットから戻したりできる。 - あるコミットからブランチを作成できる。 - あるコミットにカレントを切り替えることができる。 - などなど 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 32
  33. 33. よく使うコマンド(2)  追加 - リポジトリに管理されていないファイルを追加します。 - 該当のファイルを右クリックすると出てきます。 - NotesDBでは新しい設計要素を作成した時に必要になります。 - コミット時に「バージョン管理下のファイルではありません」に出てくるので、 ここでチェックを入れても同じ結果になります。  削除 - ファイルをリポジトリ管理下から削除し、ローカルからも物理的にファイルを 削除します。 - 「削除(ローカルを保持)」だとファイルをリポジトリ管理下から削除しますが、 ローカルからはファイルを削除しません。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 33
  34. 34. 注意事項  プルする場合は、Designerで開いているDBを閉じる。 - 右クリック→「アプリケーションを閉じる」で閉じられます。 - 理由:稀に同期がうまくいかず、ファイルの内容が空になるなどの不具合が あります。  フェッチは使用しない - フェッチはマージされず、また現在のローカルソースには手を加えず、新し いブランチができる。 - ブランチが理解できるようになったら、フェッチ→マージのほうが細かいコン トロールができるので良い。  BugFixと機能追加のブランチは分ける 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 34
  35. 35. Issuesの使い方  GitHubにおけるIssuesは、タスクと同義と考えてよいです。  バグの情報の他に、やるべきことなどを登録しておきます。  チケット駆動開発においては、先にチケット(Issue)を作成し、それ に従って開発を行い、チケットと同じ単位でコミットするのが基本で す。(No Ticket, No Commit)  コミットする際にコミット・コメントにIssue番号を入力することで、連 携できます。連携すると、GitのコミットコメントのIssue番号がIssue 画面へのリンクとなり、対象のIssueにコミットコメントがIssueのコメ ントとして自動的に追加されます。 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 35
  36. 36. Issueラベルの意味       bug :バグ duplicate :重複(他のIssueと同現象) enhancement:改善要望 invalid :報告の間違い question :質問 wontfix :対応しない(仕様とするなど) 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 36
  37. 37. 今回話し足りないこと      社内Git環境の構築と、新しいGitリポジトリの作成 運用ルールについて ブランチやマージの概念、使い方 チケット駆動開発について Redmine、ALMiniumの紹介、Gitとの連携 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 37
  38. 38. 参考資料  サルでもわかるGit入門:http://goo.gl/2zmdU  @IT:ガチで5分で分かる分散型バージョン管理システムGit: http://goo.gl/KlbZR  @IT:かんばん!~もし女子高生がRedmineで「スクラム」開発をし たら:http://goo.gl/i5Ckw  ドットインストール:gitの基礎:http://goo.gl/2yOgd  やる夫で学ぶ gitcore-tutorial/Introduction:http://goo.gl/mnQYn 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 38
  39. 39. 22/01/2014 Version: [###] Classification: Internal Owner: [Insert name] 39

×