JavaScript演算子「!」の条件式についての質問

このQ&Aのポイント
  • JavaScript演算子「!」の条件式の影響について質問があります。
  • if文の条件は、$DR[1] = $DR[2] = $DR[3] = false;のコードの影響を受けるのでしょうか。
  • 否定演算子「!」を使用してfalseをtrueに変換する場合、ドラムが止まっているという状態と矛盾するため、条件式は受けないと考えています。
回答を見る
  • ベストアンサー

javascript 演算子の「!」_2

以前 http://okwave.jp/qa/q8280538.html で同じ質問をして、一度は解決かと思ったのですが、考え直すとまた混乱してきたので、 もう一度質問させてください。 以前と同じく http://www.artemis.ac/contents/javascript/javascript10.htm のスロットに関してです。 STEP 2 画像をまわす > ◆SCRIPTタグ内 にある、 if(!$DR[1] && !$DR[2] && !$DR[3]){ についてです。 お聞きしたいのはこのif文の条件式についてです。 このif文はスロットを回したときに実行されるわけですが、 実行される前に $DR[1] = $DR[2] = $DR[3] = false; というコードが実行されています。 お聞きしたいのは、if文の条件はこのコードの影響を受けるのかどうかです。 仮に受けるとした場合、falseを!で否定するので、結果trueとなり、 ドラムが止まっているときという状態と矛盾するので受けないとは思うのですが・・。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.10

> だからif文条件式の$DR[x]はtrueということですよね。 そんなことは一言も言っていません。 この式では、これを実行している時点での$DR[x]の値を使用します。 それがtrueなのかfalseなのかは不明です。 「 !$DR[1] && !$DR[2] && !$DR[3] 」という式自体には、$DR[x]がtrueかfalseかを決定する機構はありません。 独学ということなので、あまり初球の解説書には書いてないけど重要なことを。 if ( 条件 ) {then節} else {節} 「条件が成立したら then節、不成立ならelse節を実行する」等と習っていると思います。 これは正確ではなく if ( 条件式 ) {then節} else {節} 「条件式の値が『真』ならば then節、『偽』ならelse節を実行する」 というのがより正しい意味です。 条件式は、普通の式と同じで、演算子に従って値を計算したものです。 5+3 が 8 になる、とかというのと同じ扱いです。 $DR[1] = $DR[2] = $DR[3] = false; の状態だったとします。 このときの式 !$DR[1] && !$DR[2] && !$DR[3] の値を「計算」します $DR[1]=falseなので、これを式に代入します ( ! false ) && !$DR[2] && !$DR[3] !falseを計算します true && !$DR[2] && !$DR[3] 論理積の計算では、 true && A = A です。これを使って !$DR[2] && !$DR[3] 同様に計算します (! false) && !$DR[3] true && !$DR[3] !$DR[3] ! false true ∴ 「$DR[1] = $DR[2] = $DR[3] = false;」⇒「!$DR[1] && !$DR[2] && !$DR[3] の値は true 」 $DR[x]は値を参照しただけで、変化しません。$DR[x]=trueでもありません。 ですが、式全体としては true になっています。 $DR[1] = true ならどうなるかは、御自身で計算してみてください

komado45oji4768
質問者

お礼

皆さんお返事ありがとうございました。 分かった気がします。 回答No10 kmee 様より >「条件が成立したら then節、不成立ならelse節を実行する」等と習っていると思います。~ >というのがより正しい意味です。 どうも私はif文の条件式の結果のtrueを「ドラムが回ったとき」と解釈していたからいけなかったようです。 「ドラムが回っている(true)ならスタートを押したときにthen節にいかない。ここの条件式でthen節にいくのは、ドラムが止まっているとき、つまりfalseのはず」と思い込んでいました。 恐らく皆さんは条件式trueなんだからthen節にいくのは当たり前だと考えられていたのだと思います。ですが、私はtrueなんだからドラムが回っている。だからthen節にいくのはおかしいと考えてしまっていました。ここでほしいのはtrueという値であって、ドラムが回っているかどうかという話ではない、ということですね。そもそもtrueとfalseのドラムの関係も独自に作者の方が定めたものでした。 なんだか言われれば当たり前のことをここまで悩んだのは恥ずかしい限りです。 たぶんこういうことですよね。 何度もお答えいただき、ありがとうございました。 かなり初歩的な話ですが、すっきりしました。 まだ何か的外れなことを言っていたら助言いただけるとうれしいです。

その他の回答 (9)

回答No.9

こんばんは。 if 文の評価値を言葉に表してみたらわかりやすくなりませんか? もしくは、さらに混乱させてしまうか? 変数 DR[n] が true ならば、ドラムが回っているときですよね。 ドラムのどれかを停止したら、それは false になりますよね。 function StopRoll( _n ){   $DR[_n] = false;// ←これで停止   if(!$DR[1] && !$DR[2] && !$DR[3]){     ResultCheck();   } } !は、反対の意味を表すのだから、 if(!$DR[1] && !$DR[2] && !$DR[3]){  /*全てのドラムを回す*/; } 上は、ドラム1が回ってなくて、そしてドラム2も回ってなくて、 そしてドラム3も回っていないときなら・・・という意味で 逆な言い方をすれば、どれか一つでも回っていたなら?と考えれば if (DR[1] || DR[2] || DR[3]) {  /*何もせず*/; } else {  /*全てのドラムを回す*/; } どれか一つでも回っていなかったら? if (! (DR[1] || DR[2] || DR[3])) {  /*全てのドラムを回す*/; } $DR[1] = $DR[2] = $DR[3] = false; は、初期化の時点で実行されるだけ。 ちなみに、 if(!$DR[1] && !$DR[2] && !$DR[3]){ は、「全てが回っていない」を確認するために3回チェックしています if (! (DR[1] || DR[2] || DR[3])) { は、仮にDR[1]が true なら後の2つは評価せず反転して実行するので、上のものよりも 早いときがあるよ。

komado45oji4768
質問者

お礼

お答えいただきありがとうございました。 無事解決できたかと思います。 また疑問ができたらこちらでお聞きすると思うので、 そのときは、もしきが向いたらよろしくお願いします。

回答No.8

なんだろう?何が疑問かわからない・・・ !trueはfalse、!falseはtrueに同義というだけで !trueがfalse、!falseがtrueになるわけでなし、 true代入文、onclick文で呼んでない? if then文、trueだったら何かしない?

komado45oji4768
質問者

お礼

お答えいただきありがとうございました。 無事解決できたかと思います。 また疑問ができたらこちらでお聞きすると思うので、 そのときは、もしきが向いたらよろしくお願いします。

komado45oji4768
質問者

補足

お返事ありがとうございます。 >true代入文、onclick文で呼んでない? >if then文、trueだったら何かしない? 私はHPを参考にコードを作っているわけではなく、HPのコードをなぞって書いていて、ちゃんと動作もします。ですが、そのコードが正しいのはわかるのですが、どうしてそうなるのか、という疑問があります。なので、他の書き方はわかりません。 >!trueはfalse、!falseはtrueに同義というだけで >!trueがfalse、!falseがtrueになるわけでなし、 恐らくこの辺りが私もわかっていないのだろうな、とは思うのです。ですが、それを説明しているつもりでもあります。要は、 $DR[1] = $DR[2] = $DR[3] = false; と if(!$DR[1] && !$DR[2] && !$DR[3]){ の、$DR[1]の真偽値がプログラムを動かしたときに今どうなっているのか、を知りたいのです。 皆さん、何度もお答えいただいてすいません。 私は独学でプログラムをしているので、出来るだけこちらで解決させていただきたいです。 今一度、ど素人の私にも伝わるよう、噛み砕いて教えていただけないでしょうか。 よろしくおねがいします。

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.7

> !$DR[1]と($DR[1] == false) > !$DR[2]と($DR[2] == false) > !$DR[3]と($DR[3] == false) > が同じ。 > だからif文条件式の$DR[x]はtrueということですよね。 「だから」の前後が全く繋がっていません。 なぜ$DR[x]はtrueということになってしまうのですか? $DR[1]がtrueの時には !$DR[1] という式は false と評価され、 $DR[1]がfalseの時には !$DR[1] という式は true と評価される、 というだけです。 逆に、 !$DR[1] という式が true と評価されたとき、$DR[1]は false なのに、あなたはなぜかtrueだと言い張っているように見えます。

komado45oji4768
質問者

お礼

お答えいただきありがとうございました。 無事解決できたかと思います。 また疑問ができたらこちらでお聞きすると思うので、 そのときは、もしきが向いたらよろしくお願いします。

komado45oji4768
質問者

補足

お返事ありがとうございます。 >「だから」の前後が全く繋がっていません。 >なぜ$DR[x]はtrueということになってしまうのですか? !$DR[x]がfalseだからです。 ならば$DR[x]はtrueではないですか? $DR[x]がtrueだから、!$DR[x]がfalseになるのではないのですか? >$DR[1]がtrueの時には !$DR[1] という式は false と評価され、 >$DR[1]がfalseの時には !$DR[1] という式は true と評価される こういうことを私も言っているつもりなのですが、どこかおかしいでしょうか。!$DR[x]がfalseなら$DR[x]はtrueというのはなりたたないのでしょうか。 >逆に、 !$DR[1] という式が true と評価されたとき、$DR[1]は false なのに、あなたはなぜかtrueだと言い張っているように見えます。 これは私もfalseだと思いますよ。trueだというつもりはないです。 よろしくおねがいします。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.6

そのコードは次のようになっています var $DR = new Array(); $DR[1] = $DR[2] = $DR[3] = false; // これと ☆ゲーム開始関数を作ります ... function GetStart(){ if(!$DR[1] && !$DR[2] && !$DR[3]){ // これ 記述してある箇所は近くても、実際に実行されるのは一緒ではありません。 $DR[1] = $DR[2] = $DR[3] = false; は、グローバル変数なので、スクリプトが最初に実行されたとき(≒ブラウザが読み込んだとき)に1回だけ実行されます。 if(!$DR[1] && !$DR[2] && !$DR[3]){ は、関数GetStartが呼び出されたときに実行されます。GetStartは何度も呼び出されるので、その度に実行されます。 最初の実行時は、$DR[x]は変化していないはずなので、 $DR[1] = $DR[2] = $DR[3] = false; が影響しますが、2回目以降は関係ありません。 > 仮に受けるとした場合、falseを!で否定するので、結果trueとなり、 > ドラムが止まっているときという状態と矛盾するので受けないとは思うのですが・・。 影響を受けるかどうかと、「falseを!で否定するので~」とは、まったく別の問題です。 このif文で判定するのは、これが実行された時点での$DR[x]の内容です。 !は真偽を否定(=真偽を反転)するだけです。 if ( $A ) とあったら、これは、 if ( $A == true ) であり if( $A != false ) です。 if (! $A ) とあったら、これは、 if ( $A != true ) であり if( $A == false ) です。 !$A としたからと言って、 $A 自体が変化するわけではありません。 f(!$DR[1] && !$DR[2] && !$DR[3]){ は if(($DR[1] == false) && ($DR[2] == false) && ($DR[3] == false)){ と等価です。 $DR[x]がfalseからtrueに変わるわけではありません

komado45oji4768
質問者

お礼

お答えいただきありがとうございました。 無事解決できたかと思います。 また疑問ができたらこちらでお聞きすると思うので、 そのときは、もしきが向いたらよろしくお願いします。

komado45oji4768
質問者

補足

お返事ありがとうございます。 >f(!$DR[1] && !$DR[2] && !$DR[3]){ >は >if(($DR[1] == false) && ($DR[2] == false) && ($DR[3] == false)){ >と等価です。 ということは !$DR[1]と($DR[1] == false) !$DR[2]と($DR[2] == false) !$DR[3]と($DR[3] == false) が同じ。 だからif文条件式の$DR[x]はtrueということですよね。 この時点で$DR[x]がtrueということは 最初に実行された $DR[1] = $DR[2] = $DR[3] = false; と値が違います。 $DR[1] = $DR[2] = $DR[3] = false; は最初にスロットのドラムを止める意味を持っていますが、つまり、ドラムを止めた時点でfalseの値は実行された(消化された?)。だからif文で実行するときには$DR[x]の値はtrue(なぜそうなるのか分からないので教えていただけるとうれしいです)になる。ということでしょうか。 よろしくお願いします。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

一応ねんのため: $DR[1] = $DR[2] = $DR[3] = false; を実行したあとであっても, if 文の前に $DR[1] などを変更していたらそれはまた別の話. 常に「最後に代入した値」を持っているわけだし.

komado45oji4768
質問者

お礼

お答えいただきありがとうございました。 無事解決できたかと思います。 また疑問ができたらこちらでお聞きすると思うので、 そのときは、もしきが向いたらよろしくお願いします。

komado45oji4768
質問者

補足

お返事ありがとうございます。 それならば、 $DR[1] = $DR[2] = $DR[3] = false; で$DR[1]、$DR[2]、$DR[3] の真偽値はfalse。 $DR[1]、$DR[2]、$DR[3]はfalseだから、次に実行されるスロットを回す関数の if(!$DR[1] && !$DR[2] && !$DR[3]){ の条件式の$DR[1]、$DR[2]、$DR[3]の真偽値もfalse。 なので!$DR[1] && !$DR[2] && !$DR[3]は、全てtrue。 ではないでしょうか。 実際はfalseでとまっている状態のとき、という条件だそうですが。 よろしくおねがいします。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

$DR[1] = $DR[2] = $DR[3] = false; を実行したあとであれば ($DR[1] などの値が変わり, その値が条件で使われるという意味で) 影響を受ける. 当然.

komado45oji4768
質問者

お礼

お答えいただきありがとうございました。 無事解決できたかと思います。 また疑問ができたらこちらでお聞きすると思うので、 そのときは、もしきが向いたらよろしくお願いします。

回答No.3

疑問なら、alert(x)で結果、出せばいい。 当方は、誤解しそうなコード、書かないが…

komado45oji4768
質問者

お礼

お答えいただきありがとうございました。 無事解決できたかと思います。 また疑問ができたらこちらでお聞きすると思うので、 そのときは、もしきが向いたらよろしくお願いします。

komado45oji4768
質問者

補足

お返事ありがとうございます。 すいません、結果はHPのほうでだされていて、それが正しいことはわかっています。 私が疑問に思っているのは過程なので、alertで出しても解決にはなりません。 よろしくお願いします。

回答No.2

そもそも、 >if文の条件はこのコードの影響を受け この「影響を受け」の表現がわからない。何のことをさし示しているのだろうか。 a=b=c=1; は、JavaScript だと、a b c に1を代入したことになる。それを「影響」?。まず、プログラミングの共通用語を学ぼう。 次に、 >falseを!で否定するので、結果trueとなり ”falseを ! で否定する” ????? 違う。共通用語、言語を正しく理解していないために起こる誤解だ。 これは、”変数 a が true でない時” と読むの共通用語だ。その逆も真なりで、”変数 a が false の時”と読む。 変数 $DR[1 は false が代入されたから、" ! $DR[1] " を評価(計算)すると、true の結果を返す。 中学時教えられた代数計算を思いうかべてみよう。 ---問題1---- F(x) = 2x + y と言う関数があります。X=2 Y=1の時、F(x)はいくつになりますか? ---------- 当然  5 となる。ここでの「F(x) = 2x + y」は単なる計算式だ。これをプログラミングすると var x=2, y=1 z = 2x + y となる。あなたの理論で行くと、”falseを ! で否定する” => ”2を 2 でかける”から 結果 4X2 = 6 となり・・・・ となる。 計算式(代数)に、数字を代入し計算するのが代数計算とよばれるゆえんなのだよ。

komado45oji4768
質問者

お礼

お答えいただきありがとうございました。 無事解決できたかと思います。 また疑問ができたらこちらでお聞きすると思うので、 そのときは、もしきが向いたらよろしくお願いします。

komado45oji4768
質問者

補足

お返事ありがとうございます。 すいません、もっと具体的に書きます。 $DR[1] = $DR[2] = $DR[3] = false; で$DR[1]、$DR[2]、$DR[3] の真偽値はfalseです。 $DR[1]、$DR[2]、$DR[3]はfalseだから、次に実行される if(!$DR[1] && !$DR[2] && !$DR[3]){ の条件式の$DR[1]、$DR[2]、$DR[3]の真偽値もfalseではないかということです。 よろしくお願いします。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「falseを!で否定するので、結果trueとなり、ドラムが止まっているときという状態と矛盾する」と思った理由は?

komado45oji4768
質問者

お礼

お答えいただきありがとうございました。 無事解決できたかと思います。 また疑問ができたらこちらでお聞きすると思うので、 そのときは、もしきが向いたらよろしくお願いします。

komado45oji4768
質問者

補足

お返事ありがとうございます。 すいませんが、その前にお聞きしたいです。 質問で書いたように if文の条件式は $DR[1] = $DR[2] = $DR[3] = false; の影響を受けるのでしょうか。

関連するQ&A

  • javascript 演算子の「!」

    javascriptを勉強中なのですが、分からないところがあるので、 質問させていただきます。 http://www.artemis.ac/contents/javascript/javascript10.htm こちらのサイトのスロットを作るコードに関してです。 STEP 2 画像をまわす > ◆SCRIPTタグ内 にある、 if(!$DR[1] && !$DR[2] && !$DR[3]){ についてです。 これはスロットが停止しているなら、という意味の引数です。 ですが、少し前の行に $DR[1] = $DR[2] = $DR[3] = false; とあります。 !を使って意味を否定しているので、 「DR[1]かつDR[2]かつDR[3]が動作中なら」という意味だと思うのですが、 違うのでしょうか。 よろしくお願いします。

  • JavaScriptが使えるかどうか判断する?

    こんばんは,よろしくお願いします。 よく,JavaScriptの解説書などに,「avaScriptが使えるかどうか判断する方法」などと書いてあって,次のようなコードが載っていますよね。 if(navigator.javaEnabled() == false){ alert("JavaScriptを有効にしてください。"); history.back(); } でも,ここで疑問です。そもそも,JavaScriptが使えないのならば, このif文そのものが走らないのではないでしょうか? このコードは,どこにどのように記述すれば有効になるものなのでしょうか? よろしくおねがいします。

  • javascriptのif文の書き方で。これは参考書の間違い?

    javascriptのif文の書き方で。これは参考書の間違い? 画像におけるif文は、下記のように、 中カッコを使って、 書かれるべきなのではないでしょうか? if(条件式){ //実行するコード }

  • JavaScriptからPHP実行

    PHPのIf文の結果によってJavaScriptからA.phpか、B.phpファイルを実行したいのですがJavaScriptからphpファイルを実行するのはどういったコードで可能でしょうか?

    • ベストアンサー
    • PHP
  • javascriptに関しまして

    javascriptに関しまして if文の処理に関してお聞きしたいことがあります。 <script language="JavaScript"> <!-- myFlg = 0; function myFunc(){ if(myFlg == 0){ document.myFormMeS.value = "こんにちは"; } myflg = 1; else{ document.myFormMeS.value = ""; myFlg == 0; } } //--> </script> <form name="myform"> <input type="text" size="20" name="myFormMeS"> <script language="JavaScript"> <!-- setInterval("myFunc()",500); // --> </script> </form> というサンプルコードの中で、フラグの管理をする際に 初期値として、myFlg = 0をセットしているのでこんにちはと 表示してからmyFlg に1を代入していますが、その後一度if文を抜けて、 もう一度if(myFlg == 0)の判定を行っているのでしょうか? それとも、そのままelse処理に進むのでしょうか・・・? if文を抜けた後にどこの判定に進むのかいまいちよく分かりません。 初歩的な質問になりますが、宜しくお願い致します。

  • javascript return について

    javascript return の使い方について こんにちは。 javascriptでhtmlとjavascriptを分けて書く方法を勉強中です。 ○html文 <a href="" name ="linkMaxcd" id ="linkMaxcd">最大値</a> ○javascript文 1)document.getElementById("linkMaxcd").onclick=function(){return maxcd();} 2)function maxcd(){    省略   return false;   } この構文の流れは、 (1)htmlの最大値というテキストリンクをクリックする (2)javascript 1)のonclickしたら、maxcdのfunctionを実行する (3)javascript 2)の省略を行い、return false;でfalseを返す ということだと思います。 javascript 2)のreturn false; のfalseは、何処に戻るのですか? ○javascript参考 1')document.getElementById("linkMaxcd").onclick=function(){maxcd();} 2')function maxcd(){    省略   } もともと上記のjavascript参考にreturnを付け加えたところで、理解できなくなりました。 returnの付け方は、javascript参考サイトの手順に書いてありました。 よろしくお願いします。 以上

  • if文の中で否定演算子を使うことについて

    PHPの勉強をしています。 今、基礎的な内容の本とより実践的な内容の本、コードサンプルが満載の本の 計3冊で勉強しておるのですが、 たまたまなのかわかりませんが、この三冊の中ででてくるコードを見てみると、 if文の中に否定演算子、例えば IF(!A || !B) {   A、もしくはBがfalse だったのが反転してTrueになった場合の処理 }else {   A、Bどちらともtrueだったのが反転してfalseになった場合の処理 } といった条件文に否定演算子を含めたコードサンプルがほとんどです。 。。。。三冊ともこの調子なので もしかしてPHPのコーティング作法なのかな?と思いましたが ネットで検索してもそれらしい情報は見当たらず...... 自分が何がわからないのか それ自体よくわかってないのかもしれませんが IF文を使う際、条件に否定演算子を使うべきときってのがあるんだと思います。 となると、その時を判断する基準などがあるのでしょうか? 初心者なのでなにか重大な思い違いをしてるのではないかと思ってます。 なにか気づくことがあれば教えてください。

    • ベストアンサー
    • PHP
  • javascriptのconfirmについて

    javascriptのconfirmが実行されると確認ダイアログボックスが表示されるはずですが、 何故か何も表示されず、必ずfalseを通ります。 かなり初心者的ミスを侵している気がしますが、調べても分からなかったので、 どなたかご教授頂ければ幸いです。記述したソースは以下になります。 headタグ内 <script type="text/javascript"> <!-- function confirm(s){ if(window.confirm('実行します')){ location.href = "/?flg="+s; } return false; } // --> </script> ■bodyタグ内 <a href="javascript:confirm('1');return false;">テスト</a>

  • IE6 + javascript

    すみません、先ほども質問したのですが、締め切ってしまったのでもう一度質問させてください。 下記コードが、Firefoxでは動作するのですが、IEではjavasciptの部分が動作していません。 もちろん、javascriptの設定は有効にしてあります。 var browser = navigator.appName; if(browser.charAt(0) == "N") { window.addEventListener("load",change_page(page_id),false); } else if (browser.charAt(0) == "M") { window.attachEvent("onLoad",change_page(page_id)); } .... function httpRequest() { if (window.ActiveXObject) { try { httpObj = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { try { httpObj = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { httpObj = false; } } } else if (window.XMLHttpRequest){ try{ httpObj = new XMLHttpRequest(); } catch(e) { httpObj = false; } } return httpObj; } change_page()はfunctionです。 なぜIE6ではjavascriptが動かないのでしょう? ソースのどこが悪いのかわからず、どなたかアドバイスあればお願いします!

  • javascript関数の戻り値でphpの条件分岐

    こんばんは。 またまたプログラミングで詰まってしまいました・・・。 <?php    echo "<script> funcJS(); </script>"; //javascriptの関数。戻り値true/false    if(funcJS()の戻り値がtrueかどうか){       <~phpの処理~>     } ?> のようなプログラムがあったとして、funcJS()の戻り値の値によって、『phpの処理』を行うかどうかを決定したいのですがそのアルゴリズムが思いつきません。 色々と試行錯誤はやってみて、 (1)phpの変数にfuncJS()の戻り値を格納して、if文で条件分岐  $value = "<script> funcJS(); </script>";   しかし、これは$valueに戻り値を入れることができませんでした。 (2)javascript変数に戻り値を格納して、javascript内のif文で条件分岐 <?php    echo "<script> var value=funcJS(); </script>"; //javascriptの関数。戻り値true/false    echo "<script> if(value == 'true'){ </script>";       <~phpの処理~>    echo "<script> } </script>"; ?>  これも"}"がないと怒られてしまいました。 自分で思いつく限りは試してみたのですが、他に方法が思い浮かばず頭を抱えている状態です。 何か良い方法を知っている方、思いついた方、よろしくお願いします。

専門家に質問してみよう