erroneous behavior (EB) の日本語訳を考える
未初期化変数の読み取りがErroneous behaviourであると規定されますが、この訳語を考えたいです。
ひとまずC++26概要ページで「不正動作」と書きましたが、合意のとれた訳語に変えたいです。
ChatGPTに聞いてみましたら、
erroneous behaviour
C++用語のこれを日本語訳する候補をいくつか示してください
アシスタント
"erroneous behaviour"は、C++や他のプログラミング言語において、一般的にプログラムが正しくない、または予期しない振る舞い(動作)をすることを指します。これを日本語に訳すと以下のようになります。
・誤った振る舞い
・誤動作
・不適切な動作
・適切でない動作
・不正な動作
合意がとれたら、既存文書の修正、訳語表への記載、用語定義 (GLOBAL_DEFINED_WORDS.json) への記載をします。
代案がないなら「不正」で悪くないと思います。
ただ、自分の怪しい英語の感覚ですけど undefined / erroneous からうける感覚と比べてみて、未定義 / 不正 では不正のほうがことさらに良からぬことのように感じられそうではありますね。不正行為というとかなり非難的な言葉ですけど、erroneous act なら単なる誤りとして許されそう。
意訳的な言葉を選ぶとしたら、undefined behaviour が引き起こす現実的なセキュリティ上の問題などから救済するために erroneous という定義を与えてやるという感じの意図なのかなと思いました。
自分で考えてみたところでは「不正」よりも良さそうな案が浮かばなかったのですが、他にどういう日本語が有り得そうかの参考として、以下に考えたのを書いておきます。
- 不適正動作
- ちょっと不自然に回りくどくしただけで、「不正」との違いがわからない
- 非適格動作
- non-conforming の訳語と感じてしまう。C++ プログラムが non-conforming というのは特定の言語規格などに準拠していないことを指すことが多いので、混乱させそう
- 誤動作
- テクニカルタームでなく日常用語っぽく聞こえる。「潜在的に誤っているが実際におかしな挙動を起こすとは限らない」という意味合いが伝わらない
- 違反動作
- 「何に違反してるんだろう」という感覚になってしまう上に、violation の訳語にも感じられて変
- 異常動作 or 危険動作
- 「未定義動作とは違って一応は動くけども正常系からは外れている」という意図はあるが、意味がズレてる
Erroneous behaviour に込められた思いが P2795R5 の下の方にある The broader picture: Erroneous behaviour in C++ に少し整理されていますね。
従来は undefined behaviour (UB) であったコードの一部を erroneous behaviour (EB?) という新しい種類に変更することで、診断などを改善する試みだと理解しました。
そこで「未定義動作」などと対立する(同列の)概念として使用される用語になることから、
- 定義済み不正動作
とでも呼びたいイメージでしょうか。あくまで気持ちとしてですが。
「定義済み不正動作」いいですね。 正しくない操作・誤った操作を不正と言うしかない不自由さみたいなのは感じますが…
errornessにあまりこだわらずに意味を重視するなら、フールプルーフ動作とか、フェールセーフ動作とか、そのあたりもありですかね? 訳してるのに訳になってないんですが・・・
無理やり言葉をつなげて、過誤安全な動作、というのを思いつきました。語感は悪くなさそう
個人的には英語との対応関係を崩すのは頭の中で繋がりにくく分かりにくいので、余り離れたものや付加説明のついたものよりはより素直なものの方がいいなと思います。"不正時の動作" / "不正時動作" など
(追記: "不正動作" だと動作自体が不正のような感じがするので、不正なプログラム・操作に対しての処理系の動作という意味で "時" を入れることを提案するものです)
※JIS C++ では "{未定義,未規定,処理系定義}の動作" のように「の」を入れています
もし「不正」に違和感があれば "誤り時の動作" とか "誤りに対する動作" など? (用語としてしっくりくるものが余り思いつきません…)
「過誤安全な動作」は仕様をよく表していていいなとは思いましたが、元の用語との対応が気になりはしましたね。
「定義済み不正動作」は、もし仮にerroneous behaviourを伏せ字にして提案文書を読んだとき、自分だったらどう名付けるか、という気持ちで元の英語とは関係なく意味を表そうとしたものです。
本サイトの「翻訳ではなく解説を提供」という方針が好きなので、ひょっとしたら用語も解説に振るのもありかと思いました。
英語との対応関係を崩したくないのも共感します。サイト読者の中で英語も読む機会がある人たちは少なからず混乱すると思います。
もう1つ指摘したい観点は 「誰にとって間違っている(erroneous)のか」です。 Summaryの最後のセンテンスにこうあります。
This behaviour is both “wrong” in the sense of indicating a programming bug, and also well-defined in the sense of not posing a safety risk.
つまり2つの立場があって、以下のように整理できると思います。
- プログラマの立場からすれば、期待する動作ではなく間違った動作をする、つまりバグである。
- 言語仕様の立場からすれば、定義された動作をするし、安全上のリスクもない。
後者はポジティブなので、erroneous のネガティブな意味は前者のプログラマ視点から来ていると分かります。
個人的には「不正」という日本語は illegal(違法)のイメージが強いので、言語仕様の立場で言っているような印象が付いてしまい、いまいちだと改めて感じました。(定義済み不正動作と書いたときはこの観点に気づいてなかった)
一方で「間違った動作」「誤った動作」などは、どちらかというとプログラマが間違っている印象なので良さそうです。
誰にとって間違ってるかを入れると、確かにすっと入ってくる気がします 「実装起因の不正動作」とか「コーディングミスによる異常挙動」とかでしょうか? 長いしなんだか意訳過ぎな気もしますが、一応案出ししときます
一つの意見表明として。私自身は実は「不正」に対してはそこまでの違和感はないです。確かに単に「不正」というと、日常的な「不正」の用法から、そぐわないような気がします。しかし、組み合わせて用語として定めるのであれば日常で使われる「不正」のニュアンスがなくても全然問題ない範囲のように個人的には感じられます。日常の「不正」の用法では、何か倫理的・法的に悪い意図が内在しているように私には感じられますが、その感覚は処理系の動作に対して適用しづらいということ。また、(人間社会の) 法令に対する違法 (illegal) な行いに対して「不正」とは言いますが、単に言語仕様に対する違反を「不正」と呼ぶ使い方が一般的とは思われないということ。組み合わせて用語の一部として「不正」が含まれる場合には、日常的なニュアンスは弱いのではないかということ (日常の使われ方とは別に「不正」に純粋に「正しくない」という意味はないのでしょうか)。などのことから別に「不正」でもいいんじゃないかなって感覚です。
一方で「間違った動作」「誤った動作」などは、どちらかというとプログラマが間違っている印象なので良さそうです。
「不正」か「間違った」or「誤った」かという選択はさておき、その修飾の仕方だとむしろ処理系の動作が間違っているように私には読めます。「動作」という語は元々処理系 (C++コンパイル&実行の枠組み) の振る舞いを指すものです (もっと正確に言うと、既存の「〇〇動作」という語は、規格が処理系の模範として定める "抽象機械" の動作であって、実際の処理系においては何らかの具体的な動作 (破壊的な動作や文書化された動作や鼻から悪魔を出す動作など) として実現されるわけですが)。もちろん誤ったプログラムによって処理系が結果として誤った動作をするのではありますが、もし「プログラムの誤りなのか vs 処理系の動作として安全でないかetc」について意識するのであれば、その修飾の仕方は寧ろ逆の印象です。
「実装起因の不正動作」とか
実装 (implementation) は言語仕様的にはC++処理系のことです…。本当は implementation の訳は「処理系」に統一したいところですが、実態として cpprefjp でも他でも処理系のことを実装と訳しているケースが多くあります。一般的な用語と考えると、プログラムもC++処理系もみんな「実装」なので曖昧です。この提案の方向だと「プログラム起因の不正動作」が良いでしょうか。
重箱の隅ついでに…
非適格動作
- non-conforming の訳語と感じてしまう。C++ プログラムが non-conforming というのは特定の言語規格などに準拠していないことを指すことが多いので、混乱させそう
不適格 = ill-formed, 不適合 = non-conforming ですね。C++ は ill-formed program や conforming implementation は定義していますが、(non-)conforming program は定義していません。C++ が参照するC言語では conforming program がありますが、基準はより緩くてコンパイラ独自拡張文法・機能などの利用を含んでいても良かったはずです (※適合処理系は、適格なプログラムを正しく実行する限りは拡張が許されている)。逆に strictly conforming program は外部ライブラリの利用すらもないC言語プログラムです。
英語との対応については、英語資料を読むときの対応だけに留まらず、(cpprefjp に限らない) 日本語資料における一貫性にも懸念があります。素直でない訳し方をすると、cpprefjp (+その周りのコミュニティー) の外に用語が浸透しにくく、更に他での日本語訳との対応もぱっと見て分からないという。。。たとえ初見で分かりやすくても cpprefjp 界隈だけの独自訳になってしまうと、色々と調べる上で余り嬉しくありません。
用語定義するのは、その用語表現以上の付加的意味を持たせてコンパクトにするのが目的なのだから、その用語表現自体で無理して全てを記述しなくても…と思います。
実際の用例にぴったり当てはまるかという観点も考えた方が良いですね。例えば「未初期化変数の読み取りは〇〇動作を引き起こす」にあてはめた時に違和感があるものや余り専門用語っぽくないものはどうなのかなど。(cpprefjp の中だけでしか使わないなら GLOBAL_DEFINED_WORDS.json でマークアップするのでOKという考えもあるかもですが)。
訳語の選択としては、cpprefjp用語というよりは、普及させたい訳語として考えたいですね。 なので、周りに使ってもらえない独自用語になってしまわないよう注意する必要はあると思います。
C++のJIS規格はおそらく今後でることはないと思いますので (やるとしたら日本のC++標準化委員会のメンバーが担当を割り振って訳していくことになりますが参加企業から給料をもらってそんな膨大な作業はできないことと、コンパイラの実装マニュアル的要素が強い規格書を使うコンパイラベンダが日本で少なくなったため)、議論の末によい訳語を考え出すのはcpprefjpの役割が大きいかと思います (ほかに訳語を議論する場所は個人以外であまりないという意味で)。 ただし、cpprefjpで考えた訳語だからという理由で使ってもらえるわけでもないと思いますので、納得感ある訳語にしたいですね。
私の「不正」への懸念としては、クラッシュするように思えてしまうために訳語を考える別な人ではなく、ユーザーに過度に恐れさせてしまうのではないかと思ったのでした。 その懸念に対して「問題ない」「erroneousを表せるほかの日本語を」「"定義済み"のような補完語をつける」のような議論があるとよいのかなと思います。
一方で「間違った動作」「誤った動作」などは...
もし「プログラムの誤りなのか vs 処理系の動作として安全でないかetc」について意識するのであれば、その修飾の仕方は寧ろ逆の印象です。
昨日のakinomyogaさんの投稿に対して追記された部分をいま発見し、「不正時動作」などの意図を理解しました。たしかに、動作を決定する主体が処理系であると認識すると「間違った動作」などは処理系が何かを間違える印象で良くないですね。
- 例: 未初期化変数の読み取りは間違った動作を引き起こす。 (もともと未初期化変数を読み取る行為が間違っているのであって、その結果間違いが引き起こされるわけではない)
「○○動作」のように修飾して動作が誤りである、正しくない、などとする表現はすべて該当しそうです。
ところで、用語の使用例の観点からも考察したいです。
未定義動作(UB)と異なり、EBの場合は実際の動作内容を説明する必要があるため、例えばこんな感じになるでしょうか?
- 例: 未初期化変数を読み取ると不定の値が得られる。ただしこれは ○○○○ に当たる。 (この文自体の提案文書との整合性はここでは忘れてください)
他にも想定される使用例をあげて「○○○○」に訳語案を当てはめれば、より具体的に違和感や問題点を議論できる気がします。
(追記: 実際の用例を考えようは2つの上のakinomyogaさんのコメントで既出でございました...)
結論: 「意図に反する動作」が適当と考えます。
- プログラマの立場からすれば、期待する動作ではなく間違った動作をする、つまりバグである。
- 言語仕様の立場からすれば、定義された動作をするし、安全上のリスクもない。
後者はポジティブなので、erroneous のネガティブな意味は前者のプログラマ視点から来ていると分かります。
これを見ていて自分が思い出したのはcoinhive事件です。
「反意図性」の認識違いがコインハイブ事件の判決を変えた 情報法制研究所理事・高木浩光氏が語る、矛盾と許容性 - ログミーTech
この図そのものは本件に無関係ですが、「意図に反する動作をさせる」の部分に着目してほしいです。
EBについて考えたとき、もう一度成立過程に立ち返ると、UBから分離して動作を定義することで安全性を高めるというのが背景として合ったのでした。
とするならば、「意図に反する動作」というのが非常に都合がいいワードなのではないかと主張したいわけです。
coinhive事件において、「意図に反する動作」とは、一般の市民からみて意図に反する、と判断されたのでした (参照: 【座談会】コインハイブ事件最高裁判決を受けて(上))。
EBについて「意図に反する動作」とは、プログラムを書いているまさに本人からみて意図に反する、と判断することが自然とできるのではないでしょうか?
と主張し終わってから改めて昔 @akinomyoga さんにご提供いただいた( #489, #493 )
https://cpprefjp.github.io/implementation-compliance.html
にある図を見返していたのですが、「意図に反する動作」だけだとやや限定が足りないかもしれないですね・・・。「意図に反する定義動作」とかにしておくべきなんだろうか・・・。
厚生労働省のWebサイトからですが、労災関係の用語として「不安全行動」というのがあるようです。 この用語自体の意味は本件とは少しだけ違うのですが、erroneousを不安全と訳して「不安全動作」とするのは、わりと違和感なく受け入れられそうな気がします。
Proposed wording には erroneous behavior の他に erroneous value という用語も登場するので、関連することが分かるように訳語を展開できると良さそうです。
ひとまずまとめてみました、議論の叩き台にどうぞ
ここまで出てきた案
- 不正動作
- 不適正動作
- 非適格動作
- 誤動作
- 違反動作
- 異常動作
- 危険動作
- 定義済み不正動作
- 過誤安全な動作
- 不正時動作
- 実装起因の不正動作
- コーディングミスによる異常挙動
- 意図に反する動作
- 不安全行動
評価軸
- erroneous behaviorに直接的に対応しているか?
- erroneous behaviorの意味を表現できているか?
- 誰にとってerroneousであるかが明確か?
- 規格 or 処理系(実装) or ユーザー
- 実際の用例に当てはめた時の違和感
- erroneous valueとの関連
評価
一部主観的なものになっています。
| 案 | 1.訳の対応 | 2.意味の表現 | 3.読み取れるerroneousの対象 | 4.用例 | 5.erroneous valueとの対応 |
|---|---|---|---|---|---|
| 不正動作 | ⭕ | 🔺(不正で終わりではない) | ❓ | ⭕ | ⭕(不正な値) |
| 不適正動作 | ⭕ | 🔺(同上) | ❓ | ⭕ | ⭕(不適正な値) |
| 非適格動作 | ⭕ | 🔺(同上、非適格でもない) | ❓ | ⭕ | ❌ |
| 誤動作 | ⭕ | 🔺(同上) | ❓ | ⭕ | ⭕(誤った値) |
| 違反動作 | ⭕ | 🔺(同上) | ❓ | ⭕ | ❌ |
| 異常動作 | ⭕ | 🔺(同上、異常でもない) | ❓ | ⭕ | 🔺(異常な値) |
| 危険動作 | ⭕ | 🔺(同上、危険でもない) | ❓ | ⭕ | 🔺(危険な値) |
| 定義済み不正動作 | 🔺 | ⭕ | ❓ | ⭕ | ❌ |
| 過誤安全な動作 | 🔺 | ⭕ | ❓ | ⭕ | ⭕(過誤安全な値) |
| 不正時動作 | 🔺 | ⭕ | ユーザー | ⭕ | ⭕(不正時の値) |
| 実装起因の不正動作 | 🔺 | ❌(実装起因の不正ではない) | 実装 | ⭕ | 🔺(実装起因の不正な値) |
| コーディングミスによる異常挙動 | 🔺 | 🔺(異常挙動ではない) | ユーザー | 🔺 | 🔺(コーディングミスによる異常な値) |
| 意図に反する動作 | 🔺 | ❌(UB->EBの違いを表していない) | ユーザー | ⭕ | ⭕(意図に反する値) |
| 不安全動作 | ⭕ | ❌(安全側に倒したものである事に反している) | ユーザー | ⭕ | 🔺(不安全な値) |
凡例
- 訳の対応
- ⭕ : erroneous behaviorに過不足なく当たっている
- erroneousの訳語の適切さは評価の外
- 🔺 : erroneous behaviorに直接現れない言葉が付加されている
- ⭕ : erroneous behaviorに過不足なく当たっている
- 意味の表現(私の理解に基づくかなり主観的なものです)
- ⭕ : erroneous behaviorの意味を表現できている
- 🔺 : erroneous behaviorの意味を表現しきれていない
- ❌ : erroneous behaviorの意味としては適切でない
- 読み取れるerroneousの対象
- ❓ : 対象が明確ではない
- 用例
- ⭕ : 「未初期化変数の読み取りは〇〇動作を引き起こす」等に当てはめた時に違和感がない
- 🔺 : 若干長くてくどくなると感じた
- erroneous valueとの対応
- ⭕ : 対応する形でerroneous valueを訳したときに適切
- 🔺 : 対応する形でerroneous valueを訳したときに違和感がないものの、意味的に不適切
- ❌ : 対応する形でerroneous valueを訳したときに違和感がある
多分これを見て気分を害した方もいると思われますが、個別の訳を批判する意図はありません。なるべく中立的な視点から評価を行う様にはしたつもりですが、異論があればご自由に編集してください。
@onihusube さん、まとめありがとうございます。 この表をみる限りでは、「不正時動作」が一番よさそうな感じがしますね
なぜ error や wrong や incorrect ではなく erroneous としたかを知りたくて辞書を引きました。
// Cambridge Dictionary: https://dictionary.cambridge.org/
based on false information and therefore wrong; false
// Oxford Learner's Dictionaries: https://www.oxfordlearnersdictionaries.com/
not correct; based on wrong information
// Longman Dictionary of Contemporary English: https://www.ldoceonline.com/
erroneous ideas or information are wrong and based on facts that are not correct
// Britannica Dictionary: https://www.britannica.com/dictionary
not correct
// Collins English Dictionary: https://www.collinsdictionary.com/dictionary/english
Beliefs, opinions, or methods that are erroneous are incorrect or only partly correct.
// 英辞郎 on the WEB: https://eow.alc.co.jp/
〔考え方・判断・情報などが〕間違った、誤りのある
// ウィズダム英和辞典 第4版
(かたく)〈意見・想定などが〉間違った, 誤った情報に基づく, 不正確な(incorrect)
単純に間違いという意味以外でよく出てくるのが、誤りに基づく(based on ...)という意味です。 そして、提案文書の erroneous behavior に込められた意味が、
- コード上の誤りに起因して起きる、処理系が定義する動作
ということであれば、まさにそのまま
- 誤り起因(erroneous)動作(behavior)
と訳せる気がしてきました。表現的にも意味的にも対応が取れそうです。 この意味を表せる日本語の単語はちょっと思いつかないので、複数の語の組み合わせで表現するのも妥当に思えます。
例文:
int a;
int b = a; // "誤り起因動作"
unsigned char c;
unsigned char d = c; // d は "誤り起因値" を持つ
他の言い換えも考えましたが、その中で一番しっくりくるのが「誤り起因動作」でした。
誤りに基づく動作
誤りに起因する動作
誤りに立脚する動作
誤りに依拠する動作
誤りから来る動作
誤りによる動作
誤り起因動作
一旦、追加の案をだしきってから、収束させる議論に移りましょうか。 いま出ている以外の案がある方は、可能なら理由とセットで一週間以内ほどで提案してもらい、そのあと出ている案のなかから選びましょう。
8/25(日) くらいまでに追加の案をだしていただけると助かりますー
「不正時動作」「不正時の値」で決まるかなーと見ていたところ、これだと規格文面にある "the behavior is erroneous" や、そのほかの "... is (not) erroneous" などを自然に訳すことが できなさそうに気付いて、・・・とはいえ良い別案も無く困ったな、となってしまったので とりあえずお知らせしておきます。
文脈に合わせて「~の動作は不正時動作となる」「~は不正時の~となる」などのように補う形で 済むかもしれませんが。
新しい案として erroneous の訳語を「悪性」とするのがいいかも、と思ったので挙げておきます。 「悪性動作」「悪性の値」「~の動作は悪性となる」「~の値が悪性である場合~」などと当てはめてみて、 アリかなという感じで。
erroneous の意味を表す訳としては「誤りを含む」が一番近いように思うんですが、そのままだと 用語として認識されない可能性が高いし長ったらしいのもマズそうで、何か5音以内ぐらいの そういう意味の用語は無いかなと探して思いついたものです。 専門用語として認識される可能性が高そうな点や C++ の文脈でこれまで使われてなさそうなのも 適しているかなと。(たとえば「不正」「不正時」などを採用した場合は既存記事の「不正」を どうにかしたくなりそうだけど、「悪性」ならそういうことも無い。)
eligibleを「資格のある」と訳した前例もあるので(#768)「誤りを含む」でもそんなに自分は違和感ないですね・・・。
改めて他業種ではどうしているのだろうと適当にググっていたんですが圧倒的に「誤った」とか「誤xxx」と訳してるんですね・・・。あまり参考にならなかった・・・。
- PIC/S GMPガイドライン アネックス2
- URL: https://www.pref.fukuoka.lg.jp/uploaded/attachment/162534.pdf
- 原文: Alternative approaches/measures are permitted as long as the risk of erroneous administration of the product is adequately mitigated .
- 和訳: 製品の誤投与のリスクが十分に軽減されていれば、代替の方法/措置が認められる 。
- PIC/S GMP ガイドライン パート 1
- URL: https://www.pref.kagawa.lg.jp/documents/7476/340_250328.pdf
- 原文: The criticality and the potential consequences of erroneous or incorrectly entered data to a system should be covered by risk management.
- 和訳: システムに誤って或いは不正確に入力されたデータの重篤度と起こりうる結果は、リスクマネジメントで防ぐこと。
ふと思ったのですが実は単に「エラー動作」「エラー値」とするのが綺麗なのでは… (訳なので無意識にカタカナ語を避けていましたが)。
- 先ず英語の対応はほぼそのまま (英語は名詞を修飾するために形容詞ですが、日本語に訳す時に品詞を変えて単純化している例はよくある気がします)。
- また "エラー動作"・"エラー値" と言えば、(処理系が壊れたとかではなく) ユーザーの使い方が間違っていることによって起こる動作・値をちゃんと意味している。
- 用語としての長さも短いし、(間違った動作・誤った動作などと比べたら) ちゃんと用語っぽい。
- "... causes erroneous behavior" → "はエラー動作になる", "the behavior is erroneous" → "この時の動作はエラーである", etc. など違和感ない。(追記: 単に「~はエラーである」を許容すると、非用語として使っている"エラー"と区別できなくなるので避けるべきかも)
訳なのにカタカナを使うのはどうかという意見もあるかもですが、他にぴったりのものがない気がするし、"エラー" は日本語に浸透した単語 (追記: というか本来 error は単に広く "誤り" という意味なのに、日本語のエラーは "機械が誤りを検出したことによって発生する状態" みたいに変質していて、今回非常に都合が良い気がする) なのでこれでいいのではないかと思っています。
追記2: 「エラー値」は error code, error number の訳として既に使われていますね… → Code search results。もしこの方向で行くなら既存のエラー値はエラー番号だとかエラーコードに書き換える必要がありますね。
「不正時動作」に +1 です。「誤りを含む動作」や「誤り起因動作」も意味としては適切そうで、「悪性動作」も一案だとは思います。
まず、最初に私が挙げたうち「誤動作」は完全に誤訳でした。他の方が指摘されている通り、動作自体が誤っているのではなく、誤ったプログラムに対応する動作という意味合いであることを捉えられていませんでした。
「エラー値」はエラー番号やエラーコードの意味合い、すなわち誤った値ではなく、何らかのエラーが生じたことを表す値として解釈するのが定着してそうですね……。
「エラー値」はエラー番号やエラーコードの意味合い、すなわち誤った値ではなく、何らかのエラーが生じたことを表す値として解釈するのが定着してそうですね……。
私もこちらは同じ意見です。
私としては、「不正時動作」「不正時の値」に一票です。 「時」が入るだけでだいぶ印象が変わり、受け入れやすいです。 文中の使い方としては、なるべくこれらの用語が含まれるようにして、GLOBAL_DEFINED_WORDS.jsonの注釈が使えるようにしたいところです。 逆にそれらの用語を使わない文脈での「不正」はerroneousを意味しないということでもいいのかなと。
「誤りを含む動作」「誤り起因動作」「悪性動作」も、私は受け入れられると思います。