<?xml version="1.0" encoding="UTF-8"?>
<article id="Filters">
  <title>フィルタの使用<indexterm>
      <primary>filters</primary>

      <seealso>file filters</seealso>

      <seealso>file masks</seealso>

      <seealso>line filters</seealso>

      <seealso>substitution filters</seealso>
    </indexterm></title>

  <para>
    ファイルやフォルダ比較の際、比較範囲を限定するためにファイルフィルタを使用することができます。
    これは、比較結果から、あなたが興味のない差異を取り除きたい場合に便利です。
    フィルタは、正規表現を元に規定します。
    WinMerge は、ポピュラーな PCRE (Perl Compatible Regular Expressions) 正規表現エンジンを使用しています。<indexterm>
      <primary>regular expressions</primary>

      <secondary>supported engine</secondary>
    </indexterm><indexterm>
      <primary>PCRE regular expression engine</primary>
    </indexterm><indexterm>
      <primary>regexp</primary>

      <see>regular expressions</see>
    </indexterm></para>

  <para>
    <!-- TODO: ちょっと自信ない-->フィルタの基本機能はシンプルです。
    通常比較されるであろう、それぞれのアイテム(フォルダ、ファイル、ファイル中の行)を評価し、
    対象のアイテムがフィルタ式にマッチした場合、フィルタを適用します。
    フィルタタイプにより、アイテムは、比較に含められるか、除外されるかのどちらかです。</para>

  <para>フォルダ比較用とファイル比較用の異なる WinMerge
    フィルタがあります。</para>

  <variablelist>
    <varlistentry>
      <term>フォルダ比較: ファイルマスクとファイルフィルタ<indexterm>
          <primary>comparing folders</primary>

          <secondary>filtering</secondary>
        </indexterm></term>

      <listitem>
        <para>
          <!-- TODO:ちょっと複雑すぎる気がする-->
          単純なファイルマスク、または、より複雑なフィルタにより、
          ファイルフィルタ中で指定された複数の規則を適用することで、
          フォルダ比較中に含めるファイルを指定することができます。
          ファイルマスクとファイルフィルタの両方を、同一の操作中で適用することができます。</para>

        <para>
          フィルタされるファイルやフォルダは、デフォルトで隠されます。
          それは、典型的にあなたが望むものでしょう。フィルタされたアイテムを表示するには、
        <menuchoice>
          <guimenu>表示</guimenu>
          <guimenuitem>スキップされた項目の表示</guimenuitem>
    </menuchoice>をクリックしてください。
    しかし、フォルダ比較ウィンドウは、それらについて最小限の情報しか表示しません。
    例えば、あなたは、スキップされたファイルがテキストファイルかバイナリファイルか判らないでしょう。</para>
      </listitem>
    </varlistentry>

    <varlistentry>
      <term>ファイル比較: 行フィルタと置換フィルタ<indexterm>
          <primary>comparing files</primary>

          <secondary>filtering</secondary>
        </indexterm></term>

      <listitem>
        <para>
          行フィルタは、ファイル比較操作のみに適用されます。
          それにより、単一行の差異を無視することができます。</para>
        <para>置換フィルタは、ファイル比較操作のみに適用されます。
         置換フィルタは、diffブロック内の文字列を指定された文字列に置換して比較し、
         結果が一致する場合はそのdiffブロックを無視します。
         これは、興味のない多数の変更を無視するのに役立ちます。
        </para>
      </listitem>
    </varlistentry>
  </variablelist>

  <section id="Filters_Mask">
    <title>ファイルマスクの使用<indexterm>
        <primary>file masks</primary>
      </indexterm><indexterm>
        <primary>filters</primary>

        <secondary>file masks</secondary>
      </indexterm><indexterm>
        <primary>filters</primary>

        <secondary>in folder comparisons</secondary>
      </indexterm></title>

    <para>フォルダ比較中に含める拡張子を指定する、1つか複数の
      <glossterm>ファイルマスク</glossterm>を使用することができます。
      その他すべてのファイルは、選択から省かれます。</para>

    <section id="Filters_MaskApply">
      <title>ファイルマスクと定義と適用<indexterm>
          <primary>コマンドライン</primary>

          <secondary>ファイルマスクの適用</secondary>
        </indexterm></title>

      <para>
      フォルダ比較操作を実行時に、ファイルマスクを定義し適用する:</para>

      <itemizedlist>
        <listitem>
          <para>
            ファイルまたはフォルダの選択ダイアログを使用しているなら、
            <guilabel>1(左)</guilabel>と
            <guilabel>2(右)</guilabel>のフォルダ選択後、
            <guilabel>フィルタ</guilabel>フィールドへ、
            1つか複数のファイルマスクを入力してください。
            マスクは、フォルダ比較操作を開始した時に適用されます。</para>
        </listitem>

        <listitem>
          <para>WinMergeのコマンドラインを使用している場合は、ファイルマスクを指定する
          
          <!-- TODO: /f の誤り？ -f でもいける？ -->
          <option>-f</option>フラグ(次のセクションの例を参照)を使用してください。</para>
        </listitem>
      </itemizedlist>

      <para>
        フィールドやコマンドラインで、ファイルマスクとファイルフィルタの、
        両方を指定することはできないことを憶えておいてください。</para>
    </section>

    <section id="Filters_MaskSyntax">
      <title>ファイルマスクの文法と例<indexterm>
          <primary>rules</primary>

          <secondary>file masks</secondary>
        </indexterm><indexterm>
          <primary>filters</primary>

          <secondary>file masks</secondary>
        </indexterm><indexterm>
          <primary>regular expressions</primary>

          <secondary>in file masks</secondary>
        </indexterm></title>

      <para>このシンタックスは、ファイルマスク用です:</para>

      <synopsis>[!](*.[<replaceable>拡張子</replaceable>]|<replaceable>フォルダマスク</replaceable>\)[<replaceable>区切り文字</replaceable>[!](*.<replaceable>拡張子</replaceable>|<replaceable>フォルダマスク</replaceable>\) ...]</synopsis>

      <para>有効な区切り文字はスペース、カンマ、コロン、セミコロンです。</para>

      <para>拡張子なしのマスク(<filename>*.</filename>)は、
      <filename>
        <filename>README</filename>
      </filename>の様な、拡張子なしのファイルを選択します。</para>

      <para>2.16.19 以降、感嘆符(<filename>!</filename>)
      をマスクの前に付加した場合、そのマスクに一致したファイルは除外されます。
      また、バックスラッシュ(<filename>\</filename>)をマスクの後に付加した場合、
      そのマスクはファイルではなくフォルダが対象となります。</para>

      <example>
        <title>ファイルマスク</title>

        <para>
          このコマンドラインの例では、フォルダ比較操作は、拡張子
          <filename>xml</filename>か
          <filename>txt</filename>のファイルのみを含みます。
          その他すべてのファイルは省かれます:</para>

        <para>
          <userinput>WinMergeU c:\project\docs c:\temp /f *.xml;*.txt</userinput>
        </para>
      </example>

      <example>
        <title>フォルダの除外(2.16.19以降)</title>

        <para>
          このコマンドラインの例では、フォルダ比較操作は、
          <filename>.git</filename>と
          <filename>.vs</filename>フォルダを除外します:</para>

        <para>
          <userinput>WinMergeU c:\project\docs c:\temp /f !.git\;!.vs\</userinput>
        </para>
      </example>
    </section>
  </section>

  <section id="Filters_FileFilter">
    <title>ファイルフィルタの使用<indexterm>
        <primary>filters</primary>

        <secondary>file filters</secondary>
      </indexterm><indexterm>
        <primary>filters</primary>

        <secondary>in folder comparisons</secondary>
      </indexterm></title>

    <para>
      <glossterm>ファイルフィルタ</glossterm>は、拡張子
      <filename>flt</filename>のテキストファイルです。
      これらは、フォルダ比較用の複数のフィルタルールを適用することを可能にします。
      <!-- FIXME: いい訳思いつかず-->
      ファイルマスクと異なり、ファイルフィルタは、含むか除外、どちらかにマッチすることができます。</para>

    <para><indexterm>
        <primary>file filters</primary>

        <secondary>template</secondary>
      </indexterm>
      WinMergeは、たくさんの定義済ファイルフィルタをインストールします。
      もし、必要なフィルタが、これらのファイルフィルタで提供されていなかったら、
      自分自身で作成することができます。
      タスクをもっと簡単にするために、WinMergeは、
      <filename>FileFilter.tmpl</filename>という名前のテンプレートも提供しています。
      このセクションは、比較にファイルフィルタを適用する方法と、ファイルフィルタの文法を説明します。
      <!-- TODO: リンク切れ？-->
      <xref linkend="Filters_dlg" />では、フィルタの追加、編集、管理方法について説明します。</para>

    <section id="Filters_FileFilterLoc">
      <title>ファイルフィルタの場所<indexterm>
          <primary>Filters folders</primary>

          <secondary>locations</secondary>
        </indexterm><indexterm>
          <primary>file filters</primary>

          <secondary>locations</secondary>
        </indexterm></title>

      <para>WinMergeは、次の場所のファイルフィルタを自動的に検出します:</para>
      <variablelist>
        <varlistentry>
          <term>WinMerge インストールフォルダのFilters フォルダ</term>

          <listitem>
            <para>
              ここには、定義済ファイルフィルタがインストールされています。例えば、
              <filename>C:\Program Files\WinMerge\Filters</filename>。
              システム上のすべてのユーザーに有効にするために、
              ここにファイルフィルタを作成、または、コピーすることができます。</para>

            <para>
              新しいファイルフィルタを作る前に、定義済フィルタに必要なものが含まれているか確認してください。
              含まれていない場合、定義済ファイルの中から役立つルールが見つかるかもしれません。</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>デフォルトプライベートフィルタフォルダ</term>
          <listitem>
            <para>このフォルダの場所は、WinMerge
              オプションの、システムページで定義されています。
              デフォルトでは、あなたのユーザプロファイルフォルダのサブフォルダとして指定されています
              (Windows 10なら、<filename>Documents\WinMerge\Filters</filename>)。
              通常、ここに作成、または、コピーされたフィルタは、
              あなただけが見ることができます。
              新しいファイルフィルタを作成したら、それらをプライベートにするために、
              ここにコピーすることができます。</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para>
        その他のフォルダにあるファイルフィルタを適用する前に、
        それらをインストールしなければなりません。</para>
    </section>

    <section id="Filters_FileFilterApply">
      <title>ファイルフィルタの適用<indexterm>
          <primary>ファイルフィルタ</primary>

          <secondary>適用</secondary>
        </indexterm></title>

      <para>
      次のいくつかの方法で、ファイルフィルタを適用することができます:</para>
      <itemizedlist>
        <listitem>
          <para>
          ファイルまたはフォルダの選択ダイアログから、フォルダ比較を起動した時:</para>

          <orderedlist>
            <listitem>
              <para>
                <guilabel>1(左)</guilabel>と
                <guilabel>2(右)</guilabel>のフォルダ選択後、
                <guilabel>フィルタ</guilabel>フィールドの隣にある
                <guibutton>選択</guibutton>ボタンをクリックしてください。</para>
            </listitem>

            <listitem>
              <para>
                フィルタダイアログで、ファイルフィルタを選択し、
                <guilabel>フィルタ</guilabel>フィールドへロードするには、ファイルフィルタタブを使用します。</para>

              <note>
                <para>
                  ファイルフィルタが有効になっている(訳注:
                  何れかのファイルフィルタが選択されている状態)場合、選択されたファイルフィルタは、
                  <guilabel>フィルタ</guilabel>フィールドへ既にロードされています。</para>
              </note>
              <para></para>
            </listitem>

            <listitem>
              <para>
                比較操作を続けてください。操作を開始した時、
                <guilabel>フィルタ</guilabel>フィールドのファイルが適用されます。</para>
            </listitem>
          </orderedlist>
        </listitem>

        <listitem>
          <para>
            フォルダ比較操作起動後(違うフィルタを適用した、
            または、フィルタを無効にしてしまった時など)にファイルフィルタを変更するには:</para>
          <orderedlist>
            <listitem>
              <para>
                <menuchoice>
                  <guimenu>ツール</guimenu>
                  <guimenuitem>フィルタ</guimenuitem>
              </menuchoice>をクリックしてください。</para>
            </listitem>

            <listitem>
              <para>
                フィルタダイアログで、新しいフィルタを設定し、
                <guibutton>OK</guibutton>をクリックしてください。</para>
            </listitem>

            <listitem>
              <para>
                フィルタダイアログを閉じた時、新しいフィルタは自動では適用されません:
                フォルダ比較ウィンドウ中で新しい結果を見るには、
                <keycap>F5</keycap>を押下してください。</para>
            </listitem>
          </orderedlist>
        </listitem>

        <listitem>
          <para><indexterm>
              <primary>command line</primary>

              <secondary>applying file filters</secondary>
            </indexterm>WinMerge コマンドラインから、
            フォルダ比較起動時にファイルフィルタを指定するには、

            <!-- TODO: /f の誤り？ -->
            <option>-f</option>フラグを使用してください。</para>
        </listitem>
      </itemizedlist>

      <para>
        フィールドやコマンドラインで、
        ファイルマスクとファイルフィルタの両方を指定する
        ことはできないことを思い出してください。</para>
    </section>

    <section id="Filters_FileFilterSyntax">
      <title>ファイルフィルタの文法<indexterm>
          <primary>rules</primary>

          <secondary>file filter</secondary>
        </indexterm><indexterm>
          <primary>file filters</primary>

          <secondary>syntax</secondary>
        </indexterm></title>

      <para>このセクションは、WinMerge
        ファイルフィルタの文法と、記述のためのガイドラインの提供について説明します。</para>

      <para>コメント記号は、
        <code>##</code>です。
        コメント記号の後にある、行内のすべての文字は無視されます。
        WinMergeは、ルール中のほとんどの空白文字を無視します。
        しかしながら、通常は、コメントの前に1つか複数の空白文字(スペースかタブ)が置かれるでしょう。
        ルール中で、
        <code>##</code>を文字列として使用するには、後ろの空白文字を取り除いてください。</para>

      <para>ファイルフィルタで、まずはじめに必要な2行は:</para>

      <variablelist>
        <varlistentry>
          <term>name</term>

          <listitem>
            <para>
              ファイルダイアログに表示されるフィルタ名です</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>def</term>

          <listitem>
            <para>
              適用されるフィルタタイプです。次の値のうち、1つを指定してください:</para>

            <variablelist>
              <varlistentry>
                <term>include</term>

                <listitem>
                  <para>
                    指定されたルールにマッチしたアイテム以外はすべて含めます。</para>
                </listitem>
              </varlistentry>

              <varlistentry>
                <term>exclude</term>

                <listitem>
                  <para>
                    指定されたルールにマッチしたアイテム以外はすべて除外します。</para>

                  <para>exclude
                    メソッドを選択した時は、サブフォルダを指定する
                    <guilabel>d</guilabel>(ディレクトリ)ルールも追加しなければなりません。
                    このように、すべてのサブフォルダを指定するのは、通常良いアイデアです:</para>

                  <screen>d: \\*$ ## Subfolders</screen>
                </listitem>
              </varlistentry>
            </variablelist>

            <tip>
              <para>
                これらの用語で混乱しないでください。ファイルフィルタの

                <guilabel>include</guilabel>ルールは、「何を含めるか」を指定するわけではありません。
                「何を<emphasis>含めない</emphasis>」かを指定します。
                同様に、<guilabel>exclude</guilabel>ルールは、「何を除外する」かを指定するわけではありません。
                「何を除外しないか」を指定します。</para>
            </tip>
          </listitem>
        </varlistentry>
      </variablelist>

      <para>
        次に、フィルタファイルは、1つ以上のフィルタルールを含むべきです。
        あなたは、たくさんのルールを好きなだけ追加できます。
        1行には1つのルールがあるべきで、それぞれのルールは、
        それぞれ1行にあるべきです(ルール中での改行は許可されません)。
        (訳注: 回りくどいですが、「ルールは1行で記述してください」ということです。)
        それぞれのルールは、タイプデザイナ

        <guilabel>f:</guilabel>か 
        <guilabel>d:</guilabel>を含み、その後に、正規表現が続きます:</para>

      <variablelist>
        <varlistentry>
          <term>f: <replaceable>regexp</replaceable></term>

          <listitem>
            <para>ファイルにマッチ、または、</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>d: <replaceable>regexp</replaceable></term>

          <listitem>
            <para>フォルダにマッチ</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para>2.16.19 以降、
      <guilabel>f:</guilabel> と <guilabel>d:</guilabel>
      でマッチしたファイルまたはフォルダの一部を除外するためのタイプデザイナ
      <guilabel>f!:</guilabel> と <guilabel>d!:</guilabel> が使用できます。
      </para>

      <para>
        多くの正規表現の特殊文字の中で、次の文字は、ファイルフィルタでは特に重要です:
        <indexterm>
          <primary>regular expressions</primary>

          <secondary>special characters in filters</secondary>
        </indexterm><indexterm>
          <primary>regular expressions</primary>

          <secondary>in file filters</secondary>
        </indexterm></para>

      <variablelist>
        <varlistentry>
          <term>^ (行頭)</term>

          <listitem>
            <para>
              ルールが正しく動作するために頻繁に必要になります。</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>$ (行末)</term>

          <listitem>
            <para>
              ルールが正しく動作するために頻繁に必要になります。例えば:</para>

            <screen>\.c$ ## 拡張子 
              <filename>c</filename>のファイルのみにマッチします。
              \.c ## <filename>cpp</filename>や 
              <filename>com</filename>のような、拡張子が 
              <filename>c</filename>で始まるファイルにマッチします。</screen>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>\ (エスケープ)</term>

          <listitem>
            <para>
              通常の文字を、特殊文字にマッチさせるために使います。
              例えば、フォルダ名にマッチするために、
              フォルダ区切り文字のバックスラッシュの前に、
              バックスラッシュを置きます(<code>\\</code>)。
              ファイル名中のドットにマッチするために、
              バックスラッシュを指定し、その後にドットを置きます(<code>\.</code>)。</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para>特殊文字やワイルドカードは、ファイル名とマッチさせるためには、使用されません。
        ある型のすべてのファイル名にマッチするためには、単にファイル名を省略します。</para>

      <para>ルールは、大文字・小文字を区別しません。例えば、
        <code>f: \.bat$</code>は、
        <filename>winmerge.bat</filename>と 
        <filename>compare.BAT</filename>にマッチします。</para>

      <example>
        <title>ファイルフィルタルールの例</title>

        <para>シンプルなファイルフィルタルール:</para>

        <screen>f: \.cpp$ ## <filename>*.cpp</filename>ファイルにマッチ
          f: \.h$ ## <filename>*.h</filename>ファイルにマッチ
          f: ^My ## <filename>My*.*</filename>ファイルにマッチ
          f: Dlg\. ## <filename>*Dlg.*</filename>ファイルにマッチ
          d: \\test$ ## <filename>test</filename>フォルダにマッチ
          d: ^\\Build$ ## <filename>Build</filename>フォルダマッチ
          d: Temp$ ## <filename>*Temp</filename>フォルダにマッチ (例:<filename>FirstTemp</filename>)
          d: Src ## <filename>*Src*</filename>フォルダにマッチ</screen>

        <para>
          いくつかのルールは、もっと複雑な正規表現です:</para>

        <screen format="linespecific">
          f: ^\.#.*$ ## <filename>.#filename.version</filename>ファイル
          f: Dlg\.c(pp)?$ ## <filename>*Dlg.c</filename>と<filename>*Dlg.cpp</filename>ファイル
          f: ^I.*\.h$ ## <filename>I*.h</filename>ファイル
          f: Srv[1-9]\.def$ ## <filename>*Srv1.def</filename> から <filename>*Srv9.def</filename>ファイル
          f: ^[h,k,m] ## <filename>h*.*</filename>d、<filename>k*.*</filename>、<filename>m*.*</filename>ファイル</screen>
      </example>
    </section>
  </section>

  <section id="Filters_LineFilter">
    <title>行フィルタの使用<indexterm>
        <primary>フィルタ</primary>

        <secondary>行</secondary>
      </indexterm><indexterm>
        <primary>フィルタ</primary>

        <secondary>in file comparisons</secondary>
      </indexterm></title>

    <para>
      ファイル比較で単一行を無視するために、行フィルタを使用することができます。
      例えば、コメント、生成されたコードの決まった型や、
      バージョン管理システムのタイムスタンプの様なものを無視するために、
      行フィルタを使うかもしれません。各行フィルタは1つのルールです。
      ファイル比較のために、たくさんの行フィルタを使用することができます。</para>

    <para>フィルタの追加、編集、管理については、
      <!-- TODO: リンク切れ？ --><xref linkend="Filters_dlg" />を参照してください。</para>

    <section id="Filters_LineFilterApply">
      <title>行フィルタの適用</title>

      <para>
        次の方法で、行フィルタを適用することができます:</para>
      <itemizedlist>
        <listitem>
          <para>
            ファイルまたはフォルダの選択ダイアログから、
            ファイル比較を起動する場合</para>

          <orderedlist>
            <listitem>
              <para>
                <guilabel>1(左)</guilabel>と 
                <guilabel>2(右)</guilabel>のファイル選択後、
                <guilabel>フィルタ</guilabel>フィールドの隣の 
                <guibutton>選択</guibutton>をクリックしてください。</para>
            </listitem>

            <listitem>
              <para>フィルタダイアログで、使用したい行フィルタを有効化するため、
                また、現在どの行フィルタが有効かを確認するには、行フィルタタブを使います。</para>

              <note>
                <para>
                  <guilabel>フィルタ</guilabel>フィールドは、
                  どの行フィルタが有効化されているかを表示しません。</para>
              </note>
              <para></para>
            </listitem>

            <listitem>
              <para>
                ファイル比較操作を続けてください。
                操作を開始した時に、有効化された行フィルタが適用されます。</para>
            </listitem>
          </orderedlist>
        </listitem>

        <listitem>
          <para>
            既に、ファイル比較操作を起動後
            (違うフィルタを適用した、または、フィルタを無効にしてしまった時など)は、</para>
          <orderedlist>
            <listitem>
              <para>
              <menuchoice>
                  <guimenu>ツール</guimenu>

                  <guimenuitem>フィルタ</guimenuitem>
                </menuchoice>をクリックしてください。</para>
            </listitem>

            <listitem>
              <para>
              ファイルフィルタタブを開いてください。</para>
            </listitem>

            <listitem>
              <para>
                あなたが適用したい行フィルタの行にチェックしてください。
                また、適用したくないフィルタは、チェックを外してください。</para>

              <para>
                <guibutton>新規</guibutton>、
                <guibutton>編集</guibutton>、
                <guibutton>削除</guibutton>ボタンを使用して、
                フィルタを追加、編集、削除することもできます。</para>
            </listitem>

            <listitem>
              <para>行フィルタ機能を有効にするには、
                <guilabel>行フィルタを有効にする</guilabel>にチェックしてください。
                行フィルタ機能を無効にするには、チェックを外してください。</para>
            </listitem>

            <listitem>
              <para>
                <guibutton>OK</guibutton>をクリックして、
                ファイルフィルタダイアログを閉じてください。</para>
            </listitem>

            <listitem>
              <para>
                <keycap>F5</keycap>を押下して変更を適用し、
                ファイル比較ウィンドウをリフレッシュしてください。</para>
            </listitem>
          </orderedlist>
        </listitem>
      </itemizedlist>
    </section>

    <section id="Filters_LineFilterSyntax">
      <title>行フィルタの文法<indexterm>
          <primary>rules</primary>

          <secondary>line filter</secondary>
        </indexterm><indexterm>
          <primary>filters</primary>

          <secondary>line</secondary>
        </indexterm><indexterm>
          <primary>regular expressions</primary>

          <secondary>in line filters</secondary>
        </indexterm></title>

      <para>
        <!-- TODO: わかりにく。。。-->行フィルタは、行フィルタルールが有効化されている場合、
        比較ファイル中の単一行の差異毎に評価されるルールです。
        単一行の差異にルールがマッチした時、その差異は無視されます。</para>

      <para>無視された差異は、ファイル比較ウィンドウ中では、
        <guilabel>無視された差異</guilabel>の色(WinMergeオプションの色ページで定義されている)
        でマークされます。
        これは、その他のタイプと無視された差異を区別できるようにします。
        しかし、無視された差異は、選択やマージすることができません。</para>

      <para>
        行フィルタマッチは、2つの考えに基づいて記述されるかもしれません:</para>

      <itemizedlist>
        <listitem>
          <para>
            ルールが、行のある部分にマッチした時、差異全体が無視されます。
            つまり、行の一部だけをフィルタすることはできません。
            例えば、2つのファイルに、次の単一行の差異があると仮定した場合:</para>
          <formalpara>
            <title>File1:</title>

            <para>
              <screen># Jean Sibelius</screen>
            </para>
          </formalpara>

          <formalpara>
            <title>File2:</title>

            <para>
              <screen># Janne Sibelius</screen>
            </para>
          </formalpara>

          <para>
            フィルタなしの場合、行は差異として検出されます。
            しかし、行フィルタを
            <code>^#</code>の式とともに適用する場合、その行は同一であると評価されます。
            なぜなら、式は、両方のファイルにマッチする最初の文字のみを指定しているからです。</para>
        </listitem>

        <listitem>
          <para>
            ルールは、すべての行にマッチした場合に、複数行差異に適用されます。
            例えば、次の2行の差異を考えてみてください:</para>

          <formalpara>
            <title>File1:</title>

            <para>
              <screen># Jean Sibelius
# Pekka Himanen</screen>
            </para>
          </formalpara>

          <formalpara>
            <title>File2:</title>

            <para>
              <screen># Janne Sibelius
Pekka Himanen</screen>
            </para>
          </formalpara>

          <para>同じ 
            <code>^#</code>ルールは、1行目にマッチしますが、2行目にはマッチしません。
            したがって、差異は無視されません。</para>
        </listitem>
      </itemizedlist>

      <tip>
        <para>パターンの正確さを制御するために、
          行頭(<code>^</code>)と行末(<code>$</code>)
          <!-- NOTE: 原文では、'&amp;' となっているが、おそらく間違い-->
          記号を使用することは、大抵、良い習慣です。
          <!-- TODO: イマイチ-->なぜなら、式が、行のある部分にマッチした場合に、
          ルールが適用されるからです。</para>
      </tip>

      <example>
        <title>行フィルタサンプル</title>

        <screen format="linespecific">^MYTAG$</screen>

        <para>厳密に、
          <literal>MYTAG</literal>にマッチする行をフィルタします</para>

        <screen format="linespecific">^::</screen>
        <para>
          <literal>::</literal>で始まる行をフィルタします</para>
        <screen format="linespecific">^/\*.*\*/$</screen>

        <para>
          <literal><constant>/*</constant></literal>で始まり、
          <literal>*/</literal>で終わる行をフィルタします</para>
        <screen format="linespecific">^[1-5]00</screen>

        <para>数字の、100、200、300、400、500
          で始まる行をフィルタします</para>
      </example>

      <example>
        <title>CVS の Id 行にマッチする行フィルタルール</title>

        <para>CVS の Id 行は、次の様なものです:</para>

        <screen>// $Id: Filters.xml 7591 2013-01-20 15:47:42Z christianlist $</screen>

        <para>
          そしてこれは、次のルールでフィルタできます:</para>

        <screen>^// \WId: .*\$</screen>
      </example>

      <example>
        <title>poファイルの行コメントフィルタ</title>

        <para>poファイルの行コメントは、次の様なものです:</para>

        <screen>#: src/filename.c:766</screen>

        <para>
          そしてこれは、次のルールでフィルタできます:</para>

        <screen>^#</screen>
      </example>
    </section>
  </section>

  <section id="Filters_SubstitutionFilter">
    <title>Using substitution filters<indexterm>
        <primary>filters</primary>

        <secondary>substitution</secondary>
      </indexterm><indexterm>
        <primary>filters</primary>

        <secondary>in file comparisons</secondary>
      </indexterm></title>

    <para>TBD</para>
  </section>

  <section id="Filters_dlg">
    <title>フィルタダイアログの使用<indexterm>
        <primary>Filters dialog</primary>
      </indexterm><indexterm>
        <primary>filters</primary>

        <secondary>managing and enabling</secondary>
      </indexterm></title>

    <para>
      このセクションは、ファイルフィルタと行フィルタの作成・管理機能を提供する、
      フィルタダイアログの説明をします。</para>

    <para>
      フィルタダイアログを開くには、次の何れかの方法を使用してください:</para>

    <itemizedlist>
      <listitem>
        <para>ファイルまたはフォルダの選択ダイアログで、
          <guibutton>フィルタ</guibutton>フィールドの右にある、
          <guilabel>選択</guilabel>ボタンをクリックしてください。
          フォルダ比較用のファイルフィルタを適用したい時は、方法を使用してください。</para>
      </listitem>

      <listitem>
        <para>
          <menuchoice>
            <guimenu>ツール</guimenu>
            <guimenuitem>フィルタ</guimenuitem>
        </menuchoice>をクリックしてください。
        この方法は、ファイルまたはフォルダの選択ダイアログを開いている時以外に使用可能です。</para>
      </listitem>
    </itemizedlist>

    <para>フィルタダイアログには、それぞれの
      WinMergeフィルタ用のタブがあります:</para>

    <variablelist>
      <varlistentry>
        <term>ファイルフィルタ</term>

        <listitem>
          <para>
            フォルダ比較用のファイルフィルタを設定するには、このタブを選択してください。</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>Line Filters</term>

        <listitem>
          <para>
            ファイル比較用の行フィルタを設定するには、こちらのタブを使用してください。</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>Substitution Filters</term>

        <listitem>
          <para>Choose this tab to work with substitution filters for file compare
          operations.</para>
        </listitem>
      </varlistentry>
    </variablelist>

    <section id="Filters_FileFiltersTab">
      <title>ファイルフィルタタブの使用<indexterm>
          <primary>file filters</primary>

          <secondary>enabling</secondary>
        </indexterm></title>

      <para>
        このタブの主要部分は、フォルダ比較用に利用可能なファイルフィルタの一覧です。
        このリストは、共有、個人、そして、<!-- TODO: リンク切れ？ -->
        <xref linkend="Filters_FileFilterLoc" />で説明されている、
        WinMergeが知り得るインストール済みのファイルフィルタを含んでいます。</para>

      <section id="Filters_FileFilterEnabling">
        <title>ファイルフィルタの有効化と無効化</title>

        <para>
          <!-- FIXME:言わんとしとることが全くわからん-->
          ファイルフィルタが、フォルダ比較操作で、それを有効にすること、
          また、フィルタが使用され始めてから、
          現在のフィルタを止めるために無効にすることを可能にしなければなりません:</para>

        <orderedlist>
          <listitem>
            <para>
              まだ、フィルタダイアログを開いていない場合は、開いてください</para>
          </listitem>

          <listitem>
            <para>
              ファイルフィルタを選択、もしくは、リストから
              <guimenuitem>
                &lt;なし&gt;</guimenuitem>を選択しくてださい。</para>
          </listitem>

          <listitem>
            <para>
              <guibutton> OK</guibutton>をクリックして、
              フィルタダイアログを閉じてください。</para>
          </listitem>
        </orderedlist>

        <para>
          ファイルフィルタを有効にした後でそれらを適用する方法が、いくつかあります。
          詳細は、<!-- TODO: リンク切れ？ -->
          <xref linkend="Filters_FileFilterApply" />を参照してください。</para>
      </section>

      <section id="Filters_FileFilterCfg">
        <title>ファイルフィルタの設定</title>

        <para>
          <guilabel>ファイルフィルタ</guilabel>リストの管理と
          フィルタの新規作成には、これらのボタンを使用してください:</para>

        <variablelist>
          <varlistentry>
            <term>テスト</term>

            <listitem>
              <para>
                フィルタがどのように動作するか素早く確認するには、
                リスト中のファイルフィルタを選択し、
                <guibutton>テスト</guibutton>をクリックしてください。
                詳細は、<!-- TODO: リンク切れ？ -->
                <xref linkend="Filters_TestingDlg" />を参照してください。</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>インストール</term>

            <listitem>
              <para>
                ファイルフィルタを配置し、フィルタリストへ追加することができます。
                ファイルフィルタは、それらをインストールしない限り、
                共有フォルダ、デフォルトのプライベートフォルダのどちらでも検出されません。</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>新規</term>

            <listitem>
              <para>
                共有フォルダかプライベートフィルタフォルダのどちらかに、
                ファイルテンプレートの新しいコピーを作成します。
                <xref linkend="Filters_CreatingFile" />で説明されているように、
                テンプレートを編集、ルールの追加を行ってください。</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>編集</term>

            <listitem>
              <para>
                デフォルトエディタでファイルを開くには、リスト中のファイルフィルタを選択し、
                <guibutton>編集</guibutton>をクリックしてください。</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>削除</term>

            <listitem>
              <para>
                ファイルを削除しリストから取り除くには、
                リスト中のファイルフィルタを選択し、
                <guibutton>削除</guibutton>をクリックしてください。
                これで、本当にファイルは削除されました。</para>
            </listitem>
          </varlistentry>
        </variablelist>

        <para>
          <guibutton>OK</guibutton>をクリックして、
          フィルタダイアログを閉じた時、変更は保存されます。
          行フィルタは、Windowsのレジストリに保存されます。</para>
      </section>

      <section id="Filters_CreatingFile">
        <title>ファイルフィルタの作成</title>

        <para>WinMergeにインストール済のファイルフィルタが、
          お望みのフィルタを提供していないなら、あなた自身で作成することができます:</para>

        <orderedlist>
          <listitem>
            <para>
              <menuchoice>
                <guimenu>ツール</guimenu>
                <guimenuitem>フィルタ</guimenuitem>
              </menuchoice>をクリックしてください。
              または、ファイルまたはフォルダの選択ダイアログから、
              <guibutton>フィルタ</guibutton>フィールドの右にある、
              <guilabel>選択</guilabel>ボタンをクリックしてください。</para>
          </listitem>

          <listitem id="Filters_New_step">
            <para>
              フィルタダイアログのファイルフィルタタブの、
              <guibutton>新規</guibutton>ボタンをクリックしてください。</para>
          </listitem>

          <listitem>
            <para>共有/プライベートフィルタダイアログで、
              <guilabel>共有フィルタ</guilabel>、または、
              <guilabel>プライベートフィルタ</guilabel>
              (これらを何に使用するかは、<!-- TODO: リンク切れ？ -->
              <xref linkend="Filters_FileFilterLoc" />を参照してください)を選択し、
              <keycap>OK</keycap>をクリックしてください。</para>

            <para>
              お使いのシステムの共有、または、プライベートフォルダが、
              「新しいフィルタのファイル名を指定してください」ダイアログに開きます
              (プライベートフォルダが存在しない場合は、WinMergeが作成します)。</para>
          </listitem>

          <listitem>
            <para>
              「新しいフィルタのファイル名を指定してください」ダイアログで、
              ファイル名を入力し
              <guibutton>保存</guibutton>をクリックしてください。</para>

            <note>
              <para>既存のファイル名を選ばないでください:
                既存のファイルを編集するには、
                <xref linkend="Filters_New_step" />に戻って、
                「新規」の代わりに、「編集」をクリックしてください。</para>
            </note>

            <para>WinMergeは、新しいファイルを、テンプレート:
              <filename>FileFilter.tmpl</filename>を用いて作成し、
              デフォルトのテキストエディタでそれを開きます。</para>
          </listitem>

          <listitem>
            <para>
              テンプレートの編集は、テンプレートの指示に従って、
              プレースホルダ名と説明の更新、
              <xref linkend="Filters_FileFilterSyntax" />で説明されている、
              フィルタルールの追加を行ってください。
              テキストエディタでファイルを保存してください。</para>

            <tip>
              <para>
                あなたが作成中のルールを、素早くテストしたい場合は、
                フィルタダイアログの「テスト」ボタンをクリックしてみてください。
                詳細は、<xref linkend="Filters_TestingDlg" />を参照してください。</para>
            </tip>
            <para></para>
          </listitem>

          <listitem>
            <para>標準の
              <filename>フィルタ</filename>フォルダに
              、ファイルフィルタを作成したにも関わらず、
              フィルタダイアログがその新しいファイルフィルタを表示しない場合は、
              一度、<guibutton>OK</guibutton>をクリックしてダイアログを閉じてください。
              次に、
              <menuchoice>
                <guimenu>ツール</guimenu>
                <guimenuitem>フィルタ</guimenuitem>
              </menuchoice>をクリックし、再度ダイアログを開いてください。
              <guilabel>ファイルフィルタ</guilabel>リストは、
              新しいファイルフィルタを含んでいるでしょう。</para>

            <para>
              お使いのシステム上の、別の場所にファイルを保存した場合、
              あなたがインストールしない限り、WinMergeは、それを検出することができません。
              システム上のどこかにあるファイルフィルタを検出させるには:</para>

            <orderedlist numeration="loweralpha">
              <listitem>
                <para>フィルタダイアログの
                  <guibutton>インストール</guibutton>をクリックしてください。</para>
              </listitem>

              <listitem>
                <para>
                  「インストールするファイルフィルタの位置」ダイアログで、システム上の

                  <filename>flt</filename>ファイルを選択し、
                  <guibutton>開く</guibutton>をクリックしてください。
                  ファイルフィルタリストは、インストールされたファイルフィルタを含んでいるでしょう。</para>
              </listitem>
            </orderedlist>
          </listitem>
        </orderedlist>
      </section>

      <section id="Filters_TestingDlg">
        <title>ファイルフィルタのテスト<indexterm>
            <primary>file filters</primary>

            <secondary>testing</secondary>
          </indexterm><indexterm>
            <primary>testing file filters</primary>
          </indexterm></title>

        <para>
          新しいルール作成や既存のルールの理解を補助するため、
          サンプルデータに対し素早くファイルフィルタをテストするには、
          テストフィルタダイアログを使用してください。
          それは、フルで比較操作を走らせるより簡単です。</para>

        <para>フィルタダイアログから始めます:</para>

        <orderedlist>
          <listitem>
            <para>
              ファイルフィルタタブで、テストしたいファイルフィルタを選択してください。</para>
          </listitem>

          <listitem>
            <para>テストするルールを確認したい場合は、
              <guibutton>編集</guibutton>をクリックしてください。
              ファイルが開き、次のステップの間、内容を確認することができます。</para>
          </listitem>

          <listitem>
            <para>
              <guibutton>テスト</guibutton>をクリックしてください。</para>
          </listitem>

          <listitem>
            <para>
              フィルタのテストダイアログで、テストするルールの型を選択してください:</para>

            <itemizedlist>
              <listitem>
                <para>
                  ファイルフィルタ中のファイルルール、
                  <guilabel>f:</guilabel>をテストするには、
                  <guilabel>フォルダ名</guilabel>オプションのチェックを外してください。</para>
              </listitem>

              <listitem>
                <para>フォルダルール、
                <guilabel>d:</guilabel>をテストするには、
                <guilabel>フォルダ名</guilabel>オプションにチェックを入れてください。</para>
              </listitem>
            </itemizedlist>
          </listitem>

          <listitem>
            <para>
              テスト用のテキストを入力してください。</para>

            <para>
              テキストは、テストするルールの型に適したものであるべきです。
              例えば、<guilabel>フォルダ名</guilabel>オプションをチェックした場合、
              あなたは「\temp」の様なフォルダ名を入力したいでしょう。</para>

            <para>
              <guilabel>結果</guilabel>欄は、入力したテキストを、
              次のどちらかのステータスと共に表示します:

              <computeroutput>passed</computeroutput>、または、
              <computeroutput>failed</computeroutput>。</para>
          </listitem>
        </orderedlist>
      </section>
    </section>

    <section id="Filters_LineFiltersTab">
      <title>行フィルタタブの使用<indexterm>
          <primary>line filters</primary>

          <secondary>enabling</secondary>
        </indexterm></title>

      <para>
        ファイル比較用の行フィルタの設定と有効化には、このタブを使用してください。
        タブは、ルールの一覧を持っています。それぞれのルールは、1つの正規表現を含みます。
        ファイル比較用に、リストから複数のルールを組み合わせて適用することができます。</para>

      <section id="Filters_LineFilterCfg">
        <title>行フィルタの設定</title>

        <para>下の
          <guilabel>正規表現</guilabel>リストには、
          いつでもルールの追加、編集、削除に使うことのできる、編集欄とボタンがあります。</para>
        <para>新しいルールを追加するには:</para>

        <orderedlist>
          <listitem>
            <para>
              <guibutton>新規</guibutton>ボタンをクリックしてください。
              カーソルが自動的に編集欄へ移動します。</para>
          </listitem>

          <listitem>
            <para>
              <guilabel>正規表現</guilabel>リストの下にある、編集欄に式を入力してください。</para>
          </listitem>

          <listitem>
            <para>
              <guibutton>保存</guibutton>をクリックし、リストへ式を読み込んでください。</para>
          </listitem>
        </orderedlist>

        <para>既存のルールを編集するには:</para>

        <orderedlist>
          <listitem>
            <para>行を選択し、
            <guibutton>編集</guibutton>をクリックしてください。</para>
          </listitem>

          <listitem>
            <para>
              編集欄の式を編集してください。</para>
          </listitem>

          <listitem>
            <para>編集が完了したら、
              <guibutton>保存</guibutton>をクリックしてください。
              <!-- TODO: このボタンはゴミ？ -->
              <guibutton> </guibutton>
            </para>
          </listitem>
        </orderedlist>

        <para>ルールを削除するには、ルールを選択(チェック)し、
        <guibutton>削除</guibutton>ボタンをクリックしてください。</para>
      </section>

      <section id="Filters_LineFilterEnabling">
        <title>行フィルタの有効化と無効化<indexterm>
            <primary>line filters</primary>

            <secondary>list of available</secondary>
          </indexterm></title>

        <orderedlist>
          <listitem>
            <para>
              <guilabel>正規表現</guilabel>リストで、
              適用したいフィルタにチェックを入れ、適用したくないフィルタはチェックを外すだけです。</para>
          </listitem>

          <listitem>
            <para>
              <guilabel>行フィルタを有効にする</guilabel>オプションに
              チェックを入れるか、外してください。
              行フィルタを有効にした場合、
              <guilabel>正規表現</guilabel>リストで、現在チェックされているすべてのルールが使用されます。
              行フィルタを無効にした場合、たとえそれらがチェックされていても、ルールは使用されません。</para>
          </listitem>

          <listitem>
            <para>
              <guibutton>OK</guibutton>をクリックして、フィルタダイアログを閉じ、設定を保存してください。</para>
          </listitem>
        </orderedlist>

        <para>
          それらを有効にした後にファイルフィルタを適用する、いくつかの方法があります。
          詳細は、<!-- TODO: リンク切れ？ -->
          <xref linkend="Filters_LineFilterApply" />を参照してください。</para>
      </section>
    </section>

    <section id="Filters_SubstitutionFiltersTab">
      <title>Using the Substitution Filters tab<indexterm>
          <primary>substitution filters</primary>

          <secondary>enabling</secondary>
        </indexterm></title>

        <para>TBD</para>

      <section id="Filters_SubstitutionFilterCfg">
        <title>Configuring substitution filters</title>

        <para>TBD</para>

      </section>

      <section id="Filters_SubstitutionFilterEnabling">
        <title>Enabling and disabling substitution filters<indexterm>
            <primary>substitution filters</primary>

            <secondary>list of available</secondary>
          </indexterm></title>

        <para>TBD</para>
      </section>
    </section>
  </section>

  <section id="AboutFilters_regexp">
    <title>正規表現のヘルプ<indexterm>
        <primary>regular expressions</primary>

        <secondary>getting help</secondary>
      </indexterm></title>

    <para>正規表現は、非常に複雑になり得ます。幸い、WinMerge 
      のほとんどのファイルフィルタは、このトピックの例からもわかるように、シンプルな範囲の表現です。
      WinMergeと共にインストールされるフィルタファイルは、多くの役に立つ例を含んでいます。</para>

    <para>最後に、Web上には、正規表現を手助けする、これらのサイトを含むたくさんの情報源があります:</para>

    <variablelist>
      <varlistentry>
        <term>Good site devoted to regexps:</term>

        <listitem>
          <simpara><ulink
          url="https://www.regular-expressions.info/">https://www.regular-expressions.info/</ulink></simpara>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>Tutorial:</term>

        <listitem>
          <simpara><ulink
          url="http://www.zvon.org/comp/r/tut-Regexp.html">http://www.zvon.org/comp/r/tut-Regexp.html</ulink></simpara>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>PDF quick reference:</term>

        <listitem>
          <simpara><ulink
          url="https://github.com/GordonMcKinney/gist-assets/raw/master/regex.pdf">
          https://github.com/GordonMcKinney/gist-assets/raw/master/regex.pdf</ulink></simpara>
        </listitem>
      </varlistentry>
    </variablelist>
  </section>
</article>
