板検索:
テストしにくいコードをテストする方法 その2 (51)
まとめビュー
1
デフォルトの名無しさん[sage]   投稿日:2017/01/03 14:50:44  ID:f6cee8Pv.net(15)
ここで言うテストっていうのは
ユニットテストみたいなものね。

人間がぽちぽち操作してやるテストじゃありません。


前スレ テストしにくいコードをテストする方法教えて下さい
コメント1件


2
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:00:08  ID:f6cee8Pv.net(15)
例で考えよう。
private function numberOfFeet(動物) returns 脚の数
{
 if (動物 == 人) { return 2 }
 if (動物 == 犬) { return 4 }
 if (動物 == 猫) { return 4 }
 raise exception 知らない動物
}
っていう関数が既にあるとする。

3
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:00:28  ID:f6cee8Pv.net(15)
その関数で対応する動物がもっと増えたとしよう。

private function numberOfFeet(動物) returns 脚の数
{
 if (動物 == 人) { return 2 }
 if (動物 == 犬) { return 4 }
 if (動物 == 猿) { return 4 }
 if (動物 == キジ) { return 2 }
 if (動物 == 猫) { return 4 }
  :
  :
 raise exception 知らない動物
}

いよいよ複雑になってきた。privateなnumberOfFeetをテストしたい。
となってきたら、設計が悪いって話なんだよ。

そもそもこの関数のテストはどうするか? ↓このようにやるか?
assert( numberOfFeet(人) == 2 )
assert( numberOfFeet(犬) == 4 )
assert( numberOfFeet(猿) == 4 )
 :

あほらしい。これは実行コードの内容を単純に変換してテストコードに転記したにすぎん。
新たに対応する動物が増えたら、それに対応するコードを追加するだけの単純作業
いったいなんの意味があるというのか。
そこ(実行コード)にそう書いてあるんだから関数の実行結果はあきらかではないか。

カバレッジを100%にするためには必要?
それは "設計が悪いから" こうするしかなくなってしまってるんだよ

4
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:00:58  ID:f6cee8Pv.net(15)
private関数がテストしたいと思ってきたら設計が悪いという話だったね。
この場合は、このprivate function numberOfFeetを
publicにしてテストするのではなくて設計を変えるってことだよ。

もちろんやり方はいくつもある。もっともシンプルな解決方法ではないが
今回はヘルパークラスを作る方法で解決してみようか。

LookupTableクラスというものを作る。
このクラスは特定のキーを元に特定の値を返すクラスだ。
newの引数で対応するキーと値の組み合わせを渡すことができる。

lookup_table = new LookupTable({a: 1, b: 2, c: 3})

さて、このLookupTable・・・のテストを書くとき、
動物が増えたら?などということを考える必要はない。
LookupTableは汎用的なクラスなのだからそこに動物は出てこないからだ。
では使う側はどうなるか?

data = {人: 2, 犬: 4, 猿: 4, キジ: 2, 猫: 4}
numberOfFeet = new LookupTable(data)

こういうコードを書くだろう。
テストはどうする? ・・・答えは "不要" だ。

なぜならばLookupTableのテストはすでに書いているからだ。
おそらくこのコードは別のテストコード時に最低1回は通るだろう。
それでカバレッジは100%になる。いくら動物が増えたとしても
そのdataというデータ定義の行は通るのでカバレッジは100%のままだ。

5
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:01:14  ID:f6cee8Pv.net(15)
これを手抜きやずるいやり方だと思うか?

元の設計のテストというのはデータが増えれば対応するテストを
増やすだけという単純作業だっただろう?

こんなのそもそもやる意味がない
データが変われば、それに応じて答えは変わる。
それだけのことだろう。

こういうのは、そもそもやらなくていいんだよ。

変数aに1を入れました。これ対応する変数aは1であるか?という
テストコードを書く意味はない。
テストすべき対象は実行するコードであってデータ定義はテストしない。

LookupTableという汎用的なクラスを作ることで実行するコードの中から
データ定義を分離させることで、少ないテストパターンでカバレッジ100%にしながら
テストコードを書くことができる。それが可能な設計に変更したからだ。

ということで、 テストしたくなってしまった
private function numberOfFeetは
悪い設計を正すことで存在が消えました。

ということでおしまい。

6
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:01:31  ID:f6cee8Pv.net(15)
プログラム設計の善し悪しとテスト技法は密接に関係している。

というかprivate関数をテストする言語特有の裏技的テクニックは
テスト技法ではないんだがな。

プログラム設計が悪いと、テストが難しくなったりできなくなったりする。
private関数のテストもその一つで、private関数がテストしたいほど
複雑になったら、それは設計が悪いということだよ。

こういうのはprivateのまま頑張ってテストするんじゃなくて、
単純にpublicに変えるのでもなくて、
汎用的な処理をヘルパークラスや親クラスとして抽出する

テストしづらい → 設計が悪い → 設計を直す → テストを書く
こういう流れでなくてはいけない。



話は少し変わるが、設計を直すその途中で作成するリファクタリングを
するためだけに用いる一時的なテストコードに名前をつけたいね。

本来であればテストしづらいコードであってもテストコードは
あってしかるべきなんだが、多くの場合悪い設計のコードにテストコードはない。
だから新たにテストコードを追加する。しかしこのテストコードは
リファクタリング後にすぐにメンテナンスして、違う形になる。

だから一時的なテストコードになるんだよね。

7
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:01:50  ID:f6cee8Pv.net(15)
あ、そうそう

リファクタリングを行うための一時的なテストコードであれば
単純にprivateをpublicに変えたり
private関数のテストコードを書くのもありだから。

このprivate関数へのテストはリファクタリングをしたあとの
テストコードのメンテナンスでなくなるという前提であれば
一時的にprivate関数へのテストコードを書くのはあり。

8
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:02:53  ID:f6cee8Pv.net(15)
https://github.com/google/googletest/blob/master/googletest/docs...#testing-private-code

Testing Private Code

If you change your software's internal implementation,
your tests should not break as long as the change is not observable by users.
Therefore, per the black-box testing principle, most of the time you should test your code through its public interfaces.

If you still find yourself needing to test internal implementation code, consider
if there's a better design that wouldn't require you to do so. If you absolutely
have to test non-public interface code though, you can.

プライベートコードのテスト

あなたのソフトウェアの内部実装を変更した場合、変更がユーザによって観察されない限り、
テストは中断されるべきではありません。 したがって、ブラックボックスのテストの原則に従って、
ほとんどの場合、パブリックインターフェイスを使用してコードをテストする必要があります。

依然として内部実装コードをテストする必要がある場合は、そうする必要のない
優れた設計があるかどうかを検討してください。 しかし、非公開のインターフェイスコードを
絶対にテストしなければならない場合は、できます。

9
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:03:14  ID:f6cee8Pv.net(15)
「privateだからテストしてはいけない」という意見はそもそも的外れで
テストすべきものがprivateという状態ができたら
それは設計がおかしいと気づかないといけない。

「privateだからテストしてはいけない」は単なる思考停止で
privateをテストしたいのは設計がまずいからだね、設計をなおそう。
という流れにならなければいけない。
コメント1件

10
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:03:37  ID:f6cee8Pv.net(15)
http://higelog.brassworks.jp/1941

テストコードにもリファクタリングが必要

・昔はテストコードがメンテ対象であるという意識が薄かった
・見てすぐ分かるテストコードがよいという考えからコピペコードが非常に多かった
・テストコードがたくさんあることによって動きが取りづらくなり、変更コストも上がる
・素早く動きたいがためにTDDしているのにそんな皮肉な結果になってしまう
・たくさん書くのではなく必要十分書くことが大切
・書き散らすと「テストケース爆発」を起こす
・テストコードもメンテし続けるためにリファクタリングして行く必要がある

11
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:04:15  ID:f6cee8Pv.net(15)
http://dev.classmethod.jp/testing/10_errors_about_unit_testing/
> 3.テスト対象が完璧な設計であるという勘違い
>
> ユニットテストを実践することによりプロダクションコードが
> 適切に修正されていく状態でなければなりません。
>
> ユニットテストの重要な目的のひとつに「テスト対象クラスやメソッドの
> 使用感を把握する」ことがあります。机上の設計やフィーリングだけで
> 書いたコードは、使ってみての違和感や使いにくさに気付き難いものです。
> それらの使用感は、実際に利用してみてはじめて気付きます。
> だから、テストコードを書くことで実際に利用してみます。これはサンプルコードを書く事に他なりません。
>
> サンプルコードを書くと、「これは使いにくい」と感じたり、
> 「これはこうした方が使いやすい」と感じたりします。それはユニットテストの
> 大きな効果です。もし、使いにくいと感じたならば、すぐにテスト対象を修正します。
> テスト対象が完璧な設計で変更する余地が全く無い、または変更し

12
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:04:36  ID:f6cee8Pv.net(15)
これも関連する話。まずリファクタリング後にテストを変更するのは当然

まず対象のクラスに対してテストを書く。そしてリファクタリングをする。
この時、汎用的な処理をヘルパークラスや親クラスとして抽出する。

ここまででテストを変更することはないが、
次に対象のクラスにあったテストのうち、ヘルパークラスや親クラスに分離したものは、
対象のクラスのテストではなくて、ヘルパークラスや親クラスのテストとして移動する

ヘルパークラスや親クラスでテストしている内容を、
それを使用している対象クラスでもやる必要はない。

具体的に言うと、あるモデル、例えばUserモデルクラスにsaveメソッドを作ったのであれば
そのsaveメソッドのテストを書くのは当然だが、そのsaveメソッドが親クラス
(例えばRailsで言えばActiveRecord::Baseクラス)にあるものならば、
Userモデルクラスでsaveメソッドのテストをする必要はない。


こうやってヘルパークラスや親クラスに処理を移動して、それに対するテストを書くことで
それを使用している部分ではテストが不要という状態を作り上げることが重要

13
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:05:03  ID:f6cee8Pv.net(15)
privateメソッドに対してテストをしたくなっったら
それはクラスが肥大化してる証拠だよ。

まず前提としてprivateメソッドなんてものは
ほとんど必要ありません。

長い処理があったとして、その中で汎用的な処理を
抜き出していったら、コードは短くなります。
短いのだからprivateな関数にするまでもありません。

それでもprivateメソッドが残ったとしたら
それはヘルパーメソッドとして別クラスに分離する。
別クラスの関数を呼ぶのだから、必然的にそのメソッドはpublicになる
そうすりゃそのメソッドだけでテストかけるだろう?

privateメソッドをテストしたいっていうのは、作り方が悪いんだよ。
コメント2件

14
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:06:10  ID:f6cee8Pv.net(15)
ある程度埋めないと落ちるといわれたので、
前スレのハイライト(笑)をコピペ

15
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:45:05  ID:mYtDE+67.net
なめてんの?

16
デフォルトの名無しさん[]   投稿日:2017/01/03 19:23:41  ID:Oj8nbLhF.net
>13
>privateメソッドをテストしたいっていうのは、作り方が悪いんだよ。

バカ丸出し。
privateメソッドだからといって十分にunit testingしない奴は頭が悪いんだよw
privateメソッドがあるからといって設計のせいにするのは性格が歪んでんだよw
privateメソッドをテストする技術を持たないからといって
出鱈目な ”あるべき論” を捏造する奴は技術者としての道徳が欠如してるんだよw
コメント1件

17
デフォルトの名無しさん[sage]   投稿日:2017/01/03 22:27:14  ID:f6cee8Pv.net(15)
>16
お前日本語がわかってないなw

18
デフォルトの名無しさん[sage]   投稿日:2017/01/04 09:28:49  ID:cRY9oGv2.net
privateメソッドとテストに相関はありません
リファクタリングのスレに移動してください

19
デフォルトの名無しさん[sage]   投稿日:2017/01/04 14:06:42  ID:mEkZwZd0.net(2)
>13
馬鹿丸出し
頭固すぎ

20
デフォルトの名無しさん[sage]   投稿日:2017/01/04 14:10:32  ID:mEkZwZd0.net(2)
>9
> テストすべきものがprivateという状態ができたら
> それは設計がおかしいと気づかないといけない。
という思考停止にきづかない馬鹿pgr

21
デフォルトの名無しさん[sage]   投稿日:2017/01/05 04:41:00  ID:4wDE4Xcp.net
当のKentは ID:f6cee8Pv みたいな教条主義とは対極にいるんだがな。
コメント1件

22
デフォルトの名無しさん[sage]   投稿日:2017/01/05 07:46:32  ID:SvuiXrcs.net(2)
>21
どこが?
https://twitter.com/kentbeck/status/3579860805

2chのレスだけで知ったかぶってる、まさに半可通
この手のクズは他分野でも同様なのだろうが、
本も読まず、手も動かせない人間なんて、
職人気質なTDD実行側の人間が、一番嫌うタイプだぞ
コメント1件

23
デフォルトの名無しさん[sage]   投稿日:2017/01/05 07:59:15  ID:SvuiXrcs.net(2)
むしろつまみ食いしかしてないくせに、拡大解釈して腐ったコード撒き散らすな
ケントベックはXPは熟練者が必要とは言ってるだけで、手法は何でも良いなんて言ってない
テストコードも、trivialな物は不要、複雑なprivateメソッドは設計が悪いと一蹴してる
これを教条主義だと言うなら、レッテル張る事しかできない屑だな
コメント1件

24
デフォルトの名無しさん[]   投稿日:2017/01/05 08:26:33  ID:rS/TqFdr.net
前スレでprivateメンバーしか見ずにそれをテストしようとしたり、考え方がおかしい。

あと、Kent Beckはテストは不要だと思ったらやらない、と言うぐらい柔軟な思考の持ち主だぞ

25
デフォルトの名無しさん[sage]   投稿日:2017/01/05 09:16:09  ID:qUpJhZLr.net
前スレ埋めてからやってくれ。

26
デフォルトの名無しさん[sage]   投稿日:2017/01/06 14:09:56  ID:jUueQ44/.net(3)
>23
> 複雑なprivateメソッドは設計が悪いと一蹴してる
ソースは?

>22のtweetがそれだとしたら、その会話の流れが設計の善し悪しであることを示す他のtweetも示せ
コメント1件

27
デフォルトの名無しさん[sage]   投稿日:2017/01/06 14:31:04  ID:jUueQ44/.net(3)
Kent BeckはImplementation Patternsの中でこう言ってる

* Inner Class
* Bundle locally useful code in a private class.

* Method Visibility
* Make methods as private as possible.

* Helper Method
* Create small,private methods to express the main computation more succinctly.

別に、private classやprivate methodを否定しているわけではない
コメント1件

28
デフォルトの名無しさん[]   投稿日:2017/01/06 15:00:59  ID:ueXke68e.net
公開する必要のないprivateメンバーをpublicにしてまでテストするなんて真逆の発想なんだよなぁ
コメント1件

29
デフォルトの名無しさん[sage]   投稿日:2017/01/06 15:23:30  ID:jUueQ44/.net(3)
>28
まあ、そのprivateメソッドが、所属するクラスと直交していて再利用可能な内容だった場合は
別クラスにpublicメソッドとして切りだすのもいいけど、いつでもそうとは限らないからな

30
デフォルトの名無しさん[sage]   投稿日:2017/01/06 16:24:11  ID:bv2F1pCR.net

31
デフォルトの名無しさん[sage]   投稿日:2017/01/06 19:55:59  ID:SxMvRiz3.net
飽きてきたので以降privateの話題禁止

32
デフォルトの名無しさん[sage]   投稿日:2017/01/06 21:44:03  ID:IT5nhYwQ.net(2)
>27
レスをよく読め文盲め
言ってもいない事を言ったかのように叩くやつがあるか

33
デフォルトの名無しさん[sage]   投稿日:2017/01/06 21:44:44  ID:IT5nhYwQ.net(2)
>26
勝手に追えばいいだろ
くだらない人種だな

34
デフォルトの名無しさん[sage]   投稿日:2017/01/07 01:43:02  ID:jcRWOLCk.net(2)
結局世界的有名人であるKent Beckが言ってることは
>1がまとめたとおり。

privateメソッドをテストしようと思った時点で、
そのprivateメソッドは設計が悪いということ。

悪い設計を直す過程でpublicになる。
設計を直さなないで単にpublicに変更するのは間違い。
コメント1件

35
デフォルトの名無しさん[sage]   投稿日:2017/01/07 07:12:47  ID:0cNXAmIk.net
>34
まだそんなこと言ってんの?ばかだなあw
コメント1件

36
デフォルトの名無しさん[sage]   投稿日:2017/01/07 07:22:58  ID:55rirhTJ.net
そこで#define private publicですよ。え?

37
デフォルトの名無しさん[sage]   投稿日:2017/01/07 08:54:35  ID:bP0cwlRr.net
publicメソッドしかテストできない道具を使ってprivateメソッドをテストすることはできない。
一種のトートロジーだな。

38
デフォルトの名無しさん[sage]   投稿日:2017/01/07 12:20:08  ID:HNCUhS1Q.net
前スレ埋めてからやれ
こういう奴らが糞コードを放りっぱなしにしていってこっちが掃除しなくちゃならなくなるんだよ
バグ解析依頼されて見てみたら、意識だけ高いけどそのまま放置されたゾンビコードに当たったときの腹立たしさって
まあお前らのおかげでちょっといい飯が食えるんだから感謝しないといけないな

39
デフォルトの名無しさん[sage]   投稿日:2017/01/07 13:20:41  ID:jcRWOLCk.net(2)
>35
悔しいなら反論しろよw

40
デフォルトの名無しさん[sage]   投稿日:2017/01/07 19:21:41  ID:adAq7wbq.net
今現在を占う 2017/1/7 19:21

おみくじ 大吉 →  ♌ 獅子座
.      吉   →  ♈ 牡羊座 ♋ 蟹座   ♓ 魚座 
.      中吉 →  ♏ 蠍座 
.      小吉 →  ♉ 牡牛座 ♍ 乙女座 ♎ 天秤座 ♒ 水瓶座
.      末吉 →  ♊ 双子座
.      凶   →  ♐ 射手座
.      大凶 →  ♑ 山羊座

41
デフォルトの名無しさん[sage]   投稿日:2017/01/08 09:54:40  ID:qkk6ZrX+.net(2)
吉だぜ、いやっほーい

42
デフォルトの名無しさん[sage]   投稿日:2017/01/08 09:54:57  ID:qkk6ZrX+.net(2)
あ、昨日か.....

43
デフォルトの名無しさん[sage]   投稿日:2017/01/09 20:16:25  ID:pl8AdjB2.net
今現在を占う  2017/1/9 20:16  (不定期テスト)

おみくじ 大吉 →  ♍ 乙女座 ♑ 山羊座
.      吉   →  ♉ 牡牛座 ♎ 天秤座 ♒ 水瓶座
.      中吉 →  ♋ 蟹座 
.      小吉 →  ♈ 牡羊座 ♏ 蠍座 
.      末吉 →  ♌ 獅子座
.      凶   →  ♊ 双子座 ♐ 射手座
.      大凶 →  ♓ 魚座 

44
デフォルトの名無しさん[sage]   投稿日:2017/01/11 00:09:48  ID:ha9kcMkV.net
あんまり可視性でグダグダ言っても揉め事しか起こらん印象は有る。
だからあんまりカプセル化周りの議論は好きではない。
重要なのはテストするコードの粒度じゃないかね。
3 のレベルのコードをテストするのは粒度が細かすぎる。
3のコードを呼んで何かしてるコードのテストコードを書くべきなんだろう。
コメント1件

45
デフォルトの名無しさん[sage]   投稿日:2017/01/11 23:15:37  ID:1SbN3a75.net(2)
端折って網羅性が確保できなくなるのであればそもそもこのテスト自体イラネーってのあるよ
だからやるなら機械的に全部やるかそもそもやらないかのどっちかになると思う

46
デフォルトの名無しさん[sage]   投稿日:2017/01/11 23:16:53  ID:1SbN3a75.net(2)
あ、Visual Studioのユニットテスト的な話ね
コメント1件

47
デフォルトの名無しさん[sage]   投稿日:2017/01/12 00:02:44  ID:qhQd7W/g.net
>46
2017のlive unit testのことを言ってる?

48
デフォルトの名無しさん[sage]   投稿日:2017/01/13 06:48:56  ID:tNTQooLV.net
>44
しょうがないよ、ID:f6cee8Pvの能力ではそこが限界・・・
コメント2件

49
デフォルトの名無しさん[sage]   投稿日:2017/01/13 23:07:22  ID:9L2JHio8.net
>48
呼んだか?

何か言いたいことがあるなら言ってみな。

今のところ俺の書き込みに論理的に反論している
文章は存在していない。

50
デフォルトの名無しさん[sage]   投稿日:2017/01/13 23:40:30  ID:2oF12qKz.net
テスト
○○○●○○○○○○○○●○○○○○○○○●
○○○●○○○○○○○○●○○○○○●●●●●●●
○○○●○○○○○●●●●●●●○○●○○○○○●
○●○●○●○○○○●○○○●○○○○●●●●●○
○●○●○●○○○○●○○○●○○○○○○○●○○
○●○●○○●○○○○●○●○○○○○○○●○○○
○●○●○○●○○○○●○●○○○○●●●●●●●
●○○●○○●○○○○○●○○○○○○○○●
○○○●○○○○○○○●○●○○○○○○○●
○○○●○○○○○○●○○○●○○○○○○●
○○●●○○○○○●○○○○○●○○○○●●

○○○○○○○●○○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○○●
○○○○○○○●○○○○○○○○○○○○○○○○●○○○○○○○○○○●●●●●●●●●●●●●●
○○○○○○○●○○○○○○○○○●●●●●●●●●●●●●●●●○○●○○○○○○○○○○○○●
○○○○○○○●○○○○○○○○○○○○○●○○○○○○●○○○○○○●○○○○○○○○○○○○●
●●●●●●●●●●●●●●●●○○○○○●○○○○○○●○○○○○○○○●●●●●●●●●●
○○○○○○○●○○○○○○○○○○○○○●●○○○○●●○○○○○○○○○○○○○○○●●
○○○○○○●●●○○○○○○○○○○○○○●○○○○●○○○○○○○○○○○○○○○●●
○○○○○○●○●○○○○○○○○○○○○○●●○○●●○○○○○○○○○○○○○●●
○○○○○○●○●●○○○○○○○○○○○○○●○●●○○○○○○○●●●●●●●●●●●●●●●●
○○○○○●●○○●○○○○○○○○○○○○○○●●○○○○○○○○○○○○○○○●
○○○○○●○○○●●○○○○○○○○○○○○●●●●○○○○○○○○○○○○○○●
○○○○●●○○○○●●○○○○○○○○○○●●○○●●○○○○○○○○○○○○○●
○○○●●○○○○○○●●○○○○○○○○●●○○○○●●○○○○○○○○○○○○●
○○●●○○○○○○○○●●○○○○○●●●○○○○○○●●●○○○○○○○○○○●
●●●○○○○○○○○○○●●●○●●●○○○○○○○○○○●●●○○○○○○●●●

51
デフォルトの名無しさん[sage]   投稿日:2017/01/16 23:19:44  ID:9FmOEppL.net
>48
お前ってプログラムに限らずいつも的はずれな難癖しかつけないよな
更新情報
・スレッド一覧ページで過去ログのタイトル検索・一覧表示ができるようになりました(2016/1/20)
NGワード登録
登録する
スレッド内検索

プログラム板 タイトル検索

このスレッドが人気です(実況系)
実況 ◆ 日本テレビ 54028 (770)NTV実況
実況 ◆ フジテレビ 82454 ノンストップ (254)フジ実況
実況 ◆ テレビ朝日 46582 (985)テレ朝実況
羽鳥慎一モーニングショー★4 (430)テレ朝実況
白熱ライブ ビビット★1 (783)TBS実況
NHK総合を常に実況し続けるスレ 130187 (1000)NHK実況
連続テレビ小説 ベっぴんさん★149 (396)NHK実況
はやドキ!&あさチャン!金曜日★1 (920)TBS実況
このスレッドが人気です(ニュース系)
【冬季アジア大会】アパグループは客からの要望で「本を一時的にフロントで預かるよう、全国のホテルに指示することを検討」★2 (1000)ニュー速+
【冬季アジア大会】アパグループは客からの要望で「本を一時的にフロントで預かるよう、全国のホテルに指示することを検討」★3 (102)ニュー速+
【就職】採用選考の際に戸籍謄本の提出を求める企業、2割近くに上る…生まれた場所などを記入させていたケースも (77)ニュー速+
【芸能】スクープ! 狩野英孝「17歳現役女子高生と淫行疑惑!」 (1000)音楽・芸能ニュース
【冬季アジア大会】アパグループは客から要望で「本を一時的にフロントで預かるよう、全国のホテルに指示することを検討」 (1000)ニュー速+
【芸能】狩野英孝謹慎も 女子高生との淫行疑惑報道、一両日中にも会見へ (732)音楽・芸能ニュース
【生活】「あら、○○ちゃんお姉ちゃんになったのね!おめでとう」「恥ずかしいことじゃないから!」 初潮の赤飯文化反対!が話題★3 (857)ニュー速+
【相撲】大関・豪栄道が休場 13日目対戦相手の稀勢の里は不戦勝 (220)音楽・芸能ニュース
プログラム板の人気スレ
【統計分析】機械学習・データマイニング11 (940)
C++相談室 part129 (182)
Excel VBA 質問スレ Part45 (239)
C言語なら俺に聞け 138 (572)
Xamarin Part3 (246)
ふらっと C#,C♯,C#(初心者用) Part126 (260)
Visual Studio 2015 Part7 (1000)
Androidプログラミング質問スレ revision52 (560)
【PHP】下らねぇ質問はここに書き込みやがれ 7 (636)
くだすれPython(超初心者用) その31 (863)
次世代言語議論スレ【Go Rust Haskell Scala Erlang Elixir】 (468)
クラス名・変数名に迷ったら書き込むスレ。Part27 (740)
+ JavaScript(ECMAScript)質問用スレッド vol.122 + (978)
スレ立てるまでもない質問はここで 145匹目 (95)
推薦図書/必読書のためのスレッド 80 (950)
☆★Java質問・相談スレッド179★★ (580)
Swift part9 (584)
Ruby 初心者スレッド Part 59 (555)
VRプログラム雑談【Unity/UnrealEngine】【HTC Vive/Oculus Rift/その他VR】 (347)
【JavaScript】スクリプト バトルロワイヤル55【php,py,pl,rb】 (459)
人工知能ディープラーニング機械学習のための数学 (105)
プログラミング言語 Rust 2 (311)
Java入門・初心者質問スレ Part.2 (297)
+ JavaScript の質問用スレッド vol.122 + (628)
ディープラーニング (964)
Swift part7 (1026)
テストしにくいコードをテストする方法 その2 (51)
このサイトについて
このサイトは2ちゃんねるからデータを取得し、表示するサービスです。
画像のインライン表示機能について
画像のURLの後ろにある[画像をインライン表示]をクリックすると、URLの下に表示します。
表示される画像は横幅100pxに縮小されていて、クリックすると原寸で表示します。
このサイトの特徴
1)スレッド内検索ができます
2)レス(「>>1」など)のポップアップができます
3)不適切な言葉を含む投稿を表示しません
4)ページ内で画像を直接表示できます
5)2ch他スレッドへのリンクはタイトル・板名つきでリンクします
6)すっきりとしたデザインで表示します
7)最新スレや前スレをチェック・一覧表示します
8)NGワード機能の搭載でイヤな言葉が目に入りません
9)荒らしを自動チェックします
10)スレッド内・同一IDの書き込みだけ表示できます
11)レスの返事をレスされた発言の下に表示する「まとめビュー」が利用できます
12)シリーズ化したスレッドの一覧を表示します
13)最新のスレッドがある場合はお知らせします
削除について
こちらをご覧ください
機能要望について
現在機能要望受付中です。
問い合わせについて
こちらのページからどうぞ
Amazon


このサイトは2ch.scからデータを取得・表示しています。削除などについてはこちらをご覧ください。 アクセスモード:差分取得 - 正常取得 - 3件 - 取得完了