# jrnlへの貢献

jrnlへの貢献を歓迎します。バグの報告、ドキュメントの改善、リリースのテスト、機能やバグに関する議論への参加、コードの作成など、さまざまな形での貢献が可能です。

## 目次

- 行動規範
- バグの報告
- ドキュメントの編集
- テスト
- 機能リクエストとアイデアの提出
- jrnlの開発

## 行動規範

まず始めに、行動規範をお読みください。

## バグの報告

バグは新しい問題を開くことで報告してください。できるだけ詳細に説明してください。多くのバグは特定のオペレーティングシステムやPythonのバージョンに固有のものなので、その情報も含めてください！

## ドキュメントの編集

ドキュメントにタイプミスや間違いを見つけた場合は、すぐに修正してプルリクエストを送ってください。何を変更すべきか不確かだが問題を見つけた場合は、「ドキュメントの変更」タイプで新しい問題を開くことができます。

ドキュメントを編集するには、developブランチの`docs/*.md`ファイルを編集します。プロジェクトのルートディレクトリで`poe docs-run`を実行し、ブラウザでlocalhost:8000にアクセスすることで結果を確認できます。

### 外部エディタとヒントとコツ

便利だと思うjrnlのコマンドラインテクニックを共有したい場合は、"ヒントとコツ"セクションに追加するとよいでしょう。特定の外部エディタとの統合に関するアドバイスは、"外部エディタ"セクションに追加できます。

## テスト

jrnlの保守作業の多くは、コーディングよりもテストに関わるものです。

jrnlの性質上、非常に機密性の高いデータを扱うため、データ損失のリスクを冒すことはできません。jrnlには包括的な自動テストスイートがありますが、ユーザーテストはこのリスクを軽減する上で極めて重要です。

### プレリリース

プレリリースは通常のリリースと同様にPyPiを通じてデプロイされます。pipxを使用してそれらを取得し、テストすることができます。各リリースで変更された内容についてはチェンジログを参照してください。

### プルリクエスト

gitに慣れている場合は、特定のプルリクエストをフェッチし、自分でテストして、結果を報告してください。新機能の動作をスクリーンキャストで示すとなおよいでしょう。

### バグ報告の確認

GitHubの問題には常にオープンなバグがあり、多くは特定のOS、Pythonバージョン、またはjrnlバージョンに固有のものです。「jrnl v2.2、MacOS 10.15、Python 3.8.1で確認」といった簡単なコメントでも、バグの追跡に非常に役立ちます。

### 自動テスト

新しい自動テストの追加方法については、以下の開発セクションを参照してください。

## 機能リクエストとアイデアの提出

jrnlに対する機能リクエストやアイデアがある場合は、新しい問題を開いて機能の目的と関連するユースケースを説明してください。私たちはあなたと議論し、それがプロジェクトに適しているかどうかを決定します。

新機能について議論する際は、私たちの設計目標を念頭に置いてください。jrnlは一つのことをうまく行うことを目指しています。私たちにとって、それは以下を意味します：

- 機敏であること
- シンプルなインターフェースを持つこと
- 機能の重複を避けること

## 開発

### 環境のセットアップ

jrnlを開発するにはpoetryをインストールする必要があります。poetryがプロジェクトの他のすべての依存関係を管理します。

### ブランチの理解

jrnlは主に2つのブランチを使用します：

- `develop` - 継続的な開発用
- `release` - リリース用

一般的に、プルリクエストは`develop`ブランチに対して行われるべきです。

### 一般的な開発コマンド

`pyproject.toml`にコマンドの一覧があります。ユーザーは`poe`の後にコマンド名を入力することでコマンドを実行できます（Poe the Poetは単独で、または`poetry install`の一部としてインストールできます）。

典型的な開発ワークフローには以下が含まれます：

- 依存関係のインストール：
- `poetry install`
- 仮想環境の有効化：
- `poetry shell`
- 仮想環境でソースを実行：
- `jrnl`（必要に応じて引数を付けて）
- テストの実行：
- `poe test`
- コードのフォーマットをスタイルに標準化：
- `poe format`

### 自動テストの更新

バグの解決や新機能の追加時には、将来その機能が壊れるのを防ぐためにテストを追加してください。テストでカバーされていない機能に気づいた場合は、テストのみのプルリクエストを提出することもできます。

テストには、ユニットテスト用にpytestを、統合テスト用にpytest-bddを使用しています。すべてのテストは`tests`フォルダーにあります。

多くのテストは、他のテストと同じフォーマットの`*.feature`ファイルを編集するだけで作成できます。より複雑な機能については、`tests/lib/`にステップを実装し、それを`feature`ファイルのテストで実行する必要があるかもしれません。

### プルリクエストの提出

準備ができたら、プルリクエスト（PR）を提出してください。jrnlのメンテナーは通常2週間ごとにプルリクエストをレビューしますが、継続的統合パイプラインは数分以内にあなたのコードに対して自動テストを実行し、さまざまな環境で見つかった問題を報告します。

プルリクエストのテンプレートにはハウスキーピング項目のチェックリストが含まれています。提出時に必要に応じてそれらを記入してください。

プルリクエストにテスト失敗が含まれている場合、おそらくレビューされず、確実に承認されません。ただし、テスト失敗の解決に助けが必要な場合は、PRでその旨を言及してください。

### 作業対象を見つける

jrnlのGitHub Issuesをラベルで検索して、作業対象を見つけることができます。以下は検索する価値のあるラベルです：

- critical
- help wanted
- bug
- enhancement

マイルストーンをレビューして、プロジェクトの優先事項を把握することもできます。

### 新しいプログラマーとPythonを初めて使うプログラマーへの注意

jrnlは発足以来かなり成長しましたが、全体的な複雑さ（エンドユーザープログラムとしては）は比較的低く、コードを理解しやすいと思います。

質問がある場合は、遠慮なく聞いてください！Pythonは初心者プログラマーを歓迎し、オープンなコミュニティとして知られています。コードをフォークして自由に試してみてください！私たちと共有したいものを作成した場合は、プルリクエストを作成してください。プルリクエストが完璧で、慣用的で、すぐにマージできるコードであることは期待していません。一緒に取り組んでいきましょう！

GitHub « Previous