【第3回】初心者二人で0から麻雀アプリ開発

[第2回](https://qiita.com/dashun814/items/9f8f0d78917456ce1b6d) ← 今ココ → 第4回(多分一週間後)

#改版履歴
2020/11/8 投稿

#第3回会議(2020年11月7日)
今回はとある事情で５時間を超える作業時間となりました……
SSHさん、まじミステリアス。

###議題

- 画面の仕様について
- バージョン管理システム環境構築
- Swift・ios SDKの勉強方法について

#画面の仕様について
前回の会議では、主要な画面と機能について話し合い、簡単に図案化しました。
今回は、具体的な機能内容と、おおまかな画面レイアウトの認識統一を行いました。

なお、図案化にはGoogle Driveの拡張機能で追加できる diagram.net を使用しています。

主要な機能として、以下の画面と機能を実装する予定です。

- ホーム画面(カレンダー機能、シフト入力機能、成績入力機能)
- シフト表示画面(シフト表示機能)
- 成績表示機能(成績表示機能)
- 設定画面(固定入力登録機能)

ホーム画面の機能とレイアウトについては固まってきました。
他の画面レイアウトや機能については、引き続き案出ししていき方針をまとめていく予定です。

#バージョン管理システム環境構築
設計段階の途中ではありますが、実装工程に向けてバージョン管理システムを導入することにしました。

ホスティングサービスが無料で利用できること、利用者が多く、ネットに情報がたくさんあることから、今回はGitを利用することに決定しました。

導入手順については別途記事にまとめましたので、よろしければご覧ください。
[文系卒開発初心者がまとめるGitHubの使い方](https://qiita.com/RTkd59/items/078d7c31a5cd61ac3770)

今記事では、導入の際に苦戦したことを中心にまとめたいと思います。

　
####リモートリポジトリとの紐付けができない
問題①
[たけだ](https://twitter.com/RTkd59)が作ったリモートリポジトリを、[だしゅん](https://twitter.com/aiAg_mj)のローカルリポジトリに紐付けようとしたところ、以下のエラーがおきました。

```
remote: Permission to ~~.git denied to ~~.
fatal: unable to access 'https://github.com/~~.git/': The requested URL returned error: 403
```

どうやら、リポジトリへのアクセス権限がないですよってやつのようです。

結論からいうと、他の人のリモートリポジトリを使って開発する際には、共同で使うための設定が必要でした。
方法はいくつかあるようですが、今回のプロジェクトではCollaborators登録をして編集権限を付与する方法を採用しました。
[githubで共同開発 招待方法](https://qiita.com/s56258/items/f650b3e2b3d76c433e6c)
[GitHub のフォーク （fork） とプルリクエスト （pull request） の使い方](http://cuaoar.jp/2013/03/github-fork-pull-request.html)

　


####SSH通信でGitHubとやりとりできない
問題②
HTTPS通信だと毎回認証が必要だけど、SSH通信ならスムーズにいけるよ、という情報を目にしたので、設定してみることに。
これが沼のはじまりでした……

公開鍵の登録後に出たエラーがこちら


```
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
```

拒否されています。かなしみ

鍵の作り方、GitHubの設定に誤りがあるかもといろいろ確認してみましたが、解決に至らず。

ssh_configの設定が怪しいんですが、そもそも何故かロックが解除できず編集を断念。

HTTPS通信でとりあえずは操作できているので、この問題は保留としました。
どなたか解決方法をご存知でしたらご教授ください。

　
####Soursetreeを使ってpush操作ができないPart1
問題③

初心者の僕らには、ターミナルでのGitコマンド操作は難しい……
ということで、GUIツールとしてSoursetreeを導入しました。
[Soursetreeの使い方](https://prog-8.com/blogs/how_to_use_sourcetree)

リポジトリの状態が視覚的に分かりやすいし、commit等の操作もm簡単で良い！！
と思っていたのですが、問題が発生

問題①と同様のエラーがでてpushが成功しません。
clone,commitはできるのになんでだ……

　
と、エラーメッセージをよく確認したらリモートリポジトリのアドレスが違う！
初期設定の段階でいろいろやってみていたときに、リモートリポジトリをforkしていて、そちらの方を対象にcloneしたしまっていたことが原因でした。

アドレスは、事前によく確認しましょう(猛省)
　

####Soursetreeを使ってpush操作ができないPart2
問題④
アドレスを正しいものに変更して、いざpush
今度はpush処理がいつまで経っても完了しません。

直接原因は、アカウントにアクセス権限がないことのようです。
Collaborators登録したのになぁ……

　
この現象は、GitHubに複数アカウントを持っている場合に、アクセス権限がないほうのアカウントでpushを実行しようとして起こるようです。

Macに最初から入っているGitは、認証の際にキーチェーンの資格情報を使用します。
GitHubのアカウントが複数ある場合は、使いたいほうではないアカウント情報をつかって自動で認証しようとする場合があります。

　

解決策としては、環境設定でキーチェーンの登録をいったん削除すると、pushの際にアカウント情報を要求されるようになるので、正しいアカウントで認証を行えます。

~~Macさん、今回はありがた迷惑っす~~

Mac自体の設定や動作による問題も多かった印象です。
マシンの挙動についての理解も深めていく必要があると感じました。




#Swift・ios SDKの勉強方法について
Gitも導入して、いよいよ実装や！！

と思ったのですが、プログラミング言語に触れてからまだ半年、Swiftに至っては存在を知ったのもつい最近というとんでも無知無知マンには、いきなり実装はハードルが高いです。

そこで、まずは勉強会と言う名目で、少しずつでもさわってみようということになりました。

言語はSwift、フレームワークは日本語資料が多いios SDKを選択し、これからアウトプットしていきます。

フレームワークの選定に迷いました。
近年登場のSwiftUIやFlutterにも触れてみたいと思いましたが、まずは基本＆教材が多いものから手をつけていくほうが良いのではと言う判断です。

この選択どうなんですかね……

ともかく、自分たちにとって継続していけそうな勉強方法を採用していきたいと考えています。

勉強の成果については次回以降、順次発信していければと思います。
よろしければご指導ご鞭撻のほどよろしくお願いします。

#おわりに
今回は、画面仕様の認識統一、Git導入、勉強会開催の決定について活動しました。

まだまだ技術記事とは程遠いですが、引き続きやっていこうと思います。

PS.デスクワークの弊害で肩こりがひどくなってきました……
お休みもらえたら温泉巡りでもしようかな……