レシピの API 説明書

BasicNewsRecipe で定義されるレシピを書くための API です

class calibre.web.feeds.news.BasicNewsRecipe(options, log, progress_reporter)[ソース]

すべてのレシピに必要なロジックを含む基底クラス。このクラスの機能を段階的にオーバーライドすることで、段階的にカスタマイズされた強力なレシピを作成できます。レシピ作成の入門チュートリアルについては、お気に入りのニュースサイトを追加 を参照してください。

abort_article(msg=None)[ソース]

現在の記事のダウンロードを中止するには、いずれかの前処理メソッド内でこのメソッドを呼び出します。純粋なビデオ記事のような、不適切なコンテンツを含む記事をスキップするのに便利です。

abort_recipe_processing(msg)[ソース]

レシピダウンロードシステムにこのレシピのダウンロードを中止させ、ユーザに簡単なフィードバックメッセージを表示します。

add_toc_thumbnail(article, src)[ソース]

populate_article_metadata から <img> タグの src 属性とともに呼び出します。この画像は目次の中でその記事を表すサムネイルとして使用するのに適した、記事の中の画像です。サムネイルが実際に使用されるかどうかは、デバイスによって異なります (現在はKindleでのみ使用されます)。参照される画像は、必ず正常にダウンロードされた画像にしてください。そうでない場合には、無視されます。

classmethod adeify_images(soup)[ソース]

EPUBに変換したレシピで、Adobe Digital Editionsで表示したときに画像に問題がある場合は、postprocess_html() 内からこのメソッドを呼び出します。

canonicalize_internal_url(url, is_link=True)[ソース]

url の正準表現のセットを返します。デフォルトの実装では、サーバのホスト名とURLのパスのみが使用され、クエリパラメータ、フラグメントなどは無視されます。正準表現は、このニュースソースのすべての URL で一意である必要があります。そうでない場合は、内部リンクが正しく解決されない可能性があります。

パラメータ:

is_link -- URL が HTML ファイルの内部リンクからのものである場合に True です。 URL が記事のダウンロードに使用される URL の場合は False。

cleanup()[ソース]

すべての記事がダウンロードされた後に呼び出されます。サブスクリプションサイトからのログアウトなどのクリーンアップを行うために使用します。

clone_browser(br)[ソース]

ブラウザ br のクローンを作成します。 mechanizeはスレッドセーフではないため、クローンブラウザはマルチスレッドダウンロードに使用されます。デフォルトのクローン作成手順は、ほとんどのブラウザのカスタマイズをキャプチャするはずですが、レシピで何か変わったことを行う場合には、レシピでこのメソッドをオーバーライドして、手動でクローンを作成する必要があります。

クローンブラウザインスタンスは、Cookieの処理をカスタマイズしていない限り、デフォルトで同じスレッドセーフな CookieJar を使用します。

default_cover(cover_file)[ソース]

表紙のないレシピ用に汎用的な表紙を作成します

download()[ソース]

このレシピのフィードからすべての記事をダウンロードして前処理します。このメソッドは、特定の Recipe インスタンスで 1 回だけ呼び出す必要があります。これを複数回呼び出すと、予期しない動作が発生します。返り値: index.html へのパス

extract_readable_article(html, url)[ソース]

'html' からメインの記事コンテンツを抽出し、クリーンアップして (article_html, extracted_title) タプルとして返します。 Arc90によるoriginal readability アルゴリズムに基づいています。

get_article_url(article)[ソース]

サブクラスでオーバーライドして、各記事のコンテンツを指す URL の抽出をカスタマイズします。記事の URL を返します。これは、フィードから解析された記事を表すオブジェクトである article とともに呼び出されます。`feedparser <https://pythonhosted.org/feedparser/>`_を参照してください。デフォルトでは元のリンク (FeedBurner や Pheedo などのサービスを介して配信されたフィードの場合) を検索し、見つかった場合はそれを返し、そうでなければ `article.link <https://pythonhosted.org/feedparser/reference-entry-link.html>`_を返します。

get_browser(*args, **kwargs)[ソース]

Webからドキュメントをフェッチするために使用されるブラウザインスタンスを返します。デフォルトでは、Cookieをサポートし、robots.txtを無視し、更新を処理し、mozilla firefoxユーザエージェントを持つ `mechanize <https://mechanize.readthedocs.io/en/latest/>`_ブラウザインスタンスを返します。

レシピで最初にログインする必要がある場合は、サブクラスでこのメソッドをオーバーライドします。たとえば、New York Times のレシピでは、フルアクセスのためのログイン用に次のコードが使用されています:

def get_browser(self):
    br = BasicNewsRecipe.get_browser(self)
    if self.username is not None and self.password is not None:
        br.open('https://www.nytimes.com/auth/login')
        br.select_form(name='login')
        br['USERID']   = self.username
        br['PASSWORD'] = self.password
        br.submit()
    return br
get_cover_url()[ソース]

この問題の表紙画像へのURL、または None を返します。デフォルトではメンバー self.cover_url の値を返し、これは通常 None です。レシピで電子書籍の表紙をダウンロードしたい場合は、サブクラスでこのメソッドをオーバーライドするか、このメソッドが呼び出される前にメンバ変数 self.cover_url を設定します。

get_extra_css()[ソース]

デフォルトでは、self.extra_css を返します。プログラムで extra_css を生成したい場合は、オーバーライドします。

get_feeds()[ソース]

このプロファイル用にフェッチする RSS フィードのリストを返します。リストの各要素は、フォーム (title, url) の2要素のタプルである必要があります。 title が None または空の文字列の場合、フィードのタイトルが使用されます。このメソッドは、ダウンロードするフィードのリストを把握するためにレシピで何らかの処理を行う必要がある場合に役立ちます。その場合は、サブクラスでオーバーライドします。

get_masthead_title()[ソース]

レシピタイトル以外のものを使用するには、サブクラスでオーバーライドします

get_masthead_url()[ソース]

この問題のマストヘッド画像への URL 、または None を返します。デフォルトではメンバー self.cover_url の値を返し、これは通常 None です。レシピで電子書籍のマストヘッドをダウンロードしたい場合は、サブクラスでこのメソッドをオーバーライドするか、このメソッドが呼び出される前にメンバ変数 self.cover_url を設定します。マストヘッド画像はKindleMOBIファイルで使用されます。

get_obfuscated_article(url)[ソース]

articles_are_obfuscated を設定すると、このメソッドはすべての記事の URL で呼び出されます。記事の HTML を含むファイルシステム上のファイルへのパスを返すはずです。そのファイルは再帰的な HTML フェッチエンジンによって処理されるため、Web 上のページ/画像へのリンクを含めることができます。

この方法は通常、記事のコンテンツに自動的にアクセスすることを困難にしようとするサイトに役立ちます。

classmethod image_url_processor(baseurl, url)[ソース]

Perform some processing on image urls (perhaps removing size restrictions for dynamically generated images, etc.) and return the precessed URL. Return None or an empty string to skip fetching the image.

index_to_soup(url_or_raw, raw=False, as_tree=False, save_raw=None)[ソース]

インデックスページへの URL を取得し、その BeautifulSoup を返す便利なメソッド。

url_or_raw: URL または文字列としてダウンロードされたインデックスページ

リンクをたどる必要があれば True を返し、そうでなければ False を返します。デフォルトでは NotImplementedError が発生し、ダウンローダはそれを無視します。

パラメータ:
  • url -- フォローする URL

  • tag -- URL の派生元のタグ

parse_feeds()[ソース]

BasicNewsRecipe.get_feeds() によって返されるフィードのリストから記事のリストを作成します。 Feed オブジェクトのリストを返します。

parse_index()[ソース]

このメソッドは、フィードの代わりにWebサイトを解析して記事のリストを生成するレシピに実装する必要があります。典型的な用途は、現在の印刷版のすべての記事を一覧表示する "印刷版" の Web ページがあるニュースソースです。この関数を実装すると BasicNewsRecipe.parse_feeds() よりも優先して使用されます。

リストを返す必要があります。リストの各要素は、('feed title', list of articles) の形式の 2 要素のタプルでなくてはなりません。

記事の各リストには、次の形式の辞書が含まれている必要があります:

{
'title'       : article title,
'url'         : URL of print version,
'date'        : The publication date of the article as a string,
'description' : A summary of the article
'content'     : The full article (can be an empty string). Obsolete
                do not use, instead save the content to a temporary
                file and pass a file:///path/to/temp/file.html as
                the URL.
}

例については、The Atlantic をダウンロードするためのレシピを参照してください。さらに、記事の著者に 'author' を追加できます。

何らかの理由で処理を中止し、calibre にエラーではなく単純なメッセージをユーザに表示させたい場合は、abort_recipe_processing() を呼び出します。

populate_article_metadata(article, soup, first)[ソース]

記事に属する各 HTML ページがダウンロードされるときに呼び出されます。解析された HTML (soup) から著者/要約のような記事の書誌を取得するための使用が想定されています。

パラメータ:
  • article -- クラス calibre.web.feeds.Article のオブジェクト。要約を変更するときには、必ず text_summaryも変更してください

  • soup -- この記事に属する解析された HTML

  • first -- 解析された HTML が記事の最初のページであれば True です。

postprocess_book(oeb, opts, log)[ソース]

解析されたダウンロード済みの電子書籍で必要な後処理を実行します。

パラメータ:
  • oeb -- OEBBook オブジェクト

  • opts -- 変換オプション

postprocess_html(soup, first_fetch)[ソース]

このメソッドは、リンクと画像が解析された後、ダウンロードされた各 HTML ファイルのソースで呼び出されます。HTML 上で任意に強力な後処理を行うために使用できます。処理後に soup を返します。

パラメータ:
  • soup -- ダウンロードした HTML を含む BeautifulSoup インスタンス

  • first_fetch -- これが記事の最初のページなら True。

preprocess_html(soup)[ソース]

このメソッドは、リンクや画像を解析する前に、ダウンロードした各 HTML ファイルのソースで呼び出されます。 remove_tags などで指定されたクリーンアップの後に呼び出されます。HTML で任意の強力な前処理を行うために使用できます。処理後に soup を返します。

soup: ダウンロードされた HTML を含む BeautifulSoup インスタンス

preprocess_image(img_data, image_url)[ソース]

ダウンロードした画像データに対して何らかの処理を行います。これは、サイズ変更が行われる前に生データで呼び出されます。処理された生データを返す必要があります。画像をスキップするためには None を返します。

preprocess_raw_html(raw_html, url)[ソース]

このメソッドは、オブジェクトツリーに解析される前に、ダウンロードされた各 HTML ファイルのソースで呼び出されます。 raw_html は、Web からダウンロードされた生の HTML を表すUnicode文字列です。 url は、HTML のダウンロード元の URL です。

このメソッドは preprocess_regexps の*前*に機能します。

このメソッドは、処理された raw_html を unicode オブジェクトとして返す必要があります。

classmethod print_version(url)[ソース]

記事のコンテンツを含むWebページを指す url を取得し、記事の印刷バージョンを指す URL を返します。デフォルトでは何もしません。例:

def print_version(self, url):
    return url + '?&pagewanted=print'
publication_date()[ソース]

この問題が発行された日付を設定するために使用します。デフォルトはダウンロードの時間です。 datetime.datetime オブジェクトを返す必要があります。

skip_ad_pages(soup)[ソース]

このメソッドは remove_tags、keep_only_tags などのクリーンアップ属性が適用される前に、ダウンロードされた各 HTML ファイルのソースで呼び出されます。ただし preprocess_regexps は適用済みです。これは、レシピが広告ページをスキップできるようにすることを目的としています。soup が広告ページを表していれば、実際のページの HTML を返し、そうでなければ None を返します。

soup: ダウンロードされた HTML を含む BeautifulSoup インスタンス

sort_index_by(index, weights)[ソース]

index 内のタイトルを` weights` に従って並べ替える便利なメソッド。index はその場で並べ替えられます。index を返します。

index: タイトルのリスト。

weights: 重みをタイトルにマップする辞書。インデックス内のタイトルに重みがない場合、重みは 0 と見なされます。

classmethod tag_to_string(tag, use_alt=True, normalize_whitespace=True)[ソース]

BeautifulSoup <https://www.crummy.com/software/BeautifulSoup/bs4/doc/>`_の :code:`Tag を取得し、CDATA セクションと alt タグ属性を含むテキストを再帰的に抽出する便利なメソッドです。空の可能性のあるUnicode文字列を返します。

use_alt: Trueのとき、テキストコンテンツを含まないタグに alt 属性を使用してみてください

tag: BeautifulSoup Tag

articles_are_obfuscated = False

True に設定すると、get_obfuscated_article() を実装して、コンテンツのスクレイプを困難にしようとする Web サイトを処理します。

auto_cleanup = False

ダウンロードした記事ページからすべてのテキストを自動的に抽出します。readability プロジェクトのアルゴリズムを使用します。これを True に設定すると、ダウンロードした HTML を手動でクリーンアップする必要がなくなります (ただし、手動クリーンアップの方が常に優れています)。

auto_cleanup_keep = None

自動クリーンアップアルゴリズムで削除してはならない要素を指定します。構文は XPath 式です。例:

auto_cleanup_keep = '//div[@id="article-image"]' will keep all divs with
                                               id="article-image"
auto_cleanup_keep = '//*[@class="important"]' will keep all elements
                                            with class="important"
auto_cleanup_keep = '//div[@id="article-image"]|//span[@class="important"]'
                  will keep all divs with id="article-image" and spans
                  with class="important"
center_navbar = True

Trueのとき、ナビゲーションバーは中央揃えに、それ以外の場合は左揃えになります。

compress_news_images = False

これを False に設定すると、すべてのサイズ調整および圧縮パラメータが無視され、画像が変更されずに渡されます。True に設定し、その他の圧縮パラメータをデフォルト値のままにすると、JPEG 画像は、出力プロファイルで設定された画面のサイズに合わせて拡大縮小され、最大 (w * h)/16 のサイズに圧縮されます。ここで w と x と h は拡大縮小された画像のサイズです。

compress_news_images_auto_size = 16

JPEG 画像を自動圧縮するときに使用される係数。 None に設定すると、自動圧縮は無効になります。それ以外のとき、画像のサイズは、可能であれば品質レベルを下げることによって (w * h)/compress_news_images_auto_size バイトに縮小されます。ここで w と x と h はピクセル単位の画像の寸法です。最小 JPEG 品質は 5/100 になるため、この制約が満たされない可能性があります。このパラメータは、画像の最大サイズを固定するパラメータ compress_news_images_max_size でオーバーライドできます。 scale_news_images_to_device を有効にすると、画像は最初に拡大縮小され、次にサイズが (w * h)/factor 未満になるまで品質が低下します。ここで w と h は拡大縮小された画像のサイズになります。つまり、この圧縮はスケーリング後に行われます。

compress_news_images_max_size = None

画像が指定されたサイズ (KB単位) を超えないようにJ PEG 品質を設定します。設定されると、このパラメーターは compress_news_images_auto_sizeに よる自動圧縮をオーバーライドします。最小 JPEG 品質は 5/100 になるため、この制約が満たされない可能性があります。

conversion_options = {}

ダウンロードしたコンテンツの電子書籍への変換を制御するためのレシピ固有のオプション。これらはユーザまたはプラグインで指定された値を上書きするため、絶対に必要な場合にのみ使用してください。例:

conversion_options = {
  'base_font_size'   : 16,
  'linearize_tables' : True,
}
cover_margins = (0, 0, '#ffffff')

デフォルトでは、get_cover_url() によって返される表紙画像が定期刊行物の表紙として使用されます。レシピでこれをオーバーライドすると、ダウンロードした表紙をフレームにレンダリングするように calibre に指示します。フレームの幅と高さは、ダウンロードした表紙のパーセンテージとして表されます。 cover_margins = (10, 15, '#ffffff') は、左右に 10px、上下に 15px の白い余白でカバーを埋めます。色名は こちら で定義されています。ただし何らかの理由により Windows では white が常に機能するとは限りません。代わりに #ffffff を使用してください

delay = 0

連続するダウンロード間の遅延 (秒単位)。引数は、より正確な時間を示せるよう浮動小数点数にすることができます。

description = ''

このレシピがダウンロードするコンテンツの 2、3 行の説明。これは主に、レシピのリストを表示する GUI で使用されます。

encoding = None

文字セットの指定が正しくないサイト用にオーバーライドエンコーディングを指定します。最も一般的なのは latin1 を指定して cp1252 を使用することです。None のときには、エンコーディングを検出してみてください。呼び出し可能であれば、それは 2 つの引数、レシピオブジェクトとデコードされるソースで呼び出されます。デコードされたソースを返す必要があります。

extra_css = None

ダウンロードした HTML ファイルに追加する必要がある追加の CSS を指定します。終了タグ </head> の直前の <style> タグに挿入されるため、個々の HTML タグの style 属性を使用して宣言されているものを除くすべての CSS がオーバーライドされます。ただしプログラムでextra_cssを生成する場合は、代わりに get_extra_css() メソッドをオーバーライドします。例:

extra_css = '.heading { font: serif x-large }'
feeds = None

ダウンロードするフィードのリスト。 [url1, url2, ...] または [('title1', url1), ('title2', url2),...] のいずれかになります。

filter_regexps = []

無視するリンクを決定する正規表現のリスト。空の場合は無視されます。 is_link_wanted が実装されていない場合にのみ使用されます。例:

filter_regexps = [r'ads\.doubleclick\.net']

上記は ads.doubleclick.net が含まれているすべてのURLを削除します。

BasicNewsRecipe.match_regexps または BasicNewsRecipe.filter_regexps のいずれか1つのみを定義する必要があります。

handle_gzip = True

gzip圧縮された転送を使用したくない場合は、False に設定します。ただし一部の古いサーバはgzipで止まってしまいます

ignore_duplicate_articles = None

複数のセクションに存在する記事の重複はを無視します。重複する記事とは、同じタイトルや URL を持つ記事です。同じタイトルの記事を無視するには、次のように設定します:

ignore_duplicate_articles = {'title'}

代わりに URL を使用するには、次のように設定します:

ignore_duplicate_articles = {'url'}

タイトルまたは URL をマッチさせるには、次のように設定します:

ignore_duplicate_articles = {'title', 'url'}
keep_only_tags = []

指定されたタグとその子のみを保持します。タグを指定するための形式については、BasicNewsRecipe.remove_tags を参照してください。このリストが空でない場合、<body> タグは空になり、このリストのエントリに一致するタグで埋め直されます。例:

keep_only_tags = [dict(id=['content', 'heading'])]

上記は "content" または "heading"id 属性を持つタグのみを保持します。

language = 'und'

ニュースの言語。2 文字または 3 文字の長さの ISO-639 コードである必要があります

masthead_url = None

デフォルトでは、calibreはマストヘッドのデフォルト画像を使用します (Kindleのみ)。レシピでこれをオーバーライドして、マストヘッドとして使用する URL を提供します。

match_regexps = []

フォローするリンクを決定する正規表現のリスト。空の場合、無視されます。 is_link_wanted が実装されていない場合にのみ使用されます。例:

match_regexps = [r'page=[0-9]+']

上記は page=some number を含むすべての URL に一致します。

BasicNewsRecipe.match_regexps または BasicNewsRecipe.filter_regexps のいずれか1つのみを定義する必要があります。

max_articles_per_feed = 100

各フィードからダウンロードする記事の最大数。これは主に、記事の日付がないフィードに役立ちます。ほとんどのフィードでは、BasicNewsRecipe.oldest_article を使用する必要があります

needs_subscription = False

Trueのとき、ダウンロード中に使用するユーザ名とパスワードを GUI がユーザに要求します。 "オプション" に設定すると、ユーザ名とパスワードの使用はオプションになります

no_stylesheets = False

電子書籍形式への変換に適さない過度に複雑なスタイルシートを持つ Web サイトのスタイルシートの読み込みを無効にするための便利なフラグ。 True なら、スタイルシートをダウンロードして処理しません。

oldest_article = 7.0

このニュースソースからダウンロードする最も古い記事。数日で指定します。

preprocess_regexps = []

ダウンロードした HTML で実行する regexp 置換ルールのリスト。リストの各要素は、2 要素のタプルである必要があります。タプルの最初の要素はコンパイルされた正規表現であり、2 番目の要素は単一の一致オブジェクトを受け取り、マッチを置き換える文字列を返す呼び出し可能オブジェクトである必要があります。例:

preprocess_regexps = [
   (re.compile(r'<!--Article ends here-->.*</body>', re.DOTALL|re.IGNORECASE),
    lambda match: '</body>'),
]

<!--Article ends here--> から </body> まですべてを削除します。

publication_type = 'unknown'

新聞、雑誌、ブログに設定する出版物のタイプです。 None にすると、出版物タイプの書誌は opf ファイルに書き込まれません。

recipe_disabled = None

空でない文字列を設定すると、このレシピを無効にします。文字列は無効のメッセージとして使用されます

recursions = 0

記事のウェブページでたどるリンクレベルの数

remove_attributes = []

すべてのタグから削除する属性のリスト。例:

remove_attributes = ['style', 'font']
remove_empty_feeds = False

True のとき、空のフィードを出力から削除します。サブクラスで parse_index がオーバーライドされていると、このオプションは効果がありません。feeds または :meth:`get_feeds`を使用してフィードのリストを返すレシピのみを対象としています。また ignore_duplicate_articles オプションを使用する場合にも使用されます。

remove_javascript = True

ダウンロードした HTML からすべての JavaScript タグを削除するための便利なフラグ

remove_tags = []

削除するタグのリスト。指定したタグはダウンロードした HTML から削除されます。タグは、次の形式の辞書として指定されます:

{
 name      : 'tag name',   #e.g. 'div'
 attrs     : a dictionary, #e.g. {'class': 'advertisment'}
}

すべてのキーはオプションです。検索条件の詳しい説明については Beautiful Soup を参照してください。よくある例:

remove_tags = [dict(name='div', class_='advert')]

これは、ダウンロードした HTML からすべての <div class="advert"> タグとそのすべての子を削除します。

remove_tags_after = None

指定したタグの後にあるすべてのタグを削除します。タグを指定するための形式については、BasicNewsRecipe.remove_tags を参照してください。例:

remove_tags_after = [dict(id='content')]

id="content" の最初の要素の後のすべてのタグを削除します。

remove_tags_before = None

指定されたタグの前にあるすべてのタグを削除します。タグを指定するための形式については attr:BasicNewsRecipe.remove_tags を参照してください。例:

remove_tags_before = dict(id='content')

id="content" の最初の要素の前のすべてのタグを削除します。

requires_version = (0, 6, 0)

このレシピを使用するために必要な calibre の最低のバージョン

True に設定すると、ダウンロードした記事が指している別のダウンロードした記事へのリンクが、元のWeb URLではなく、記事のダウンロードしたコピーを指すように変更されます。これを True に設定すると、特定の Web サイトの URL スキームを操作するために canonicalize_internal_url() を実装する必要がある場合もあります。

reverse_article_order = False

各フィードの記事の順序を逆にします

scale_news_images = None

画像を拡大縮小する最大サイズ (w,h)。 scale_news_images_to_device が Trueのとき、プロファイルが設定されていない限り、出力プロファイルによって設定されたデバイス画面のサイズに設定されます。プロファイルが設定されていない場合は、割り当てられている値のままになります (デフォルトはNone)。

scale_news_images_to_device = True

出力プロファイルで設定されたデバイス画面のサイズに合うように画像のサイズ調整をやり直します。出力プロファイルが設定されていない場合は無視されます。

simultaneous_downloads = 5

同時ダウンロードの数。気難しいサーバには 1 を設定します。BasicNewsRecipe.delay > 0 の場合、自動的に 1 に減少します

summary_length = 500

短い説明の最大文字数

template_css = '\n            .article_date {\n                color: gray; font-family: monospace;\n            }\n\n            .article_description {\n                text-indent: 0pt;\n            }\n\n            a.article {\n                font-weight: bold; text-align:left;\n            }\n\n            a.feed {\n                font-weight: bold;\n            }\n\n            .calibre_navbar {\n                font-family:monospace;\n            }\n    '

テンプレートのスタイル設定に使用されるCSS、つまりナビゲーションバーと目次。この変数をオーバーライドするのではなく、レシピで extra_css を使用して見た目をカスタマイズする必要があります。

timefmt = ' [%a, %d %b %Y]'

最初のページに表示される日付の形式文字列。デフォルト:Day_Name, Day_Number Month_Name Year

timeout = 120.0

サーバーからファイルをフェッチするためのタイムアウト (秒単位)

title = '不明なニュースソース'

電子書籍に使用するタイトル

use_embedded_content = None

通常、埋め込まれたコンテンツの長さに基づいて、フィードに完全な記事が埋め込まれているかどうかを推測しようとします。 None であれば、デフォルトの推測が使用されます。 True ならば、フィードには常にコンテンツが埋め込まれていると見なされ、False ならば、フィードにはコンテンツが埋め込まれていないと常に見なされます。