GitHubを活用しよう（超初級編）

いつのまにかクリスマスもお正月も過ぎてしまいましたが、ようやく DRONEBIRD Advent Calendar 2019の記事を書きました。
今回は、 **GitHubを活用しよう（超初級編）** というタイトルで DRONEBIRD での GitHub 活用の目的と、初期設定から写真データを格納するための一通りの手順をまとめました。

## なぜ DRONEBIRD で GitHub を使うのか
DRONEBIRD では GitHub でのデータ管理を標準にしています。
さまざまなデータ共有サービスがありますが、 GitHub はもともとソフトウェア開発ツールとしてスタートしているため（そこが一見敷居を高めているところなのかなと思いますが）、プログラムを階層で管理することができます。
DRONEBIRD では、プログラムの代わりにデータを階層状に管理することで、必要なデータがどこにあるのかがとてもわかりやすくなっています。
また、オープンソース向けのプラットフォームなので、誰でもどこからでもアクセスができます。
1人ではなくチームで作業をすすめる DRONEBIRD としては、誰でもわかりやすくデータにアクセスできる GitHub が非常に活動に適しているのです。

## GitHub の使い方
### アカウントの作り方
https://github.com にアクセスし、画面に従って
* Username
* Email
* Passeword
を入力し Sign up for GitHub を押します。
![スクリーンショット 2020-01-01 14.43.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115920/bf1c62d0-fa04-8164-8c16-d9a5aabd83e8.png)
![スクリーンショット 2020-01-01 14.45.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115920/c45d5104-124f-3c3d-faa3-63b492bacd07.png)
「Verify」を選択して、パズルを解きます。
![スクリーンショット 2020-01-01 14.55.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115920/001076b4-b93a-f591-7660-a5dc97e284dd.png)
完了したら「Next Select a plan」を押し、料金プランを選択します。
![Screenshot_2020-01-01 Build software better, together(1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115920/47fa4ace-ef4b-d51c-111d-74ce0ce4d1b2.png)
無料プランで問題ありません。
![スクリーンショット 2020-01-01 14.55.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115920/b382f8c0-54f2-c9ff-739a-c7f5c7a2af95.png)
入力フォームの質問に回答して（未選択でもOK） Complete setup を押します。
![Screenshot_2020-01-01 Build software better, together(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115920/5eeea6f4-5b16-fcf6-4150-0576c4512394.png)
登録したメールアドレスに [GitHub] Please verify your email address. という件名のメールが届くのて verify email address をクリックして認証します。
<img width="835" alt="スクリーンショット 2020-01-01 15.07.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115920/99f9e729-62c8-6487-d8ed-892b78c90470.png">
これでアカウント作成は完了です。

### DRONEBIRD の Organization に join する
GitHub には Organization という機能があります。
Organization は、それぞれのメンバーが1つのプロジェクトにアクセスするための共有アカウントです。
アカウントが無事に作成できたら、 DRONEBIRD で活動をするために DRONEBIRD の Organization のメンバーになりましょう。
https://github.com/dronebird
さきほど作成したアカウントの　Username を　Organization　の管理者に連絡して招待をしてもらいます。
招待メールが届くので、そのメールにある join the organization を押すと、 Organization のメンバーになります。

### DRONEBIRD の Code of conduct
なお、 DRONEBIRD には Code of conduct として、 DRONEBIRD のプロジェクトを運営しているCrisis Mappers JAPAN の Organization 内に行動規範を掲載しています。
https://github.com/crisismappersjapan/doc4cmj/blob/master/codeofconduct.md
こちらを熟読して、 DRONEBIRD の活動指針をしっかり理解してください。

### DRONEBIRD のライセンス
Code of conduct にも記載の通り、 DRONEBIRD の Organization に公開ライセンスで格納されているデータは、原則 CC-BY 4.0 （許諾不要・商用利用・二次利用可能）となっています。
© DRONEBIRD/CrisisMappers Japan, CC BY 4.0

ここまでできたら、レポジトリ(repository)にデータを作るという作業に進みます。

### レポジトリ（repository）の作り方
レポジトリとは、プログラムやデータを保存するためのフォルダ（ディレクトリ）のような役割の機能です。データを保存するためには必ずレポジトリが必要です。

#### レポジトリの命名ルール
今回は、 DRONEBIRD で撮影した写真データを格納するためのレポジトリを作ります。
https://help.github.com/ja/github/getting-started-with-github/create-a-repo
レポジトリを作るために、まずレポジトリの名称を考えます。
DRONEBIRD では、撮影データのレポジトリ名の命名ルールを以下のように定めています。
oam_（市区町村名）yyyymmdd（詳細エリア名）nn
oam=OpenAerialMap:OpenAerialMap用のデータを格納しているレポジトリという意味
nn:連番（最低2桁）
詳細エリア:撮影地の大字名や撮影地点の名称（公園の名称等）など。わかりやすい名称をつけてください。

なお、 DRONEBIRD のOrganization にある既存のレポジトリ名の中にはこの規則があてはまっていないものもありますが、いろいろと試行錯誤を重ねてきた結果ということで、ご了承ください。
また、もっと適切な命名ルール案があればぜひご提案をお願いします。

例：
https://github.com/dronebird/oam_kimitsu20190515uchiminowa
oam_kimitsu20190515uchiminowa
2019年5月15日　千葉県君津市内みのわ運動公園にて撮影

また、比較的被害地域が大きく、大規模な撮影を行った場合は、以下のように都道府県レベルでレポジトリを作成し、その下位階層に通常の命名規則に沿ってディレクトリを作成する場合もあります。
oam_kanagawa20191014sagamihara00
https://github.com/dronebird/oam_kanagawa20191014sagamihara00
2019年10月14日　神奈川県（主に相模原市での撮影）
ここは、令和元年の台風19号に関して神奈川県内で撮影されたデータのポータルページとして情報が集約されています。

### レポジトリの作成手順
Organization のトップページ
https://github.com/dronebird
で「new」ボタンを押します。
レポジトリ名を入力し、Descriptionには日本語でデータの概要（災害名、地名等）を記載してください。

公開範囲は必ず「Public」を選択し、
![スクリーンショット 2020-01-04 11.31.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115920/c52693ae-c766-1120-d2a8-2b247515cc4c.png)
Initalize this repository with a README にチェックを入れて「Create repository」を押してください。

これでレポジトリの完成です。

#### データファイルの格納方法
最後に、ドローンで撮影したデータを、作成したレポジトリに格納する方法を説明します。
作成したレポジトリのトップに移動して、「upload files」を押します。
![スクリーンショット 2020-01-04 12.40.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115920/7bcfaf29-cd17-904b-12e8-47113b7536ba.png)
アップロードするフォルダごと drug and drop または「choose your files」を押して、フォルダ単位で
































































ファイルを選択します。数枚であればこの方法でアップロードができます。
なお、撮影したデータのフォルダの名称は特に制限はありません。「photo」や「image」等、撮影したカメラやシステムそのままの名称で問題ありません。

これで、データのアップロードまで完了です！
おつかれさまでした。

---
と、いうことで一通りの作業ができたことになりますが、

最後のファイルアップロードに関して重要なことがあります。
その1つが、GitHubには「ブラウザ経由でリポジトリにファイルを追加する場合、そのファイルは 25 MB 以下でなければなりません。」という制限があるということです。

写真データは、通常数枚で25MBを超えます。
DRONEBIRD では通常、1度の撮影で最低数10枚〜数100枚撮影をしますので、ブラウザ経由ではそのデータを1度にアップロードすることはできません。
そのため、写真データをアップロードするためには GitHub Desktop というソフトを使用します。
GitHub Desktop はデスクトップ型のアプリケーションで、ブラウザ経由ではできない容量の大きいデータでもアップロードを行うことができます。
（ただし、 GitHub の制限でリポジトリはそれぞれ 1GB 未満が推奨されています）

GitHub Desktop については今回は記載しません（次に書きます、たぶん）し、 GitHub には今回紹介した以外にも、Issues, Team等、さまざまな機能があり、 DRONEBIRD ではそのいろいろな機能を活用して活動を進めています。

冒頭にも書きましたが、DRONEBIRD にとって撮影したデータを他のメンバーと共有することで、撮影者以外の人が次の処理を進められることはとても重要です
なかなか現地に行けない私も、アップロードされた写真データからオルソデータを作成して、それを公開するというタスクを引き受けることができます。

ぜひGitHubを活用することで、DRONEBIRD のデータ処理の活動も進んで引き受けてもらえたらと思います。