質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

Q&A

解決済

7回答

903閲覧

「完ぺきではない回答」はしてはいけないのか?

KojiDoi

総合スコア13669

teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

2グッド

3クリップ

投稿2019/03/03 07:13

編集2019/03/04 18:15

先日、2つのデータ(csvファイル)を比較し差異がある行のみを確認するにはという質問に回答をつけたのですが、経緯を踏まえ、皆さんに以下の点について意見をいただければと思います。
0. 条件によっては別の問題が発生するかもしれない解決策は(たとえその可能性を示唆したうえでとしても)NGなのか。
0. かりにその「別の問題」を見逃したうえで回答していたとしても、回答者は無責任として非難されなければならないのか。

#背景

ざっくり言うと、
0. 質問者はVBAで複雑なコードを書き、意図通りに動かないと悩んでいた。
0. 当該案件は「行ごとに完結する処理」であり、その行がかなり大量にあるという問題。私の眼には、VBAよりもはるかにAWKに向いている問題に見えた。
0. VBAをいじれる人なら学習も難しくはあるまい。python, perlなどの選択肢もあるが、シンプルで初学者にも敷居が低かろうという点でawkに軍配が上がると考えた。
0. windowsではawkは標準では使えないが、簡単にインストールする手段はある。この点も大きな問題にはならないだろうと考えた。
0. ただしデータの条件によってはawkでは面倒なことになる可能性はある。現実問題としてはcsvよりはtsvの方が安全のはずで、その旨追記しておいた。

さて、これが当初の回答だったのですが、ご覧の通り、なんだかとても怒り狂った人が現れてマイナス評価をつけていきました。なんだか案件と関係のなさそうなことを色々言っていますが、核心かも知れない点としては、
0. awkは低レベル非力なスクリプト言語なので人に勧めるべきではない。
0. ロケール設定によっては問題が生じる危険性があるのに人に勧めるべきではない。

ということらしいです。

さて、awkでコンマ区切りのデータを扱おうとする場合、そしてデータそのものの中にコンマが含まれている可能性がある場合、「普通の方法」では問題が出てくる可能性は確かにあります。

しかし、データがたとえば商品IDであることが分かっているとかであれば、実用上は問題は出ません。また、コンマ区切りデータ問題を回避する手段もあります。つまり、条件が合えば、世界のどこかに存在するかもしれない問題点はとりあえず置いておいて、てばやく目の前の問題を片づけられる可能性はある。その辺は質問者自身に判断してもらえばいい。こうしたことを追記したわけですが、件の批判者はとにかく聞く耳を持たない感じです。

私の考え

もちろん問題の指摘は構わないのです。特に質問者がうのみにして回答の通りにすれば深刻な結果を招きかねたい場合は、ある程度強い言葉を投げることもやむを得ないかもしれない。

しかし、私としては、不完全な回答であっても、あるいは結論が間違っていたとしても、そこに何らかのヒントが含まれるなら回答としては成立しうると考えていました。この考えはおかしいでしょうか。私の回答は批判者が言うようにサギ同然で、投稿すべきではなかったのでしょうか? 内容への批判はともかく(当該案件においては、私としてはその点でも全く納得できませんが)、投稿行為自体を非難されていることには全く納得がいかないでいます。もしこの考えが間違っていたとしたら、私としてはteratailとの付き合い方を大幅に見直さねばなりません。

クローズ(2019-03-05)

皆様、様々なご意見・叱咤激励をありがとうございました。
自分の認識を再確認できたところ、思いもよらぬ角度からの考察に驚いたところ、いろいろあり、いずれにせよ糧とさせていただきます。問題点をもっとも具体的かつ理路整然とした形で解説していただいたのでraccyさんの回答をベストアンサーとし、ひとまず閉じさせていただきます。

bochan2, ai_2013_dev👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/03/03 07:21

「低レベル」「サギ同然」は当該回答へのコメントに見つかりませんでした。意訳するにしても当該ユーザーの言葉以外で組み立てないほうが「言った/言わない」にならないので修正されてはいかがでしょう。
KojiDoi

2019/03/03 08:00

wwbQzhMkhhgEmhU 2019/03/01 15:15 > 自分がどの程度使えるのか全く把握できてないものを、他人に勧めるなんて、無責任にも程がある、ただの詐欺だと言っているのです。
KojiDoi

2019/03/03 08:11

「低レベル」は確かに私の中で単語がすり替わっていましたので修正しておきました。
退会済みユーザー

退会済みユーザー

2019/03/03 14:03 編集

「完ぺき」や「NG」といった語句は曖昧すぎるんじゃないかとおもう。 何が「完ぺき」で何が「NG」なのかハッキリさせないと「完ぺきな回答」はこないんじゃないでしょうか。 皆が皆teratailにおいて「ぼくのかんがえたさいきょうのルール」を持ってるわけじゃあないですし。
guest

回答7

0

ベストアンサー

質問文で明言されていない条件を追加で満たす場合のみに解決できる方法は回答として「あり」だと思います。私自身そういう回答をした事がありますし、他にもそのような良い回答を見たことがあります。本来は、そのような条件を満たすのかを「質問への追記・修正依頼」で聞いて、質問者の返答を待ってからの方が良いのかも知れません。しかし、質問者からの返答がなかなか来ない場合や、十中八九そうだろうと推測できる場合も多々ありますので、必ずしも「質問への追記・修正依頼」で片付けていないと駄目だと言う物でも無いと思います。

そのような回答をするとき、ひとつ注意すべきは、その条件を暗黙の条件として扱っていないかと言うことです。質問者を含めて、その回答を見る人は、質問と回答の内容以外は見えません。もし、そこに回答者が書いていない暗黙の条件がある場合、その条件は回答者以外には誰にもわからないという事です。そのため、他の人は「そういった条件は無くても成立する」という前提で回答を読むことになり、その内容を判断せざるを得ないことになります。

ということで、私が言いたいのは「回答で質問に書いていないことを前提条件にすること」自体は問題ではありませんが、「解決が成り立つ前提条件が質問にも回答にも書いていないこと」自体は問題であるということです。きちんと「○○という前提であればこれで解決できます」という風に書いてあれば、いいと思います。ただ、人は時に自分の環境を暗黙の条件としてしまうことが多々ありますので、そういったことの明言をし忘れることは、人としては仕方がない面もあります。その時はその時で、回答に前提条件を足す形で修正すれば十分と思います。


さて、元々の回答で何が問題だったのかというと、初期の回答ではCSVファイルがどのようなフォーマットであるのかと言うことに暗黙の条件を付けてしまったことです。質問ではただCSVファイルと書いており、その内容にも「任意の文字列」が含まれることから、カンマや改行がその任意の文字列のフィールドに含まれる可能性があります。また、他のフィールドもダブルクォートで囲まれているかどうかは質問からわかりません。ただわかるのはCSVファイルと言うことだけです。ましてや、CSVファイルと言っても実はいろいろな実装があり、RFC4180に従っていない可能性もあります。ただ、質問ではExcelで読み込んで処理していることから、少なくともExcelで読み込める形式であるということだけはうかがえます。

結局、最初の回答は、任意の文字列にカンマや改行が含まれない、レコードやフィールドによってダブルクォートに囲まれていたりしなかったりと言うことがない、本当に素直なただカンマ区切りしているだけ、という前提を暗黙の条件にしてしまっていたのだと思います。しかし、この前提条件は回答者以外はわかりません。なぜなら、回答にそのようなことが書いていなかったからです。そのため、本当に何も知らない人は「どんなCSVファイルでもawkを使ってこのように処理できる」と思ってしまいます。そのような勘違いを起こさせる可能性がある限り、少なくとも良い回答は言えなかったと思います。


質問であれ、回答であれ、書いた本人以外は書いてある内容しかわかりません。あらゆる前提条件を捨てた状態で、自分の書いたことを読み直してみて、なにか勘違いさせたり、誤解を招くことが無いかを見てみることは大事なことだと思います。しかし、それでも人は見逃しをしてしまうのがサガなので、指摘された部分は素直に認めて、修正すべきかと思います。

なお、見当違いの指摘は無視してもいいと思いますよ。Windowsでawk使うのにWSL必須とか、爆笑してしまいましたしw 私だったら、MSYS2やWSL等が入っていないWindowsにはChocolatyでGNU awkを入れるかな、PATHも自動で設定くれますからね。

投稿2019/03/03 10:38

raccy

総合スコア21733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

**「回答に対する責任感の差」**では?

「こういう方法もあるで、もしかしたら上手くいくかもしれないからちゃんと調べて試したらいいんとちゃう?知らんけど」という人と
「回答したからには質問が万事解決されなければならぬ。問題の起こり得る回答など許されぬ」って人が
ぶつかり合えば確かに喧嘩になるかもしれないなと思いますが、別に前者が回答を付けてもいいと思います。

で、両者が分かり合うのは困難だと思うので、噛み付かれたら自分のスタンスを貫くなり歩み寄ってみるなり、その場の気分で対応を変えればいいと思います。
この辺で割と勝ち負け論に持っていこうとする人がいますが別にそんなことは無く、「ここから先は(私には知り得ない条件が諸々あるだろうから)自分の眼で確かめてくれ!」でいいのでは。
今回の質問者には合わなくても、同じような問題を抱えた誰かの解決にはなるかもしれないのですから。

そもそも「ネットで質問」という形式である以上、完璧な回答などほぼ不可能だし、今ベストアンサーでも1年後にはそうでないかもしれない。とはいえもちろん間違った回答はすべきではない。

なので結論としては
「目指すべきは"完璧"ではなく"最善"」(回答者も質問者もどっちもね)
「ネットの情報を使用する時は自己責任で」(teratailに限らずどんなサイトでも)
でいいのではないかと思います。

投稿2019/03/03 11:40

sakura_hana

総合スコア11425

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

うーん。
当該質問のやりとりは今初めて見ましたが、「気にするな」としか言えないかもしれません。

私にとっては知識も技術も持ち合わせてない内容も多いので整合性についてはわかりませんが、質問者の問題解決につながると思って回答されたのは間違いないようですし、そこも含めて「なぜそこまで絡んでくるんだろう」と思いながら対応されているようにも思いますし、私がKojiDoiさんの立場ならそう思ったと思います。

そういうときは条件反射で返すよりもそのユーザーがどういうタイプの人かというのを過去の活動を確認してみて、どう相手をするか考えても良いかもしれません。
私が同じようにコメントされたら「では正しい情報を回答におこされては?」とすすめると思います。
本当に正しく問題解決につながる内容ならコメントでレスバトルのようなものをしていては勿体ないですしね。
意地はるのもお互い実りがないでしょうし、質問者も戸惑うことでしょうし。

で、主題の「「完ぺきではない回答」はしてはいけないのか?」ですが、
「していい」と思います。
それが問題解決につながるのであれば。
ヒントだけの回答とか枠だけのコードとか、よくありますし、実際にそれが問題解決に繋がることもあります。

例え質問者に直接参考にされなくても、響かなくても、同じような問題を抱えた誰かが参考にしてくれるかもしれないので。

この回答も、もしかしたらKojiDoiさんには何の参考にはならないかもしれませんが、何かしら伝わればいいなと思って書いてます。

私が言うのもなんですが、わずかなノイズにあまり攻撃的になっても懐疑的になっても自分を含めた誰のためにもならないので、あまり気にしすぎても良くないと思いますよ。
サイトのルールを守った上で、自身のやり方で付き合っていけば良いと思います。

投稿2019/03/03 07:40

編集2019/03/03 09:00
m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そもそも論として、もし貴方が何かを調べようと事典を開いて、
どう見ても間違いだとわかる事柄が書いてあったらどう思いますか?

邪魔なノイズだと感じることでしょう。
なので、本質的には少なく正しい事がビシっと書いてある事が最善であると言えます。

teratailはこの辺はまぁまぁ良く出来ていて、
正しい事が書いてある回答が基本的に上に来るので問題視するほどではないとは思います。

不完全な回答であっても、あるいは結論が間違っていたとしても、そこに何らかのヒントが含まれるなら回答としては成立しうると考えていました。この考えはおかしいでしょうか。

私が回答する上で決めている事として、
質問に答えきれる程、自分の知識量が足りていない、それにより間違った結論を出しそうならば、
予めどこまでが自分で説明しきれる範囲なのか明示するべきだと考えています。

その上で「ここからは推測なので誤っているかもしれませんが…」等と区切るようにしています。
仕事の報告も同じですね。
事実と自分の考えは分けろって話になってきます。

その辺を上手く区切っている回答ならば、
私としては仮に誤っていても、あまり咎め過ぎないように注意します。
逆に自信満々に大嘘を言ってる時は、最悪カチンときてナイフで突き刺すようなコメントをするかもしれません。

発端になったawk回答の下り

この辺は思想の違いで色々ありますね。
確かにこの回答自体でマイナス食らうのは悲しすぎますね。
おっしゃるように、このケースでは非はないと思います。

因みに件のコメントつけた人は言動と独りよがりな考え、
人の話を聞かない性格で相当嫌われています。

変なのに絡まれて辛かったね…という気持ちしかありません。
あんまり引きづらないようにしてください。

しかし、その不安定なまま「回答が間違ってもいいじゃない」という趣旨のスレを建てるのは駄目です。
「回答者の為を思っての行為ならいくらでも誤ってて良い」みたいなミスリードを誘う事になるのであんまりよくありません。

投稿2019/03/03 07:51

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KojiDoi

2019/03/03 08:05

>「回答が間違ってもいいじゃない」という趣旨のスレを建てる そう解釈されたのなら不徳の致すところですが「間違っているところは間違っているとの指摘自体は存分に受け入れられる」という前提ですので誤解のないようにしていただければと思います。間違った「回答そのもの」が批判されるのはやむを得ないことです。もっとも、黒か白かそうはっきりは断定できないものがあるから難しいわけですが。
m.ts10806

2019/03/03 08:15

むしろ今回の件はあるユーザーのみからのクレームによるものですしそのユーザーはこの回答にもあるように「言動と独りよがりな考え、人の話を聞かない性格で相当嫌われてい る」人なので「肩ぶつかってもないのに絡まれた」感覚で良いかと思います。 それだけのために気に病むのは勿体ないですし、KojiDoiさんの人となりや他のユーザーから見たときの評価は変わらないと思いますよ。
miyabi-sun

2019/03/03 08:42 編集

タイトル欄見てください。 『「完ぺきではない回答」はしてはいけないのか?』 タイトルの文は主張や結論などの一番大事な部分です。 これが本文と不一致の文章も多くありますが、ミスリードを誘う危険な文章と叩かれる原因となります。 これを指しています。 次、これってAWKの回答の主張にダメ出しされてるわけですよね。 つまりAWK自体は負け認めて誤っていますって言っちゃってるんですよね? 別に誤っている訳じゃないので断固戦ってきてください、なんで負け犬のように逃げ帰ってスレまで建ててるんですか? KojiDoiさん程の方なら後で振り返ってみて、 この2つの視点で「冷静じゃなかった」と気付くと思いますよ。 まずは顔洗ってきて冷静になってください。
KojiDoi

2019/03/03 08:55 編集

> つまりAWK自体は負け認めて誤っていますって言っちゃってるんですよね? >別に誤っている訳じゃないので断固戦ってきてください、なんで負け犬のように逃げ帰ってスレまで建ててるんですか? すみませんがおっしゃってることが理解できません。つまりは途中で打ち切らずに徹頭徹尾あちらのスレでやりあうべきだったという意見でしょうか? 元の本題とは外れた、回答に関するメタな議論を新たに建てることは「逃げ帰った」ことになるのですか?
m.ts10806

2019/03/03 08:56

ここ大事ですよ↓ >KojiDoiさん程の方なら後で振り返ってみて、 この2つの視点で「冷静じゃなかった」と気付くと思いますよ。 まずは顔洗ってきて冷静になってください。
KojiDoi

2019/03/03 09:00

miyabi-sunさん、mts10806さん、 2日置いてなお釈然としないから質問してるんです。
m.ts10806

2019/03/03 09:06 編集

個人的な意見ですがあのユーザー打ち負かしても何の実りもないですよ。残るのは疲弊だけ。 高評価の方が多いことからも間違った方向性の回答ではないのは分かります。 気にしすぎてもKojiDoiさん自身に良くない。お気持ちは分からなくもないですが切り替えましょう。
miyabi-sun

2019/03/03 09:22

mtsさんが終始慰めモードに入っていたり、 他の回答者さんも同情的な回答から察せませんか? 無視するのが正解です。 相手に論理や理屈は通じません。 レスを重ねたり、別のスレを立ち上げた時点で相手の術中にハマっています。
m.ts10806

2019/03/03 09:27

対人スポーツ(サッカーとかバスケとかも含む)でラフプレイに腹を立てても自分のパフォーマンスが下がるだけですしね。
guest

0

完璧でない回答はしていいと思います。

でも本題はそれじゃありませんよね?
完璧ではない回答への評価が自分の意にそぐわなかった時、どう振舞えばいいかという質問でしょうか?

傲慢に完璧を目指してほしいと思います。

awk の欠点が指摘されたなら、それを克服して相手を黙らせてください。もし、そこにどうしても反論できなかったとしたら、別案を持ってきて回答を修正し、相手の勝てないような回答に仕上げてください。

件の質問は、質問者のコードが間違っているので、処理が終わらなかったのは VBA のせいでない可能性が高いように思います。それを完璧なものに仕上げて質問者の望む Excel で動作するようにすれば、ベストアンサーを勝ち取れる可能性もあるはずですし、より見やすい結果を出す方法も考えられるはずです。

投稿2019/03/03 10:26

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

リンクの質問とは関係なく一般論で話します。

たぶん、完璧な質問も完璧な回答もないんじゃないですかね。

私はたまに質問をしますけど、回答の中に1つでも役に立つ回答があればそれでいいですし、間違った回答をした場合、コメントなどで指摘されるし、見込みが高いものは高評価になっているので迷うことはそれほどない気がします。コメントで詳しい人が質問内容を離れて激論を飛ばしていたら、初心者の回答者はかなりしり込みすると思います。

とはいえ、teratailは質問者のものという訳でもないので、意味のある議論であればする価値もあると思います。煽ってみたり、感情的にやり取りはどうにも意味のある議論にはならない気がします。どうしても、感情の発散を目的としているかのような人もいる気がします。

私の場合は、そう感じた時はできるだけ、相手の感情面に対するコメントを書くようにしています。端的に「~言い方、きついですね」というとかしたときに、感情を収めてくれることも多いです。このサイトを使う多くは自分は論理的で冷静でありたいと思う人たちだからです。

もちろん、それでもしつこい場合は、もうこれは論理が通じる相手ではないと考えます。

その場合、私は無視するかな。その件については一切反論しない。私が感情的になった時の経験だと、感情を受け止めてもらいたいものなので、無視が一番つらいです。慣れないと悔しいかもしれませんが。

まとめると2点。
・質問者はあまり気にしていない
・議論に足らない相手とは、議論しても仕方がない

せっかく、手間をかけた回答が心無いコメントでだめになるのは悲しいですが、何をするにも良いときばかりではないので、非常に多くの回答のなかの1回の回答のみで気を落とされませんように。

投稿2019/03/03 14:17

iwamoto_takaaki

総合スコア2883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

テラテイルには、十分な知識があったとしても**「完ぺきな回答」**を推測するのが難しい質問がたくさんありますし、質問者によって望んでいる回答が異なるケースもあります。
そんなことで回答者が萎縮していては、誰も回答できなくなってしまうでしょう。

ただ今回の反省点としては、本題と直接関係のない内容については長々とやりとりしない方が良かったかもしれません。
質問者や後から回答を見にきた人が、困惑してしまうかもしれませんので。

あと低評価は「そういうふうに考える人もいる」くらいに受け止めて、あまり気にしなくて良いと思いますよ。

投稿2019/03/03 08:14

編集2019/03/03 08:18
nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問