# 貢献

貢献は大歓迎です。テストを書いてGOを学ぶ方法のガイドのための素晴らしいホームになることを願っています。PRを投稿したり、[ここ](https://github.com/andmorefine/learn-go-with-tests/issues)でできる課題を作成したりすることを検討してみてください。

## 求めているもの

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

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

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

* TDD は反復的に作業してフィードバックを得ることを教えてくれます。
  * 私はフィードバックとコースの修正を提供することができますので、あなたの最初のテストと実装でPRを開き、あなたのアプローチを議論する
* 勿論オープンソースですが、内容については強い意見を持っています。私に相談するのは早ければ早いほど良いです。

## スタイルガイド

* TDDサイクルを常に強化しておくこと。[Chapter Template](https://andmorefine.gitbook.io/learn-go-with-tests/meta/contributing)を見てみましょう。
* テストによって駆動される機能を反復することに重点を置いています。`Hello, world`の例は、徐々により洗練されたものにしていき、テストによって駆動される新しいテクニックを学んでいくので、うまくいきます。例えば、以下のようになります。
  * `Hello()` <- 関数の書き方、戻り値の型.
  * `Hello(name string)` <- 引数、定数.
  * `Hello(name string)` <- デフォルトは`if`を使って "world"にする。
  * `Hello(name, language string)` <- `switch`構文。
* 必要な知識の表面積を最小限にするようにする。
  * 他の機能で読者を混乱させることなく、教えようとしていることを示す例を考えることが重要です。
  * 例えば、ポインタを理解しなくても`struct`について学ぶことができます。
  * 簡潔であることが重要です。
* [コードレビューコメントのスタイルガイド](https://github.com/golang/go/wiki/CodeReviewComments)に従ってください。すべてのセクションで一貫したスタイルを保つことが重要です。
* あなたのセクションは、ユーザーが実際に動作しているのを見て遊べるように、最後に実行可能なアプリケーションを持つべきです。
* すべてのテストに成功する必要があります。
* PRを上げる前に`./build.sh`を実行してください。
