OPEN SOURCE GUIDE

OSS参加編

オープンソースに貢献する

初心者でも今日からできるOSSへの第一歩

Arrow keys / Space で操作

この編の全体像

ゴール: OSSの仕組みを理解し、初めてのContributionを成功させる

Section 1

OSSとは

オープンソースの定義と代表例
→ オープンソースの文化と参加する意義を知る

Section 2

Fork & Contribution

Fork・Clone・PRの一連のワークフロー
→ 他人のリポジトリに安全に貢献する方法

Section 3

ライセンスとCLA

MIT・Apache・GPLとContributor License Agreement
→ 法的な約束事を理解して安心して参加する

Section 4

コミュニケーション

Issue・PR・レビューのエチケット
→ OSS特有の礼儀と作法を身につける

Section 5

自分のOSSを始める

README・LICENSE・CONTRIBUTING.mdの準備
→ 受け手から出し手になるステップ

OSSとは?

OPEN SOURCE SOFTWARE

ソースコードが公開されていて、誰でも自由に閲覧・利用・改変・再配布できるソフトウェア。

世界中の開発者が協力して作り上げる、ソフトウェア開発のムーブメント。

有名なOSSの例

Linux — OSの核。サーバーの90%以上
React — Meta発のUIライブラリ
VS Code — Microsoft発のエディタ
Git — バージョン管理ツール自体も
Python — プログラミング言語

普段使っているツールの多くがOSS。私たちは既にOSSの恩恵を受けている。

なぜOSSに参加するのか?

01

スキルアップ

実際のプロジェクトのコードを読み、プロの書き方を学べる。コードレビューも受けられる。

02

ポートフォリオ

GitHubのContribution履歴が公開される。就職・転職時に実力を証明できる。

03

コミュニティ

世界中の開発者とつながれる。メンターが見つかることも。

04

恩返し (Giving Back)

自分が使っているツールをより良くする。次の開発者の助けになる。

Fork & Clone

FORK

他人のリポジトリを自分のGitHubアカウントにコピーする操作。GitHub上のボタンで行う。

facebook/reactあなた/react

CLONE

リポジトリをローカルPCにダウンロードする操作。git cloneコマンドで行う。

GitHub上のリポジトリ → PCの中
Terminal — fork & clone

Contribution ワークフロー

Fork

Clone

Branch

Code

Commit

Push

PR

Terminal — full contribution flow

良い最初のContribution

探し方

  • GitHubで good first issue ラベルを検索
  • help wanted ラベルも初心者向け
  • github.com/explore でトレンドを確認
  • 自分が使っているツールのリポジトリを見る

おすすめの始め方

  • ドキュメントの修正 — 誤字・分かりにくい説明
  • タイポ修正 — コードやコメントの誤字
  • テスト追加 — カバレッジの向上
  • 翻訳 — 日本語への翻訳
  • バグ報告 — Issueを立てるだけでも貢献

コードを書かなくてもOSSに貢献できる。まずは小さな一歩から。

CLA (Contributor License Agreement)

CLAとは?

コントリビューターが、自分の提出したコードに対する権利関係を明確にするための法的合意書

初回のPull Request時にサインを求められることがある。

なぜ必要?

  • コードの著作権の帰属を明確にする
  • プロジェクトが安全にコードを使えるようにする
  • ライセンス変更時のトラブルを防ぐ

CLAがあるプロジェクト例

  • React (Meta) — CLA必須
  • Kubernetes (Google) — CLA必須
  • Angular (Google) — CLA必須

大企業主導のOSSに多い。CLAbot が自動で確認する。

ライセンス選び

OSSに参加する際、ライセンスの理解は重要。自分のプロジェクトを公開するときにも必要。

ライセンス 商用利用 改変 再配布 ソース公開義務 特徴
MIT OK OK OK なし 最もシンプル。著作権表示のみ必要
Apache 2.0 OK OK OK なし 特許保護あり。企業での利用に安心
GPL v3 OK OK OK あり (コピーレフト) 派生物もGPLにする必要あり
BSD OK OK OK なし MITに近い。歴史的に古い

迷ったら MIT が一番扱いやすい。企業向けなら Apache 2.0

CONTRIBUTING.md を読む

CONTRIBUTING.md とは?

プロジェクトへの貢献方法を説明するガイドライン文書。PR を出す前に必ず読むこと。

リポジトリのルートに置かれていることが多い。

よくある記載内容

  • 開発環境のセットアップ手順
  • コーディングスタイル・規約
  • コミットメッセージの書き方
  • テストの実行方法
  • PR のテンプレート・ルール
  • Issue の報告方法
🐙 awesome-project / awesome-lib
📄CONTRIBUTING.mdUpdate contribution guidelines
📄CODE_OF_CONDUCT.mdAdd code of conduct
📄LICENSEMIT License
📄README.mdUpdate docs

コミュニケーション

Issue のエチケット

  • 既存のIssueを検索してから新規作成
  • 再現手順を具体的に書く
  • 環境情報 (OS, バージョン) を記載
  • テンプレートがあれば従う

PR の書き方

  • 何を変えたか、なぜ変えたか
  • 関連 Issue を #123 で参照
  • スクリーンショットがあれば添付
  • 小さい PR ほどレビューされやすい

レビューへの対応

  • フィードバックに感謝する
  • 指摘には真摯に対応・修正する
  • 分からない点は質問してOK
  • 議論が長引いたら妥協点を探す

心がけ

  • メンテナーはボランティアが多い
  • 返信に時間がかかるのは普通
  • 英語が苦手でも丁寧に書けばOK
  • 「Thank you」を忘れずに

Code of Conduct (行動規範)

CODE_OF_CONDUCT.md

プロジェクトに参加する全ての人が守るべき行動ルールを定めた文書。

健全で包摂的なコミュニティを維持するために存在する。

推奨される行動

  • 建設的なフィードバック
  • 異なる視点や経験の尊重
  • コミュニティにとって最善なことへの注力
  • 他のメンバーへの共感

禁止される行動

  • ハラスメント・差別的発言
  • 個人攻撃・侮辱的コメント
  • 他者のプライバシー侵害
  • プロフェッショナルでない行動

多くのプロジェクトが Contributor Covenant をベースに採用している。

自分のOSSプロジェクトを始める

必要なファイル チェックリスト

  • README.md — プロジェクトの説明・使い方
  • LICENSE — ライセンス (MIT等)
  • CONTRIBUTING.md — 貢献ガイドライン
  • CODE_OF_CONDUCT.md — 行動規範
  • .gitignore — 不要ファイルの除外
  • Issue テンプレート — バグ報告・機能要望
  • PR テンプレート — 統一されたPR形式

良い README の構成

# プロジェクト名
## 概要 — 何をするツールか
## インストール — 導入方法
## 使い方 — 基本的な使用例
## 貢献方法 — リンク
## ライセンス — MIT等

Tips

  • GitHub の「Use this template」機能を活用
  • gh repo create でCLIから作成も可能
  • CI/CD (GitHub Actions) を早めに設定

まとめ — 今日からOSSに貢献しよう

今日からできる3ステップ

1

興味のあるプロジェクトを見つける

普段使っているツール、GitHub Explore、awesome リスト

2

CONTRIBUTING.md を読み、good first issue を探す

ドキュメント修正、タイポ修正、翻訳でもOK

3

Fork して、ブランチを切って、PR を出す

小さな変更でも立派な貢献。恐れずに行動しよう。

Every expert was once a beginner.

全てのエキスパートも、かつては初心者だった。まずは最初の一歩を踏み出そう。

Appendix: コマンドリファレンス

コマンド 説明
Fork (GitHub UI)他人のリポジトリを自分のアカウントにコピーする(ブラウザ操作)
git clone <url>リモートリポジトリをローカルにダウンロードする
git remote -v登録済みリモートリポジトリの一覧を表示する
git remote add upstream <url>元のリポジトリ(upstream)をリモートとして追加する
git checkout mainmainブランチに切り替える
git pull upstream main元リポジトリの最新変更を取得してマージする
git checkout -b <branch>新しいブランチを作成して切り替える
git add <file>変更をステージングエリアに追加する
git commit -m "<msg>"ステージした変更をコミットする
git push origin <branch>ローカルのブランチをFork先にプッシュする
Pull Request (GitHub UI)変更を元リポジトリに反映してもらうためのリクエストを作成する
gh repo createCLIからGitHubリポジトリを新規作成する
1 / 15