> For the complete documentation index, see [llms.txt](https://andmorefine.gitbook.io/learn-go-with-tests/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://andmorefine.gitbook.io/learn-go-with-tests/meta/contributing.md).

# 貢献

貢献

貢献は大歓迎です。ここが、テストを書きながらGoを学ぶためのガイドが集まる素晴らしい場所になることを願っています。PRを送るか、[こちら](https://github.com/andmorefine/learn-go-with-tests/issues)からissueを作成することを検討してみてください。

## 求めているもの

* Goの機能を教えるもの（例：`if`、`select`、構造体、メソッドなど）。
* 標準ライブラリ内の興味深い機能を紹介するもの。例えば、HTTPサーバーのTDDがどれだけ簡単にできるかを見せてください。
* ベンチマークやレース検出器など、Goのツールがどのように優れたソフトウェアに到達するのに役立つかを紹介してください。

自分のガイドを提出する自信がない場合でも、自分が学びたいことの課題を提出することは貴重な貢献になります。

### ⚠️ 新しいコンテンツのフィードバックを素早く得よう ⚠️

* TDD は反復的に作業してフィードバックを得ることを教えてくれます。貢献したい場合は、ぜひ同じようにすることを強くおすすめします。
  * 最初のテストと実装だけでPRを開き、あなたのアプローチについて議論してください。そうすれば私がフィードバックを返し、軌道修正することができます。
* 勿論オープンソースですが、内容については強い意見を持っています。私に相談するのは早ければ早いほど良いです。

## スタイルガイド

* 常にTDDサイクルを繰り返し示して定着させること。[章のテンプレート](https://github.com/quii/learn-go-with-tests/blob/main/template.md)を見てみてください。
* テストによって駆動される機能を反復することに重点を置いています。`Hello, world`の例は、徐々により洗練されたものにしていき、テストによって駆動される新しいテクニックを学んでいくので、うまくいきます。例えば、以下のようになります。
  * `Hello()` <- 関数の書き方、戻り値の型.
  * `Hello(name string)` <- 引数、定数.
  * `Hello(name string)` <- デフォルトは`if`を使って "world"にする。
  * `Hello(name, language string)` <- `switch`構文。
* 前提となる知識の範囲をできるだけ小さくするようにする。
  * 他の機能で読者を混乱させることなく、教えようとしていることを示す例を考えることが重要です。
  * 例えば、ポインタを理解しなくても`struct`について学ぶことができます。
  * 簡潔であることが重要です。
* [コードレビューコメントのスタイルガイド](https://go.dev/wiki/CodeReviewComments)に従ってください。すべてのセクションで一貫したスタイルを保つことが重要です。
* 読者が実際に動作を確認して触ってみられるように、セクションの最後には実行可能なアプリケーション（例：`main` 関数を持つ `package main`）を用意してください。
* すべてのテストに成功する必要があります。
* PRを上げる前に`./build.sh`を実行してください。
