Trelloの検索機能を詳しく解説

#この記事の概要と背景
この記事では、Trelloの検索機能を詳しく解説します。Trelloは2016年4月20日に多国語版がローンチされ、公式に日本語に対応しました。この多国語化をするにあたり、Trelloは一般ユーザーからボランティアを募り、彼らがクラウドソーサーという形で翻訳に当たりました。私もこのクラウドソーサーに参加したのですが、この翻訳とレビューの作業を行う中で自然とTrelloの機能を新たに発見したり、細かい機能に詳しくなることができました。

実は、本稿の検索機能についても翻訳作業をしていく中で初めて知ったのですが、これを実際に使っているととても便利であるのにそのヘルプが気づきにくいところにあるためか、私の周りのTrelloユーザーに聞いても認知度が低くあまり活用されていないと感じ、それでは詳しく説明しようとなった次第です。

以下、どうしても本体のヘルプと似通ったところが多くなりますが、翻訳プラットフォームの制約などで本体の翻訳ではうまく訳せなかったところや足りなかったところがあったため、それを補足する意味でも詳しく解説します。

#Trelloの検索機能一般について
##Trello本家のヘルプ
Trello本家の検索演算子ヘルプは次のところから参照可能です。

- ボードの検索フィールドから
![検索演算子ヘルプ](https://qiita-image-store.s3.amazonaws.com/0/215643/e25f874d-481d-242b-1eae-5a421e39aa2e.png)
- 公式のヘルプページから（英語）
 - <http://help.trello.com/article/808-searching-for-cards-all-boards>

##検索と絞り込みの違い
Trelloには、カードを見やすくするにあたり「検索機能」と「カードの絞り込み機能」の2種類の機能があります。何が違うかというと、検索の対象となるボードの範囲です。カードの絞り込みの場合は、絞り込みを行っているそのボードでのみの絞り込みとなります。一方、検索する場合は、board:演算子でボードを指定しない限り、全てのボードが検索対象となります。
<http://help.trello.com/article/972-filtering-vs-searching>
<dl>
<dt>例）due:3 @me</dt>
<dd>ボードを指定していないため全てのボードを対象にして、期限が3日以内の自分がアサインされているカードを検索します。</dd>
</dl>

##検索結果の表示順
検索結果は、どのような検索条件でも、作成日の一番新しいカードが検索結果の一番上に表示されます。ただし、それより下のカードはランダムに表示されます（検索結果が全て作成日降順で表示されるとは限りません）。この表示順はカスタマイズすることはできません。

##Trelloで検索演算子を使う
Trelloの検索機能では、単語やフレーズによる検索の他にも検索演算子を使うことができます。Trelloの検索演算子は、Googleなどの検索エンジンで使うタイプの検索演算子とほぼ同じです。そのため、Googleで検索演算子を駆使して検索をしているような方には馴染みがあると思います。

検索演算子の使える場所は、次の3ヶ所です。

- ボード左上の検索フォーム
- アーカイブリストの検索フォーム（ボードメニュー>もっと見る>アーカイブ済みのアイテム>アーカイブリスト）
- カードに添付ファイルを追加する際、添付元をTrelloのリソースとする時の検索フォーム

##ネガティブ検索
これも多くのWebアプリと同じように、単純なキーワードや検索演算子の前にネガティブ演算子 - （ハイフン）をつけることで、ネガティブ検索とすることができます。- に続く内容を除外して検索する、または否定した内容で検索するという意味です。ネガティブ検索は全ての検索演算子で可能です。
<dl>
<dt>例）-has:members</dt>
<dd>通常のhas:membersではいずれかのメンバーがアサインされているカードを検索しますが（下記参照）、これにネガティブ演算子 - をつけると、メンバーのアサインされているカードを除外してそれ以外のカードを返します。この例の場合、これ単体で検索すると、メンバーのアサインされていないカードを検索します。</dd>
<dt>例）-"バグ対応"</dt>
<dd>「バグ対応」という文言を含まないカードを検索します。</dd>
</dl>

##キーワードや演算子の組み合わせ検索
任意のキーワードや検索演算子を複数組み合わせて検索することができます。その場合は、スペースで区切ることでAND検索（絞り込み検索）になります。AND演算子は使えますが、使っても使わなくても結果は変わりません。OR演算子も使えますが、結果がAND演算となってしまい混乱をきたすため、使わない方がいいと思います（使えるとは言わないかもしれない）。

##パラメータの検索一致方式
前方一致で検索されます。検索する単語（フレーズ）や演算子のパラメータを""で囲まなくても検索は可能です。一方、""で囲んでも**完全一致とはなりません**が、より正確にインクリメンタルサーチを行うことができます。

##検索条件を保存するには
複数の演算子を組み合わせた複雑な検索条件をしょっちゅう使ったり、それがいくつもある場合は、それらの検索条件を保存しておきたくなります。検索条件を保存するには、Trello Goldなどの課金プランを契約する必要があります。Goldを契約している状態で検索条件を保存すると、そのGoldの契約が終わっても保存された検索条件は自動的には削除されません。ただし、契約が終わった状態で自分で削除すると、無料アカウントのままでは再度保存することはできません。
<http://help.trello.com/article/827-saved-search>

#Trelloの検索演算子
##@演算子とmember:演算子 - アサインされたメンバーで検索する
@演算子とmember:演算子は、カードにアサインされているメンバーでカードを検索します。パラメータに使えるのは、各メンバーのプロフィールにおける**ユーザー名**です。**氏名では検索できません**。特殊な使い方として、@meとすると自分がアサインされているカードを検索します。
<dl>
<dt>例）@trellotaco</dt>
<dd>trellotacoという**ユーザー名**のメンバーがアサインされているカードを返します。member:trellotacoも同じです。この演算子は氏名では検索できないため、このメンバーの氏名がトレロ タコだった場合、@"トレロ タコ"では検索できません。</dd>
<dt>例）@me</dt>
<dd>自分がアサインされたカードを返します。member:meも同じです。</dd>
</dl>

##\#演算子とlabel:演算子 - ラベルで検索する
\#演算子とlabel:演算子は、ラベルを検索してそのラベルの付いたカードを返します。パラメータに使えるのは、自分がつけたラベル名と、英語でのラベル色です。
<dl>
<dt>例）#至急</dt>
<dd>「至急」というラベルのついたカードを返します。label:至急 も同じです。</dd>
<dt>例）#yellow</dt>
<dd>黄色のラベルのついたカードを全て返します。label:yellowも同じです。同じ色で複数のラベルを作成している場合、ラベル名にかかわらず同じ色全てのラベルのついたカードを返します。ラベル色の指定に日本語は使えません。使えるラベルの色は、Trello既定のラベル色を示す次の10色です。

- green
- yellow
- orange
- red
- blue
- purple
- sky
- lime
- pink
- black
</dd>
</dl>

##board:演算子 - 検索対象のボードを限定する
board:演算子は、ボード名で検索してそのボードにあるカードを返します。あるいは、他の検索演算子と併用する際に検索対象のボードを限定します。逆に言うと、**検索する時にboard:演算子を省略して検索すると、自分の関係する全てのボードが検索対象となり、自分の想定している以上の数のカードが返されることがあります**。
<dl>
<dt>例）board:イタリア旅行の日程と計画</dt>
<dd>「イタリア旅行の日程と計画」というボードにあるカードを返します。</dd>
<dt>例）@me</dt>
<dd>自分がアサインされたカードを返しますが、**board:演算子を使ってボードを指定していないため、今いるボード以外も検索対象になります**。</dd>
</dl>

##list:演算子 - 検索対象のリストを限定する
list:演算子は、リスト名で検索してそのリストにあるカードを返します。あるいは、他の検索演算子と併用する際に検索対象のリストを限定します。逆に言うと、検索する時にlist:演算子を省略して検索すると、自分の関係する全てのボードの全てのリストが検索対象となり、自分の想定している以上の数のカードが返されることがあります。
<dl>
<dt>例）list:Doing</dt>
<dd>「Doing」というリストにあるカードを返します。</dd>
<dt>例）-list:完了</dt>
<dd>「完了」というリストにあるカードを除外して、それ以外のカードを返します。</dd>
</dl>

##has:演算子 - カードに設定してあるもので検索する
has:演算子は、カードに何らかの設定があるかどうかで検索します。
<dl>
<dt>例）has:attachments</dt>
<dd>添付ファイルのあるカードを返します。</dd>
<dt>例）has:description</dt>
<dd>詳細説明に何らかの入力がしてあるカードを返します。</dd>
<dt>例）has:cover</dt>
<dd>カードカバーのあるカードを返します。</dd>
<dt>例）has:members</dt>
<dd>いずれかのメンバーがアサインされているカードを返します。特定のメンバーでカードを検索する時は、@演算子を使用してください。</dd>
<dt>例）has:stickers</dt>
<dd>スタンプの押してあるカードを返します。</dd>
</dl>

##due:演算子 - 期限で検索する
due:演算子は、（基本的に）将来の期限を指定してカードを検索します。パラメータには、次に示すキーワードや具体的な日数の範囲を指定することができます。本家の日本語版にはネガティブ演算子"-"は使えないとありますが、これは誤りで使用できます。
<dl>
<dt>例）due:day</dt>
<dd>今後1日=24時間以内に期限のあるカードを返します。</dd>
<dt>例）due:week</dt>
<dd>今後1週間=7日以内に期限のあるカードを返します。</dd>
<dt>例）due:month</dt>
<dd>今後1ヶ月=28日以内に期限のあるカードを返します。</dd>
<dt>例）due:overdue</dt>
<dd>次の条件をすべて含むカードを返します。いわゆる期限切れのカードです。

- カードに期限が設定してある
- その期限にチェックがついていない
- その期限が過ぎている

</dd>
<dt>例）due:complete</dt>
<dd>次の条件をすべて含むカードを返します。いわゆる完了したカードです。

- カードに期限が設定してある
- その期限にチェックがついている。ただし、チェックをつけたのが期限到来の前であったか後であったかは、この演算子においては関係ありません。例えば、due:overdueの状態のカードの期限にチェックをつけても完了したとみなされ、due:completeに含まれることになります。

</dd>
<dt>例）due:incomplete</dt>
<dd>次の条件をすべて含むカードを返します。いわゆるまだ終わっていないカードです。

- カードに期限が設定してある
- その期限にチェックがついていない
- 期限が過ぎたものと、未到来のものを両方含める

</dd>
<dt>例）due:14</dt>
<dd>今後14日以内に期限のあるカードを返します。パラメータに指定できる数字は日数です。時間数や週数、月数は指定できません。</dd>
<dt>例）-due:10</dt>
<dd>期限が今後10日以内にあるカードを除外して、それ以外のカードを全て返します。ただし、期限が今後10日より後にあるカード**のみ**を返すわけではありません。例えば、期限が設定されていないカードもこの検索結果には含まれます。</dd>
<dt>例）due:-5</dt>
<dd>パラメータに - をつけても機能しません。過去5日間に期限のあったカードを検索する、ということはできません。</dd>
</dl>

##created:演算子 - カードの作成日で検索する
created:演算子は、いつカードが作成されたかで検索します。パラメータには、次に示すキーワードや具体的な日数の範囲を指定することができます。本家の日本語版にはネガティブ演算子"-"は使えないとありますが、これは誤りで使用できます。
<dl>
<dt>例）created:day</dt>
<dd>過去1日=24時間以内に作成されたカードを返します。</dd>
<dt>例）created:week</dt>
<dd>過去1週間=7日以内に作成されたカードを返します。</dd>
<dt>例）created:month</dt>
<dd>過去1ヶ月=28日以内に作成されたカードを返します。</dd>
<dt>例）created:14</dt>
<dd>過去14日以内に作成されたカードを返します。パラメータに指定できる数字は日数です。時間数や週数、月数は指定できません。</dd>
<dt>例）-created:10</dt>
<dd>過去10日以内に作成されたカードを除外して、それ以外のカードを返します。</dd>
<dl>

##edited:演算子 - カードの編集日で検索する
edited:演算子は、いつカードが編集されたかで検索します。パラメータには、次に示すキーワードや具体的な日数の範囲を指定することができます。本家の日本語版にはネガティブ演算子"-"は使えないとありますが、これは誤りで使用できます。
<dl>
<dt>例）edited:day</dt>
<dd>過去1日=24時間以内に編集されたカードを返します。</dd>
<dt>例）edited:week</dt>
<dd>過去1週間=7日以内に編集されたカードを返します。</dd>
<dt>例）edited:month</dt>
<dd>過去1ヶ月=28日以内に編集されたカードを返します。</dd>
<dt>例）edited:21</dt>
<dd>過去21日以内に編集されたカードを返します。パラメータに指定できる数字は日数です。時間数や週数、月数は指定できません。</dd>
<dt>例）-edited:5</dt>
<dd>過去5日以内に編集されたカードを除外して、それ以外のカードを返します。</dd>
</dl>

##name:演算子 - カードのタイトルを検索する
name:演算子は、カードのタイトルに入力されているテキストを検索し、該当するカードを返します。
<dl>
<dt>例）name:"本日の買い物"</dt>
<dd>カードのタイトルに「本日の買い物」と入力されているカードを返します。</dd>
</dl>

##description:演算子 - 詳細説明フィールドを検索する
description:演算子は、詳細説明フィールドに入力されているテキストを検索し、該当するカードを返します。
<dl>
<dt>例）description:"帰りに買ってきてほしいものリストです"</dt>
<dd>詳細説明に「帰りに買ってきてほしいものリストです」と入力されているカードを返します。</dd>
</dl>

##checklist:演算子 - チェックリストを検索する
checklist:演算子は、チェックリストに入力されているテキストを検索し、該当するカードを返します。チェックリストのタイトル、チェック項目いずれも検索対象となります。
<dl>
<dt>例）checklist:牛乳</dt>
<dd>チェックリストのタイトルまたはチェック項目のいずれかに「牛乳」と入力されているカードを返します。</dd>
</dl>

##comment:演算子 - コメントフィールドを検索する
comment:演算子は、コメントフィールドに入力されているテキストを検索し、該当するカードを返します。
<dl>
<dt>例）comment:"賞味期限のなるべく遅いのを買ってきて"</dt>
<dd>コメントフィールドに「賞味期限のなるべく遅いのを買ってきて」と入力されているカードを返します。</dd>
</dl>

##is:演算子 - カードの状態で検索する
is:演算子は、カードの状態で検索します。これを演算子として指定しない場合、両方のカードを返します。
<dl>
<dt>例）is:open</dt>
<dd>アーカイブされていないカードを返します。</dd>
<dt>例）is:archived</dt>
<dd>アーカイブされているカードを返します。</dd>
</dl>

##is:starred - スター付きボードを検索する
スター付きボードのみを絞り込んで検索します。