バグ報告でKiCadをより良く

----------

:christmas_tree: [KiCad Advent Calendar 2015](http://qiita.com/advent-calendar/2015/kicad) の10日目は [qa65000](http://qiita.com/qa65000) さんでした。
この記事は11日目の投稿です。

----------

# はじめに
KiCadを使っている時に、突然落ちてしまったり、処理がおかしくなったりしたらどうしていますか？また、こんなことができたら、という改善案を思い付いたらどうしますか？

フォーラムに書き込むとか、twitterでつぶやくというのもありますが、公式な形で確実に開発チームに声を届けるならバグ報告が一番です。

KiCadはみんなで作り上げているオープンソースのプロジェクトです。開発者だけでなくユーザもプロジェクトの参加者です。オープンソースのプロジェクトでは成果物に関与することを貢献と言いますが、ソースコードを書くことだけが貢献ではありません。ユーザとして利用して問題を報告することもプロジェクトへの貢献です。

この記事ではKiCadをより良くするための、バグ報告の方法についてお話します。

# バグ報告システム Bugs にアクセス
KiCadのバグ報告は launchpad の Bugs で受け付けています：
https://bugs.launchpad.net/kicad

![20151208-10.png](https://qiita-image-store.s3.amazonaws.com/0/103043/86b673b7-eb11-7eda-1d2d-21da6b941e7b.png)

個人的な感想ですが、launchpad の Bugs はちょっと使い方がわかりにくいです。しかも全部英語です。これがバグ報告の敷居を上げていると感じていて、それがこの記事を書く動機になりました。

Bugsにバグ報告を投稿するにはアカウント登録が必要です。
Bugsの右上の「**Log in / Register**」のリンクから登録できます。

# KiCadバグ報告の流れ
KiCadのバグ報告の流れを順を追って説明します。

## バグを報告する
1. バグ報告するには、Bugs画面右上の **Report a bug** をクリックします。

1. 問題をいくつかの単語で記述してくださいという画面になるので、問題を表現する単語を入力して **Next** をクリックします。
![20151208-2.png](https://qiita-image-store.s3.amazonaws.com/0/103043/dd23979b-2a7b-a94e-f986-4e4fb583a075.png)

1. すると入力した単語に関係しそうな登録済みのバグが一覧されます。同様のバグ報告が重複してなされないよう、確認が求められているわけです。同様のバグがないことを確認の上、一番下の **No, I need to report a new bug** 
![20151208-3.png](https://qiita-image-store.s3.amazonaws.com/0/103043/464137be-fc96-22ec-81ad-d56ba2d07cf6.png)
をクリックします。

1. 画面は次のようになります。ここにバグ報告を入力します。
![20151208-4.png](https://qiita-image-store.s3.amazonaws.com/0/103043/76f521f4-c051-2e78-bf01-e45c203fec6f.png)
**Summary:** は、このバグ報告のタイトルとなります。
**Further information:** は、バグ報告の詳細を記入するテキストエリアです。ここには次のような情報を簡潔に記入しましょう。
 - **バージョン情報 version**
   KiCadの "ヘルプ→バージョン情報をコピー" で得られるテキスト情報
 - **動作環境 platform**
    Windows7 64bit、OS X、Ubuntu 15.10、等
 - **問題の説明 description**
 - **再現方法 how to reproduce**
 - **添付ファイル、タグ情報 Tags**
    問題を説明するスクリーンショットやログファイルを添付したい場合、画面下の **Extra options** をクリックしてファイルを添付できます。タグ情報もここで入力できます。タグには対象のプログラム名を設定するのが一般的だと思います。
![20151208-5.png](https://qiita-image-store.s3.amazonaws.com/0/103043/c0cb174c-22c4-0d7e-1a46-ffafa8c46686.png)
1. 入力した内容を読み返してみてOKだったら **Submit Bug Report** をクリックしましょう。これでバグ報告は完了です。  

以下は入力例です。バグ報告のテキストエリアはフリーフォーマットなので自分なりに整理して入力するのがよいでしょう。

```
- description :
   eeschema generates invalid netlist.
   ...
   
- how to reproduce :
   When I use component xyz in the eeschema, I get always this issue.
   ...
   I attached the project files that can reproduce this bug.

- platform :
  Windows7 64bit, OS X and Ubuntu 15.10

- KiCad version info :
Application: kicad
Version: 4.0.0-stable release build
wxWidgets: Version 3.0.2 (debug,wchar_t,compiler with C++ ABI 1009,GCC 5.2.0,wx containers,compatible with 2.8)
Platform: Windows 7 (build 7601, Service Pack 1), 64-bit edition, 64 bit, Little endian, wxMSW
Boost version: 1.57.0
         USE_WX_GRAPHICS_CONTEXT=OFF
         USE_WX_OVERLAY=OFF
         KICAD_SCRIPTING=ON
         KICAD_SCRIPTING_MODULES=ON
         KICAD_SCRIPTING_WXPYTHON=ON
         USE_FP_LIB_TABLE=HARD_CODED_ON
         BUILD_GITHUB_PLUGIN=ON

```

簡潔に読み易く書きましょう。
長大なログ等はバグ報告の本文中には貼らずに、別サイトに保管してリンクを貼るようにした方が読み易くなると思います。

バグ報告では、問題の説明と同じくらいに**再現方法を説明することが重要**です。再現方法が書かれていないと開発チームが問題を確認することができないからです。再現するための手順を箇条書きにしたり、再現するデータを提供できればベストです。

## バグ報告を通したやり取り
開発チームがバグ報告を認識して、なんらかの対応がなされたらバグ報告にコメントが付きます。自分の報告したバグならメール通知もされます。
可能であれば、修正された結果がOKだとか、残念ながらNGだ、という確認結果の報告をコメント欄を使って行いましょう。
コメントは、該当のバグのページの一番下の **Add comment** から入力できます。

## 既存のバグ報告への参加
他の人が報告した問題の被害を自分も被っている場合、「自分にも影響あります」と名乗りを上げることができます。

バグ報告の上部に **Does this bug affect you?** のリンクがあります。
![20151208-16.png](https://qiita-image-store.s3.amazonaws.com/0/103043/24592c2d-2a49-1415-73b1-8e32d60a6304.png)

ここをクリックして、"Yes, it affects me" をクリックするとこのバグの影響を受けている人数が＋１されます。
![20151208-7.png](https://qiita-image-store.s3.amazonaws.com/0/103043/1cf4598c-5a83-c900-bee5-d0de6dedc6af.png)

影響を受けている人が多いと対応が優先される、かもしれません。
またこの人数は "Bug heat" (炎のアイコン) に4ポイント加算されるようです。

影響を受けていることを宣言したバグ報告は、Bugs一覧画面の右側にある " Bugs affecting me" リンクから参照できるようになります。
![20151208-11.png](https://qiita-image-store.s3.amazonaws.com/0/103043/a1f50ff9-22e6-a9c7-6eae-82e6473d9941.png)

# Bugsの便利な使い方
いくつかBugsのTipsをご紹介します。

## バグ報告を検索
**Search** で既存のバグ報告を検索できます。問題に出くわしたらまずは検索してみるのが良いと思います。
![20151208-1.png](https://qiita-image-store.s3.amazonaws.com/0/103043/871d23e5-f84d-5afa-69ff-4f1e9ae4b095.png)

## バグ一覧の表示項目を変更する
"Order by:" の左の歯車アイコンをクリックすると、バグ一覧の表示項目が選べます。
![20151208-8.png](https://qiita-image-store.s3.amazonaws.com/0/103043/ffa4bca1-848a-5784-be91-c392d4fb3a9d.png)

## 新着順にバグ報告を並べる
デフォルトでは Importance 順に表示されています。Numberをクリックして降順(▼)で表示すると、新着順でバグ報告を表示させることができます。
![20151208-9.png](https://qiita-image-store.s3.amazonaws.com/0/103043/07d31c3f-26a5-a1ce-597c-6f7a6c15e102.png)

## Importance、Status の意味
最初にBugsを見て思ったのは、ImportanceとStatusがどういう意味で使われていて、どんな基準なのか？でした。以下はこれまでBugsを眺めてきたり、dev-MLを読んだりしてきてなんとなく「こうかな？」というのをまとめてみたものです。

Importance は優先度です。

|Importance |意味
|:------------|:------
|CRITICAL    | クラッシュに至るバグはこれになります
|HIGH, MEDIUM, LOW| 優先度の高、中、低
|UNDECIDED | 優先度としては低未満？
|WISHLIST   | 改善要望はこれになります(後述)

Status は対応状況です。

|Status    | 意味
|:---------|:--------
|NEW      | 新規のバグ報告はこれで登録されます
|CONFIRMED | バグ報告の現象を確認できたらこれになります
|INCOMPLETE | 状況のよく判らないのがこれになる？
|TRIAGED  |バグ報告のImportanceを選別したらこれ(多分)
|IN PROGRESS | 対応中
|FIX COMMITED | 修正がコードベースにコミットされた
|FIX RELEASED | 修正をリリース済(バグ報告のクローズの扱い)

デフォルトでは、クローズ扱いの "FIX RELEASED" は表示対象から外されています。全てのバグ報告を一覧に表示したければ、検索ボタン(Search)の右の **Advanced search** で Status のチェックボックスを全てチェックする必要があります。

# 改善要望としてのバグ報告
Bugsという名前ですが、バグ報告だけでなく改善要望も出すことができます。

前述のように開発チームが改善要望だと認識したら Importance が WISHLIST に設定されるでしょう。テキストエリアで「これは改善のリクエストです」と宣言しつつ、Tags に wishlist か feature.request を設定しておくと、より早くWISHLISTとして選別してくれると思います。

改善要望の場合はバグの報告と違って、要望する内容をわかりやすく具体的に記載するのが良いでしょう。必ず対応してもらえると保証はできませんが、要望された内容に賛同する人が多く、開発チームの方針と合致すれば取り入れられる可能性があります。

# おわりに
KiCadを使うということには、ユーザとしてオープンソースのプロジェクトに参加しているという側面もあり、バグ報告を通してKiCadを改善しつつプロジェクトに貢献もできますよ、というお話でした。

KiCadをより良くする活動にあなたも参加してみませんか。

----------

以上、[KiCad Advent Calendar 2015](http://qiita.com/advent-calendar/2015/kicad) の11日目の投稿でした。
12日目は [asakura](http://qiita.com/asakura) さんです。お楽しみに :laughing: 

----------