はじめに
iOSアプリを作ってみたいけど
何から始めて良いのかわからない
とりあえず、
「やってみました」記事を参考に
地図アプリを真似てみようと思う
という記事の9回目です。
今回は、いままでやってきたことを git でソースコード管理し、GitHub にて公開までします。
とりあえず、今回のシリーズは、これで終了の予定。
懺悔(ざんげ)
- 今回のシリーズは、アプリを「作ってみる」ことが主眼だったので git に関することは「あとまわし」だったけど、本当であれば「最初」にすることだと思います
- そのようなこともあり、今回の記事は、あとからgitでソースコード管理し、GitHubと連携することになります
- 一部の方には参考になると思いますが、多くの方には参考になりません
GitHubアカウントの作成
- ブラウザで、ここ↓にアクセス
- https://github.com/join
- 手順などの詳細は、他の記事を参照してください
- 簡単に作成できるはずです
ソースコード管理対象の確認
- 【なぜ?】
- 権利(著作権など)の侵害は、法律違反
- 違反すると罰せられる
- 他人のものを、自分のもののように公開するのは、格好が悪くない?
- 権利(著作権など)の侵害は、法律違反
- 手順
- 「ターミナル」アプリを起動
- Launchpadからでも、アプリメニューからでも、好きな方法で起動する
- Launchpadからでも、アプリメニューからでも、好きな方法で起動する
- 「ターミナル」アプリを起動
-
「ターミナル」にて以下のように、プロジェクトフォルダ全体に対し検索
- 【なぜ?】
- cd で地図アプリ(MyGpsMap)のプロジェクトフォルダへ移動している
- プロジェクトフォルダの位置に関しては、この記事を参照
- grep コマンドは、テキストファイル内の文字列を検索するツール
- -r オプションは、サブフォルダ全てを検索対象と指定している
- -i オプションは、大文字小文字を区別せず検索することを指定している
- 'copyright' は、検索文字列を指定している
- 最後の * は、全てのファイルが対象であることを指定している
- cd で地図アプリ(MyGpsMap)のプロジェクトフォルダへ移動している
console% cd $HOME/github/shinobee/MyGpsMap/ % grep -r -i 'copyright' *
- 【なぜ?】
-
実行結果は、以下の通り
- 他者(shinobee以外)が copyright を持っているファイルが見つからない
- プロジェクトフォルダ全体を公開しても大丈夫
- プロジェクトフォルダ全体を公開してくれた方が、使う(git cloneする)人もファイルの過不足が気にならないので「楽」だと思います
```text:console
MyGpsMap/ViewController.swift:// Copyright © 2019 shinobee. All rights reserved.
MyGpsMap/AppDelegate.swift:// Copyright © 2019 shinobee. All rights reserved.
MyGpsMap/SceneDelegate.swift:// Copyright © 2019 shinobee. All rights reserved.
Binary file MyGpsMap.xcodeproj/project.xcworkspace/xcuserdata/shinobee.xcuserdatad/UserInterfaceState.xcuserstate matches
MyGpsMapTests/MyGpsMapTests.swift:// Copyright © 2019 shinobee. All rights reserved.
MyGpsMapUITests/MyGpsMapUITests.swift:// Copyright © 2019 shinobee. All rights reserved.
```
GitHubリポジトリの作成
-
GitHubにログイン
- ブラウザで https://github.com/login を表示
- 【なぜ?】
- OSS(Open Source Software)のプロジェクトは、GitHubで公開で間違いないから
- GitHubでのプロジェクト作成は、ブラウザを使うから
- 自分は、他の手段を知らない
-
GitHubにリポジトリを新規作成
- 画面右上の「+」をクリックし、「New repository」を選択
- 以下のようにレポジトリ情報を入力
- [Repository name]は、MyGpsMap
- [公開範囲]は、Public
- このプロジェクトは「公開」する
- 必要に応じて「非公開 Private」を選択しても可
- [Initialize this repository with a README]は、チェックを入れないでOK
- [.gitignore]は、変更しないでOK
- [Add a license]は、変更しないでOK
XcocdプロジェクトとGitHubリポジトリの連携
- GitHubアドレスを登録
-
「ターミナル」にて以下のように、コマンドを実行
- 【なぜ?】
- GtHubでリポジトリを作成したあとに表示された「Quick setup」に書かれていたから
- このコマンドを実行することで、GitHubのリポジトリを連携づけできる
- 『プロジェクトに教えてあげる』と考えるほうが理解しやすいかも
console% cd $HOME/github/shinobee/MyGpsMap/ % git remote add origin https://github.com/shinobee/MyGpsMap.git
- 【なぜ?】
-
- GitHub と同期
-
「ターミナル」にて以下のように、コマンドを実行
- 【なぜ?】
- GtHubでリポジトリを作成したあとに表示された「Quick setup」に書かれていたから
- このコマンドを実行することで、GitHubのリポジトリと同期(今回はpush≒アップロード)できる
- なお、この時点では全てのファイルが同期(push)されていない
- 今までの記事では、ソースコード管理をしてこなかったので、Xcodeが自動作成した初期状態のファイルが同期(push)対象
- これ↑が理解できない人は、他の人の記事をもとにGitについて勉強しましょう
console% git push -u origin master
- 【なぜ?】
-
なお、以下のようなコマンド実行結果が出力(表示)された
console
-
Enumerating objects: 33, done.
Counting objects: 100% (33/33), done.
Delta compression using up to 4 threads
Compressing objects: 100% (29/29), done.
Writing objects: 100% (33/33), 11.30 KiB | 2.82 MiB/s, done.
Total 33 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), done.
To https://github.com/shinobee/MyGpsMap.git
- [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.- ブラウザでgithubのリポジトリを表示したら以下のような状態<br>
```text:console
% cd $HOME/github/shinobee/MyGpsMap/
% git add .
```
-
プロジェクトフォルダ以下の全てのファイルを git で管理
- 「ターミナル」にて以下のように、コマンドを実行
- 【なぜ?】
-
commit で管理対象ファイルを確定させることを指示
-
-m オプションで、コメントを記録
console% cd $HOME/github/shinobee/MyGpsMap/ % git commit -m 'update MyGpsMap project'
-
- 【なぜ?】
- 「ターミナル」にて以下のように、コマンドを実行
-
git の内容をGitHubと同期
- 「ターミナル」にて以下のように、コマンドを実行
-
【なぜ?】
- Mac上での変更内容をGitHubに登録するため
console
-
- 「ターミナル」にて以下のように、コマンドを実行
% git push
Enumerating objects: 35, done.
Counting objects: 100% (35/35), done.
Delta compression using up to 4 threads
Compressing objects: 100% (24/24), done.
Writing objects: 100% (24/24), 126.10 KiB | 21.02 MiB/s, done.
Total 24 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), completed with 5 local objects.
To https://github.com/shinobee/MyGpsMap.git
091844c..c7f6b12 master -> master
```
- ブラウザでgithubのリポジトリを再表示(reload)したら以下のような状態
今回の到達点
- プロジェクト(MyGpsMap)がGitHubにて公開された状態になった
さいごに
- このシリーズの最初に書いた「+αの目標」は達成できたのでしょうか?(自問)
- 説明を書き始めると、どこまで深く説明して良いのかわからなくなる
- 軽く読み切れる記事のボリュームを考えて説明を書いていたので、説明不足感があったかもしれません
- その中で、できるだけ説明を書いたつもりだけど、余計にわかり難くなったとしたら、ごめんなさい
世の中に「やってみました」記事は、たくさんある。
多くの場合、同じことをすれば同じ結果を得ることができる。
しかし「なぜそのようなことをするのか?」を
解決できないから自分が成長しない。
『人が書いた「やってみました」記事を参考に
できるだけ「なぜ?」を解決しながらやってみよう』(汗)
連載
- [はじめてのiOSアプリ]xcodeで地図アプリを作成(その1:プロジェクト作成)
- [はじめてのiOSアプリ]xcodeで地図アプリを作成(その2:地図表示)
- [はじめてのiOSアプリ]xcodeで地図アプリを作成(その3:位置情報取得)
- [はじめてのiOSアプリ]xcodeで地図アプリを作成(その4:位置情報と連携した地図表示)
- [はじめてのiOSアプリ]xcodeで地図アプリを作成(その5:アプリアイコン設定)
- [はじめてのiOSアプリ]xcodeで地図アプリを作成(その6:拡大・縮小ボタン追加)
- [はじめてのiOSアプリ]xcodeで地図アプリを作成(その7:地図を拡大・縮小)
- [はじめてのiOSアプリ]xcodeで地図アプリを作成(その8:地名表示)
- [はじめてのiOSアプリ]xcodeで地図アプリを作成(その9:ソースコード管理)