Qiskit に貢献する¶
Qiskit はどのようなバックグランドをもった人にも量子コンピューティングをもたらすことにコミットしたオープンソースプロジェクトです。このページでは、 Qiskit コミュニティーにどのように参加できるかを説明しています。
はじめる前に¶
Qiskit に貢献するのが初めての場合は、コードに飛び込む前に次のことを行うことをお勧めします。
行動規範 を読んでください。
貢献することを決めたリポジトリーの固有の Contributing Guidelines を読んでください。
Qiskitコミュニティと親しくなってください( Slack、 Stack Exchange、 GitHub などを通して)。
作業内容を決定する¶
どのような貢献が適しているのか分からない場合は、以下のフローチャートを参考にしてください:
特定のリポジトリーへの貢献¶
各 Qiskit パッケージには、そのリポジトリーへの貢献に関する特定の情報を詳述する独自の貢献ガイドラインのセット ( CONTRIBUTING.md
ファイルに保存されています) があります。 プロジェクトごとに要件とプロセスがわずかに異なる可能性があるため、特定のリポジトリーに貢献する前に、リポジトリー固有の貢献ガイドラインを必ずお読みください。 メイン・リポジトリーである Qiskit Terra の場合、貢献のガイドラインは こちら にあります。 貢献することができるその他の Qiskit パッケージは、公式の Qiskit Github の個別のリポジトリーとして見つけることができます。
開発環境のセットアップ¶
PythonベースのQiskitリポジトリーへの貢献を開始するには、Python仮想開発環境をセットアップして、 ソース から適切なパッケージをインストールする必要があります。
qiskit-terraのためのクイックガイドについては、 How to Install Qiskit - Contributors YouTube videoを見てください。
Python 以外のパッケージの場合は、CONTRIBUTING.md ファイルで、開発環境の設定に関する詳細を確認する必要があります。
Python仮装開発環境のセットアップ¶
仮想環境は、システム全体のパッケージから開発環境を分離するために、 Qiskit の開発に使用されます。 この方法で、不注意によって特定のシステム構成に依存することを避けます。 開発者は、複数の環境を容易に保守できます (例えば、サポートされている Python のバージョンごとの環境や、古いバージョンの Qiskit の環境など) 。
Qiskit によってサポートされるすべての Python バージョンは、組み込み仮想環境モジュール venv を含んでいます。
まず、venv
で新しい仮想環境を作成してください。 結果として生成される環境は、それを作成したのと同じバージョンの Python を使用し、デフォルトではシステム全体のパッケージを継承しません。 指定されたフォルダーが作成され、環境のインストールを保持するために使用されます。 それは任意の場所に配置できます。 詳しくは、公式の Python の資料 仮想環境の作成 を参照してください。
python3 -m venv ~/.venvs/qiskit-dev
環境フォルダの中にあるアクティベーション・スクリプトを起動することにより、環境をアクティブにします。例えば、bash/zshの場合は次のようになります
source ~/.venvs/qiskit-dev/bin/activate
環境内で pip をアップグレードして、後続のセクションでインストールする Qiskit の依存関係をシステムが見つけられるようにします。
pip install -U pip
Condaユーザーの場合、以下のように新しい環境を作成できます。
conda create -y -n QiskitDevenv python=3
conda activate QiskitDevenv
pip install -e .
プルリクエスト¶
コードへの貢献を受け入れるため、GitHub pull requests を使用しています。
必須ではありませんが、プルリクエストを作成する前に修正中のバグや作業中の機能に関する新しいissueを作成することは、あなたの作業についてコミュニティと議論を始めるための重要なステップです。 このissueは、アイデアやコードでそれを実装するためにどのように協力できるかについて話す場を提供します。 また、コミュニティはあなたが取り組んでいるものを知ることができ、助けが必要な場合は、他のコミュニティやチームメンバーと議論するときにissueを参照できます。
書いているコードを完成させるために助けが必要だったり、完成前に初期的なフィードバックが欲しかったり、実装完了前に共有して議論したい場合、Draft プルリクエストを作成することができます。プルリクエストを作成する時、[WIP] タグ (Work in Progressの意) をタイトルの先頭につけて下さい。これはレビューワーに対して、このPR (プルリクエスト) が最終状態ではなく、変更の可能性があることを明示します。また、完成するまでコミットがマージされないことも意味します。コードがマージ用にレビューされる準備ができた時、自分自身もしくはレビューワーが[WIP] タグを削除できます。
プル リクエストを 「ready for review」 としてマークする前に、以下の PR チェックリストに従っていることを確認してください。 このリストに準拠する PR は、タイムリーにレビューされ、マージされる可能性が高くなります。
プルリクエスト・チェックリスト:¶
貢献している特定のリポジトリーの CONTRIBUTING.md ファイルの要件に従ってください。
すべての CI チェックに合格します (プッシュする前にローカルでテストと lint チェックを実行することをお勧めします)。
導入された新機能に対して、新しいテストが追加されました。
ドキュメントは、新しい/変更された機能に応じて更新されました。
この変更にユーザーが直面する影響がある場合、リリースノートが追加されます。
余分なコメントや印刷文はすべて削除されました。
すべての貢献者が Contributor License Agreement (CLA、貢献者ライセンス同意書) に署名しました。
PRには簡潔で説明的なタイトルがあります。(例:
Fixes Issue1234
は悪いタイトルです!)PR が未解決の問題に対処している場合、PR の説明には
fixes #issue-number
構文が含まれており、PR をその問題にリンクしています ( **PRマージが発生したときに GitHub が問題を自動的にクローズするには、正確な言い回しを使用する必要があります)。
コードレビュー¶
コードレビューはオープンになされ、誰でも見ることができます。メンテナーだけがコミットをマージするアクセス権を持ちますが、プルリクエストへのコミュニティのフィードバックは本当に貴重です。また、コードベースについて学ぶ良い仕組みでもあります。
メンテナンス担当者があなたの作品をレビューするのに数週間待つことは珍しいことではなく、他の内部業務の都合もあります。もしあなたの PR が一週間以上待たされるようなら、コメントで該当するメンテナをタグ付けして、あなたの作品をレビューするように丁寧に伝えてください。
気長にお待ちください! メンテナーには他に優先すべきことがたくさんあるので、あなたの作業がレビューされマージされるまでには時間がかかるかもしれません。良い状態にある (すなわち、 プルリクエスト・チェックリスト: に従っている) PR は、メンテナーがレビューしやすく、タイムリーにマージされる可能性が高くなります。また、メンテナーや他の貢献者と接する際には、常に親切で敬意を払うようにしてください。あなたは、 `the Qiskit Code of Conduct <https://github.com/Qiskit/qiskit/blob/master/CODE_OF_CONDUCT.md>`__を読むことができます。
Contributor License Agreement (CLA、貢献者ライセンス同意書)¶
実際にコードを提出できるようになる前に、貢献者はCLA (貢献者ライセンス同意書) への同意が必要です。CLAに同意することで、貢献内容の著作者であることを証明し、Apache-2.0 ライセンスの規約の下で自由に貢献できることを意味します。
Qiskit プロジェクトへのプルリクエストを行う際、リクエストを挙げた人がCLAに同意済みか否かをbotが判定します。同意済みではない場合は、botが同意書へのリンクとともに対応を促すコメントを返しますので対応をお願いします。 CLA の内容はPDF形式で参照可能です。
注釈
あなたの貢献が業務の一環、または雇用主の所有物として位置づけられる場合は、 corporate CLA に署名をいただいて <qiskit@us.ibm.com>まで送っていただく必要があります。