🎃

GitHubとの連携~【連載】実況パズルプログラミング

2024/03/31に公開
<< Back -- Index -- Next >>

実況パズルプログラミングの連載第4回目です。 パズルアプリケーションを作成しながら、作成過程で思ったこと、考えたこと、検討したことなどをブログ風に書いていきます。

今回は「GitHubとの連携」からです。

似たものを比較する

そのまえにちょっとだけ前回の補足です。

前回Pythonのパッケージ、モジュールがまだ良く分かっていないと話しました。 これらはJavaでいえば何でしょう。 多分PythonのパッケージはJavaのJARで、PhthonのモジュールはJavaのパッケージに近いのかもしれません。 そう考えると少し分かったような気がしてきました。

良くわからない状態で放っておくより、無理やりでも何か知っているものと対応付けて学習すると習得が早いように思います。 学習が進むにつれて似ている点、似ていない点が徐々に明らかになってきます。 さらに理解が進むとそれぞれの長所、短所が分かってきます。 もっと熟考すると短所の改善方法などを編み出してスキルアップできます。

すでによく知っているものでも何かと比較することで特徴が明らかになることもあります。 比較して考える習慣を身に付けると良いかもしれません。

Gitとは

Subversionは長年使いましたが、GitとGitHubは初心者です。 まだGitは良く分かっていませんが一応現段階の知識の概略を整理しておきます。 Subversionは作業領域で編集してリモートリポジトリにコミットしての繰り返しです。 Subversionの領域は2つですが、GitHubを使う場合は領域が4つもあります。
(1)作業領域(3)ローカルリポジトリ(4)リモートリポジトリ(GitHub)、そして(1)と(3)の間に(2)ステージです。(1)で作業完了の後(2)(3)(4)の順番で適宜変更を転送していかないといけません。

大雑把にいうと次のようなコマンドを使います。 作業領域にローカルリポジトリを作るコマンドがgit initです。(2)に送り出すのがgit addで(3)に送り出すのがgit commitで(4)に送り出すのがgit pushです。 git pushする前にターゲットのリモートリポジトリ(GitHub)の場所に名前を付けておくのがgit remote addです。

Gitローカルリポジトリ作成

最初にローカルリポジトリを作成します。 Eclipseのパッケージ・エクスプローラーでプロジェクトを右クリックし「チーム」「プロジェクトの共用」を実行します。

表示されるダイアログで「Git」を選択し、「次へ」ボタンを押します。

「Gitリポジトリの構成」で「プロジェクトの親フォルダー内のリポジトリを使用または作成」にチェックを入れます。

これによりプロジェクトディレクトリ直下に「.git」ディレクトリができます。 しかし警告が表示されます。「Eclipseワークスペースにリポジトリを作成することはお勧めしません」。 EGitユーザーマニュアルを少し眺めましたが警告の理由は分りませんでした。 少し不安ですがこのまま進めます。「リポジトリの作成」ボタンを押して、「完了」ボタンを押します。 ちなみに私の場合ワークスペースの場所は$HOMEの下に変更してあります。

いったんGitBashでgit statusを実行して状況を確認します。

$ git status
On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	.project
	.pydevproject
	.settings/
	okoze/

nothing added to commit but untracked files present (use "git add" to track)

git initが実行されたようです。 Eclipse使わないでGitBashからgit initを実行した方が早いかもしれません。

Gitローカルリポジトリにコミット

コミットする前に「.gitignore」ファイルを作成します。このファイルを作成しておかないとキャッシュなど余計なものがリポジトリに登録されてしまいます。「Python gitignore」で検索します。 検索でヒットした次のサイトを参考に「.gitignore」ファイルを作成しましょう。

Python.gitignore

Eclipseのパッケージ・エクスプローラーでプロジェクトを右クリックし「新規」「ファイル」を実行します。 次に表示されるダイアログの「ファイル名」に「.gitignore」と入力します。「.gitignore」のエディタが開くので先ほど検索したサイトのCodeをコピー&ペーストして保存します。

コミットの準備ができました。 Eclipseのパッケージ・エクスプローラーでプロジェクトを右クリックし「チーム」「コミット」を実行します。「Gitステージング」というビューが開くので、「ステージされていない変更」の右側「++」アイコンをクリックします。 すべてのファイルが「ステージされた変更」に移動します。

この時点でのスクリーンショットではないのですが「Gitステージング」のビューを掲載します。

またGitBashでgit statusを実行して状況を確認します。

$ git status
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
	new file:   .gitignore
	new file:   .project
	new file:   .pydevproject
	new file:   .settings/de.loskutov.anyedit.AnyEditTools.prefs
	new file:   .settings/org.eclipse.core.resources.prefs
	new file:   okoze/__init__.py
	new file:   okoze/__main__.py

git addが実行されたようです。 右側の「コミット・メッセージ」欄に「Hello, world! プロジェクトを作成する」と記入して「コミット」ボタンを押します。

再びGitBashでgit statusを実行して状況を確認します。

$ git status
On branch main
nothing to commit, working tree clean

git commitが実行されたようです。

GitHubリポジトリの作成

GitHubのアカウントがなければ作成します。 そしてGitHubに新しくリポジトリを作成します。 名前は「okoze」とします。名前以外はデフォルトの設定で作成します。ここはそう難しくないと思うので画面は省略しました。方法が良く分からなければ「github 使い方」でGoogle検索してください。

Eclipseのssh設定

EclipseからGitHubにはsshを利用して接続します。 その準備としてEclipseでsshの設定が必要です。「Eclipse GitHub ssh」で検索します。 次のサイトを参考にしました。

Eclipseでgit操作(GitHubからcloneしてpushまで/ssh接続)

参考サイトにスクリーンショットが掲載されているのでここでは文字だけで説明しておきます。次項以降も同様です。

  • Eclipseのメニューから「ウィンドウ」「設定」を実行する
  • 表示されるダイアログの左のフィルタ欄に「ssh」と入力する
  • フィルタされた項目から「SSH2」を選択する
  • 「鍵管理」タブを選択する
  • 「RSA鍵の生成」ボタンを押して鍵を生成する
  • 下方の「秘密鍵の保存」を押して鍵を保存する
    • パスフレーズの警告が出ますが私はそのまま「OK」ボタンを押した
  • 保存するファイル名は「pleiades23_id_rsa」として保存する
  • 画面の中央に「ssh-rsa」で始まる公開鍵が表示されているので公開鍵を選択してコピーする。この公開鍵は次の項目で使用する

以上でEclipseでの操作は終了です。

GitHubのssh設定

続けてGitHubのページに移ります。

  • プロジェクトではなくユーザーのSetting画面を表示する。 右上隅のアイコンをクリックして「Settings」を選択する
  • 左側のリストから「SSH and GPG keys」を選択する
  • 「New SSH key」ボタンを押す
  • 表示された画面の「Title」に「pleiades23_id_rsa」と入力する
  • その下の「Key」欄にEclipseでコピーした「ssh-rsa」で始まる公開鍵をペーストする
  • 「Add SSH key」ボタンを押する
  • 次に「okoze」リポジトリを表示する
  • Quick setupに表示されているURLをコピーする
    • 私の場合は「git@github.com:kibi2/okoze.git」

以上でGitHubの作業は終了です。

EclipseからGitHubへpushする

  • Eclpseに戻ってSSHの画面を閉じる
  • 「Gitステージング」ビューの左下「HEADのプッシュ」ボタンを押す
  • 表示されるダイアログの「URL」に先ほどGitHubでコピーしたURLが入力されていることを確認して「プレビュー」ボタンを押す
  • 次のダイアログでも「プレビュー」ボタンを押す
  • 次のダイアログで「プッシュ」ボタンを押す
  • 「プッシュ結果」ダイアログが表示されるので内容を確認して「閉じる」ボタンを押す
  • GitHubページの「Code」タブでokozeプロジェクトがリモートリポジトリに保存されていることを確認する

いったんGitBashでgit remote -vを実行して状況を確認します。

$ git remote -v
origin	git@github.com:kibi2/okoze.git (fetch)
origin	git@github.com:kibi2/okoze.git (push)

$ git diff --stat main origin/main

$

git remote add git pushが実行されたようです。

GitHubでライセンスを追加する

次のサイトを参考にしてプロジェクトにライセンスファイル(LICENSE)を追加します。

リポジトリへのライセンスの追加

ライセンスはGNU GPLv3にしました。

Eclipseでpullする

リモートリポジトリの内容を変更したのでローカルリポジトリに反映します。

  • Eclipseのパッケージ・エクスプローラーでプロジェクトを右クリックし「チーム」「プル」を実行する
  • GitHubで行ったリモートリポジトリの変更内容がローカルリポジトリに反映される
    • okozeプロジェクト直下にLICENSEファイルがあることを確認してください。
  • 確認ダイアログが表示されるので内容を確認してダイアログを閉じる

終わりに

今回はGitHubを使ってバージョン管理ができるようにしました。リモートリポジトリの場所は「kibi2/okoze」です。ちなみに「kibi2」は私の屋号から取っています。 Gitの操作はEclipseのGUIを使うよりGitBashで行った方が手早いように感じました。

やっとプログラムの作成環境ができあがりました。 いよいよ次回からはプログラムの実装に入ります。 といってもまだまだ決めないといけないことやら調べないと分からないことがたくさんあるのでどうなることやら。

続きは次回で、またお会いしましょう。


<< Back -- Index -- Next >>
GitHubで編集を提案

Discussion