はじめに
GitHubを最近使い始めたばかりの方や、これから使ってみたいという方にとって、リポジトリに置いてある色々なファイル、フォルダの意味がよくわからず少し戸惑うことがあるかもしれません。
この記事では、そんな疑問を解消するために、ほとんどのリポジトリで共通して見られるファイルやフォルダの役割をざっくりと解説していきます。
よくリポジトリに共通して置いてあるもの一覧
高確率で置いてあるものをまとめてみました。他にもよく置かれるものはあると思うのですが、とりあえず主要なものだけ集めています。
- README.md:リポジトリの顔となる説明書
- .gitignore:リポジトリへ上げたくないファイルを無視(ignore)する設定ファイル
- .github:issueやpull requestのフォーマットなどを置いておく隠しフォルダ
- LICENSE:リポジトリのOSSライセンスが記入されたファイル
- CONTRIBUTING.md:OSS開発者が最初に見るべきガイドライン
私が最近使用している、Pythonでクロスプラットフォームアプリ開発ができるフレームワークfletのリポジトリを紹介してみます。上で述べているファイル・フォルダがちゃんと置いてあるので探してみてください。
README.mdとは?
どのリポジトリを見ても必ず存在するファイルがREADME.mdです。リポジトリのホームにそのリポジトリの説明を表示するためのmarkdown記法で書かれた文書ファイルです。リポジトリの直下に置くことで勝手にGitHubがホーム画面にREADME.mdを表示してくれます。
markdown記法については、GitHub用に多少カスタマイズされたものが用意されているので、下記の公式ドキュメントを参考にしてみてください。
.gitignoreとは?
頭にドットがつく隠しファイルです。このファイルもほとんどのリポジトリに置いてあると思います。この中で指定された拡張子のファイルをGitHubにアップロードしないという設定ファイルです。
# Python
__pycache__/
*.pyc
.venv/
venv/
# img
.png
.jpg
.HEIC
# macOS
.DS_Store
GitHubはソースコードをクラウドで管理するために設計されており、リポジトリ全体の容量が5GBまでと制限されています。よって、画像処理をするソースコード自体をローカルからアップロードはできても、容量の問題から画像処理プログラムが処理して吐き出した大量の画像ファイルなどはアップロードできません。勝手に画像などがアップロードされないように、あらかじめ無視する拡張子を決めておけば便利です。
また、Pythonの.venvなどの仮想環境を作る時にできるフォルダや、macOSを使っている時に生成される.DS_Storeなどのプロジェクトとは直接関係のないメタファイルなどをアップロードしたくないときなどに役立ちます。
.githubとは?
頭にドットがつく隠しフォルダです。issueやpull requestのときのテンプレート(mdやyaml)をここに置くことで、GitHubが自動で反映してくれます。以下のようなフォルダ構造になっていることが多いです。
.github/
├── ISSUE_TEMPLATE/
│ ├── bug_report.md # バグ報告用のIssueテンプレート
│ └── feature_request.md # 機能要望用のIssueテンプレート
└── pull_request_template.md # プルリクエスト用のテンプレート
LICENSEとは?
よくリポジトリの右側にMIT LICENSEやApatch 2.0と書かれているのを見たことがあると思います。このように、リポジトリ単位でOSSライセンスと呼ばれるソースコードを他の人がどのように利用・配布・改変できるかを定めた規約が書かれたファイルになっています。
必ずOSSライセンスが定めているルールを確認し、遵守してください。
CONTRIBUTING.mdとは?
リポジトリのドキュメントの誤字修正やバグ報告、機能追加などOSS開発に関わってみたい方が最初に読むべきリポジトリのルールがまとめられている文書ファイルです。
それぞれのリポジトリで効率よく開発するために独自のルールが決められているので、一度目を通してガイドラインに従ってissueを出したり、pull requestしてみましょう。
おわりに
GitHubは理解が深まれば深まるほど、こんなに便利なサービスが無料なのかと驚きますね。
リポジトリの構造を理解して、個人開発やチーム開発にどんどん活用していきましょう!