Objective-C
..
499:デフォルトの名無しさん
06/04/17 08:49:31
>>498
違う。参照も保証されない。
お前もメモリバリアを勉強し直せ。
500:デフォルトの名無しさん
06/04/17 09:23:37
CのvolatileとJavaのvolatileが混同されているな
501:デフォルトの名無しさん
06/04/17 12:15:16
>>499
そうね。
Cの場合は下記を参照
URLリンク(www.yuasa.kuis.kyoto-u.ac.jp)
Javaはこのあたり参照
URLリンク(www.netgene.co.jp)
C/C++の場合は、volatileはスレッド間のメモリ可視制御を何もやっていないけど、
Javaについては意味がある。
現状Cocoaの場合、インラインアセンブラでメモリバリアを差し込むか、
メモリバリアを入れるOSコールを呼び出す必要がある。
Cocoaが下請けに使っているpthreadについては、「メモリ同期を行う関数」一覧があるので調べられる。
が、Cocoaのどのクラスのどのメソッドが該当するのかは、ドキュメントが見当たらないので推測になる。
念のために書いておくが、494の認識はマルチプロセッサ登場前は概ね正解だった(それでもCPUによる)。
そのため嘘を書いている本は大量に残っている。
ちゃんとした本はあまり無いが、Effective C++を書いたエロイ人のドキュメントもあるので、
英語が読める人には推奨しておく。
URLリンク(www.nwcpp.org)
502:デフォルトの名無しさん
06/04/17 16:08:59
Objective-C の @synchronized ではいかんの?
マルチスレッド書いたことないのですいません
503:デフォルトの名無しさん
06/04/17 17:02:49
>>502
問題無い。lock系の操作はメモリバリアが入ってる。
ダメなのは、「4バイト以下のvolatile変数を使えばロックを使わないで済む」という勘違い。
複数のスレッドが変数にアクセスする場合の選択支は二つあって、
・常にlockして読み書きする。
・読み書きのポイントにメモリバリアを入れる。
のどちらか。
後者の方が性能面で有利だけど、前者を使う方がミスが少ない。
@synchronizedを使うのが一番確実。
ちなみにダメな理由を大雑把に説明すると、最近のCPUはアセンブラコードの順番を勝手に入れ替えて最適化処理をやっている。
その結果、コード上とは異なる順番でメモリ上の変数が書き換わったりしている。
これは単一のCPUから見る限り問題無い(ように最適化されてる)のだけど、他のCPUで動作するスレッドから見ると不味い事になる。
例えば、カウンタとフラグに関係を持たせたりしていると、タイミング次第で誤動作してしまう。
他にもCPU単位にメモリキャッシュがあったりするので、一部の変数の書き換えだけが延々と他のCPUに見えない時もある。
504:デフォルトの名無しさん
06/04/17 17:33:08
津波に@synchronizedとNSLock系の上手な使い方について詳しい解説はございませんかのう
その・・・日本語で・・・
505:デフォルトの名無しさん
06/04/17 18:00:46
>>540
期待値に達しているか判らないが、萩原本にはNSLock関係も載っている。
コラムのvolatile関係を読み飛ばせば問題無いのでは無いかと思う。
506:デフォルトの名無しさん
06/04/17 20:46:35
買っては見たものの、4200円は高杉だろ。
507:デフォルトの名無しさん
06/04/17 21:22:31
なんだ?
リア工房の俺でも買えたぞ
508:デフォルトの名無しさん
06/04/17 21:57:51
プログラム系の書籍で4桁ぐらいでグダグダいってたら全然買えない
素直に諦めろ
509:デフォルトの名無しさん
06/04/17 22:05:04
いや、あの内容で4200円かと思うとつい。
510:デフォルトの名無しさん
06/04/17 22:38:15
パチスロの台の前に30分居たと思えば安いものだ。
511:デフォルトの名無しさん
06/04/17 23:59:04
抜きの1/4と思(ry
512:デフォルトの名無しさん
06/04/18 00:38:33
時間を買うのであれば安いだろ
513:デフォルトの名無しさん
06/04/18 07:02:47
米と比べちゃうよね…
514:デフォルトの名無しさん
06/04/18 08:59:26
萩本は一ヶ月分の米に相当するということでしょうか。
515:デフォルトの名無しさん
06/04/18 19:43:49
米一俵の精神で頑張ってくれたまえ。
516:デフォルトの名無しさん
06/04/24 21:07:27
HMDTのTiger本きたね
517:デフォルトの名無しさん
06/04/25 01:18:54
まだかじった程度だけど、
やっぱC系の言語って基本的に趣味の領域なのかなと。
大規模開発だと「プログラマに任せる」っていう設計思想は
危険すぎるから。
「これで、Objective-Cのオブジェクト型は、原理的に動的型であり、
静的な型は目安にすぎないことが理解できただろう。
言語として型の厳密性を保証することはなく、適切なオブジェクトが
代入させるかどうかの判断は、プログラマやフレームワークにまかされることに
なる。実際にコードを書いてみると、このいわばルーズな文法が、非常に
楽であることに気づく。
しかし、次のような疑問も浮かぶだろう。そんないい加減なコンパイルで、
本当に実行時大丈夫なのか、と。これに対しては、次のように答えることが
できる。正しいオブジェクトが渡るかどうかはプログラマが保証することで
あり、ある程度の経験を積めば、基本的には大丈夫だろう、と。 」
なんてことを自信満々に言っちゃってる『ダイナミックObjective-C』の
作者さんはきっと企業内でコード書いたことないんだろうなあ。
ガベコレも導入するみたいだけど、なぜ Java を捨てたのか?Jobs との因縁か?w
こんなマイナー言語をメインに据える Apple ってソフト自社生産の任天堂路線?
デザイン的に洗練されれば Windows でもいいのに、Vista のスタートボタンを
糞にした MS に未来はないよ。とほほ
518:デフォルトの名無しさん
06/04/25 01:26:51
企業の業務用アプリケーションを構築する際にプロジェクト内に
一定比率で存在するへたれプログラマを相手にしてないんじゃね? > Objective-C の適用領域
519:デフォルトの名無しさん
06/04/25 02:40:51
>>517
Java は捨てていないし、小規模開発が趣味の世界ではない訳だが。
型云々も大事だけれど、個人的にはクロージャを捨てたのが残念。
520:デフォルトの名無しさん
06/04/25 04:32:44
>517
著者は企業プログラマじゃなかったっけ?
521:デフォルトの名無しさん
06/04/25 06:47:31
>>519
>Java は捨てていないし
つ URLリンク(developer.apple.com)
Important: Features added to Cocoa in Mac OS X versions later than 10.4 will not be added to
the Cocoa-Java programming interface. Therefore, you should develop Cocoa applications using
Objective-C to take advantage of existing and upcoming Cocoa features.
522:デフォルトの名無しさん
06/04/25 06:54:18
>>518
型チェックがあるおかげで、へたれでもとりあえず動くものが作れるってのは
企業にとってプラスなのかマイナスなのか。
523:デフォルトの名無しさん
06/04/25 08:07:35
>>522
「型チェックがあるおかげで、へたれでもとりあえず動くものが作れる」→×
「型チェックがあるおかげで、へたれがコンパイルを通すのに時間がかかり、スケジュールが遅れる」→○
へたれが作ったものはコンパイルできるってだけで、動くって言いきるには無理があるぞ。
Objective-C ってーか動的な型付け言語は、「プログラマ==ユーザ」という環境下で最大のメリットが
出てくるもんだと思う。
524:デフォルトの名無しさん
06/04/25 08:20:11
id嫌い
便利なのは認めるけど、自分をあんまり信じられないから
コンパイル時の型チェックで内部変更の変更必要箇所を探させてたから
チェック方法が1つ減るから。
#Squeak(Smalltalk)も同じ理由で苦手
525:デフォルトの名無しさん
06/04/25 09:29:04
>521
「とりあえず今までどおり使えるけど、Javaはこれ以後サポートしないよ」
っていうのは、Javaを半ば捨てたのと一緒では?
>523
誰かが言ってたんだけど
「どんなプログラマでもJavaでは平均的なプログラマになれる」
「LISPではプログラマは力量にあったプログラムしか書けない」
というのがあった。Javaだったらヘタレを雇っても安心、というのはある。
Obj-Cだったら能力のあるプログラマじゃないと
良いものを書いてもらえなさそう。
そういう意味で >524 には激しく同意。自分は信じられない。
526:デフォルトの名無しさん
06/04/25 09:29:30
Java VM って Java で書いてあるの?
527:デフォルトの名無しさん
06/04/25 10:07:15
静的型チェックの無い言語を嫌悪する事は、プログラマの性格的素質としては良い傾向だと思う。
が、単に経験が足りない。
企業内でJavaを使ってWebベースのシステムを書かされているエンジニアは多い。
しかし良く考えれば、XMLやJSPをJavaのコードと結合するためにリフレクションまみれのフレームワークを使わされている。
そしてある日、「それだったら、全部動的言語で良くね?」と悟る。
実際rubyやphpでシステムを書き出すと、馬鹿らしくてJavaを使う気が失せるし、XMLがインフレを起こしている事に気がつく。
その後にObjective-Cを触ってみると、たぶん作者さんと同じ心境になれる。
>>519
クロージャをCのランタイムに載せたら神だと思うが。
匿名クラスや、匿名メソッドと勘違いしていないか?
528:デフォルトの名無しさん
06/04/25 10:08:09
なんかよく分からんが、企業内ではJava使えばいいじゃん。
WinでもMacでも動くんだから。
適材適所でしょ。
529:デフォルトの名無しさん
06/04/25 12:30:06
>>526
>Java VM って Java で書いてあるの?
確か、C/C++で書かれてあったはず。
530:デフォルトの名無しさん
06/04/25 12:59:50
>>525
Cocoa-Javaはこれ以上新しい機能を追加しないってだけで
Javaを捨てたわけではないと思うけど。
531:デフォルトの名無しさん
06/04/25 13:05:36
>>529
なるほど。
じゃあ、Java 自体が趣味の領域なんだろうね。 >517
532:デフォルトの名無しさん
06/04/25 15:41:20
C/C++はある程度コントロールできる奴ら(少数)向き
チェックの多い言語は書き方がある程度強制されるから多人数向き
533:デフォルトの名無しさん
06/04/25 17:03:05
OS9にもこれ以上新しい機能は追加されないと思うけど
まだ捨てられてないんだっけ?
534:デフォルトの名無しさん
06/04/25 19:03:44
idはたまに、共通の親クラスつくるの面倒な時とか使う
それより面倒なのがプリミティブな型を使うとき
ヘッダーにメソッド書いておかないとコンパイルできなかったり、動作がおかしかったり
NSNumberを使うとタイプ量が多くて面倒臭い
535:デフォルトの名無しさん
06/04/25 19:24:31
発展途上のプリミティブな型がある言語にObjective-Cっぽいところを持ち込んでしまえばいいんじゃ?
536:デフォルトの名無しさん
06/04/25 20:20:51
それがObjective-Cなのではあるまいか
537:デフォルトの名無しさん
06/04/25 20:35:51
つまり、発展途上のプリミティブな型のあるC言語にSmallTalkっぽいところを持ちこんだのがObjective-Cだと言いたいのか?
その通りだな。
538:デフォルトの名無しさん
06/04/25 21:05:36
>>520
既に退職してる。
539:デフォルトの名無しさん
06/04/25 21:12:11
>>531
あほですか?
低レベル(基礎的)な部分でC系の言語を使うのは全く問題ない。
フレームワークもまたしかり。
ただそういったランタイムor実行環境に依存する部分を公開するのは頂けない。
バグや変更があったときに影響が大きすぎる。
だからObjective-Cは頂けない。なんでもできるとか言って喜んでる奴は
やっぱり趣味でコード書いてる奴の言うことだと思う。
構造体化でカプセル化も容易にくずせる言語をObjectiveって...
「オブジェクトっぽいC」もしくは「オブジェクト的な皮を被せただけのC」
ってことなんだね。
540:デフォルトの名無しさん
06/04/25 21:30:28
>>539
うんまあ、最後の段落はまさにその通りなんだけどさ、
キミの使ってるOSって何で書かれてるかな。
多分Cだと思うよ。
それはなんでかな。
ランタイムや実行環境をいじれるからだよね。
ハードウェアに合わせてバリバリチューンも出来るからだよね。
でまあ、キミの価値観だとOSって趣味の領域なのかね。
541:デフォルトの名無しさん
06/04/25 21:32:33
モチロンソウヨ
542:デフォルトの名無しさん
06/04/25 21:55:48
IT土方向きではないな
最終成果物がイメージ(設計)できると動的のほうが効率いい
543:デフォルトの名無しさん
06/04/25 22:49:09
なんか
544:デフォルトの名無しさん
06/04/25 22:53:52
>>540
まあ極端な言い方をすればそうだね。
OSを純粋な「ソフトウェア」かと言えば俺は違うと思うから。
要は一部の「オタク」的な人間がハードウェアに依存した
部分でごちゃごちゃやってる部分はみたくないというか、
ソフトにとっちゃ本来はどうでもいいことじゃない?
これからは少しは変わるかも知れないけど、依然として
iLifeを使いたければMac上でなければならないし、Windowsで
使い勝手のよかったソフトはマック上で同じように動かすこと
ができないなんて、もしくは買い直せなんてユーザーにとったら
やっぱり何それって感じだと思うよ。
所詮はハードのおまけかと。
個人ユースだったらOSがバージョンアップするごとに
ソフトが動かなくなっても「好きで付いてきてるんだろ」的な
態度でもなんとかなるけどw、
企業向けじゃそうはいかないからな。
なぜJavaがこれほど社会的な基盤として、また企業の商売道具として
発展し続けているかといえば、ソフトはソフトだと言えるところに
俺はあると思ってる。だからこそオープンソースという勢力を巻き込んで
そのソフトを使用するのに今までウン万円も支払わなければいけなかったことが
変わりつつあるんじゃないかな。Eclipse しかり、OpenOffice しかり。
Objective-C をかじってみて気がついたのは、Appleは所詮ソフトを
Macのおまけとしかみてないんじゃないかってことなんだよ。
545:デフォルトの名無しさん
06/04/25 23:42:55
マルチプラットフォームがうれしいなら GNUstep でも使ったら?
546:デフォルトの名無しさん
06/04/25 23:50:26
>そしてある日、「それだったら、全部動的言語で良くね?」と悟る。
それは悟りじゃない。単に面倒くさくなっただけ。
動的言語を使用した方が良い局面が増えているのは事実だが、
一事が万事というのはプログラマ的じゃない。
547:デフォルトの名無しさん
06/04/26 06:56:48
プログラマ的発想から言えば、出来るだけ今あるものを使いたいと考える。
Objective-Cだってそういう発想から作られている。
でも今現在、出来るだけ今あるものを使おうとすると、Objective-Cはありえない。
JavaやC++の最大のメリットは型チェックでもクラス指向でもなく、使っている人が多いということ。
それとソフトがハードのおまけと考えてるのはAppleより、SunやIBM。
ハードを第一に考えるから、オープンソースに肩入れできる。
Appleも頑張っちゃいるが、Appleにとってはソフトも大事な売り物である以上、
全てをユーザーに委ねる訳にはいかない。
Xcodeがあれば俺は満足だけどね。
548:デフォルトの名無しさん
06/04/26 11:56:21
>>547
>それとソフトがハードのおまけと考えてるのはAppleより、SunやIBM。
IBM にとってはハードもオマケだろ。サービスで喰ってるんだから。
>ハードを第一に考えるから、オープンソースに肩入れできる。
RedHat みたいな企業の事はどうお考えで?
549:デフォルトの名無しさん
06/04/26 12:35:51
Objective-C の言語仕様や開発環境がどういうつーより
使用者が多いほうがえらい的な話になってるようなんで
別板いったほうがよくねすか?
Java や C++ に開発者がいっぱいいて資産がたくさんあって
うれしいならソレ使えばよろし。ここは「メモリを直接ドライブできるのに
動的結合できるなんて、ハァハァ」ていうひとのスレだと思うし。
550:デフォルトの名無しさん
06/04/26 13:27:32
俺は>>544が別スレなり板に行けばいい話だと思うな。
どうもCが嫌いみたいだから、C叩きスレとかに行けばいいと思う。
551:デフォルトの名無しさん
06/04/26 14:28:12
民主党、共産党と同じでなんでも叩きたいだけでしょ。
その場に応じて主張を変える所なんかもそっくりだし。
枯れ木も山の賑わい。
ほっとけばいいんじゃない?
552:デフォルトの名無しさん
06/04/26 21:19:11
>>547
ではなんで今あって、よっぽど使ってる人が多い言語の Cocoa-Java Interface を
Apple は捨てるんでしょうね?
Microsoft の .NET 戦略をみてもソフト会社だけあってか、ハードから
隔離させようとしてるのに、Apple は何でこんなマイナーで泥くさい言語にこだわるのか。
553:デフォルトの名無しさん
06/04/26 21:42:45
Cocoa-Javaはこれから先が無いにしても、Javaそのものを排除してるわけじゃなし。
まあAppleの戦略について、ここで語ってもしかたないべ。
ところでマイナーなのは間違いないが、Objective-Cは泥くさいか?
エレガントでスマートなコードを書いてる自信はないけどさ。
554:デフォルトの名無しさん
06/04/26 22:02:38
setValue:a forKey:b みたいな書き方、俺は好きだね。
setValueForKey(a,b)なんて泥臭くてw
555:デフォルトの名無しさん
06/04/26 22:09:15
>>552
ハードとは十分「疎」になってるでしょ。OPENSTEP は SPARC でも
動いてたんだから。Apple からしたら、Java の様に OS からも「疎」
にする必要は無いし、Objective-C で問題無いんじゃないの。
C の資産を丸ごと使えるわけだから、ユーザベースが少ない事が問題に
なるケースは少ないだろうし。
556:デフォルトの名無しさん
06/04/26 22:35:07
>>525
Mac OS Xネイティブアプリケーション開発用としては、Javaを捨てたってこと
でしょ。そんな余裕があったらCocoaの機能増やすし、JavaはJavaで
Cocoaに併せてる暇があったら、さっさと6.0に備える、ってことでしょ。
実際5.0 Release 4のリリースは困難を極めたわけだし。Developer Preview 7
まで行くなんていままで無かったぞ。
Java自体は開発しつづけないと、サーバOSとしての用途が恐ろしく限られて
しまうので、結構必死に開発してるようだが。
あとCocoa+Javaという形じゃなくて、Java側からJavaのやり方で、Cocoaの
ビューをAWT内で使う方法とかは作られてるね。Cocoa Componentとか。
557:デフォルトの名無しさん
06/04/26 22:36:46
つうか、PHP 4で大規模開発なんて、おれは関わりたくないな。
558:デフォルトの名無しさん
06/04/26 23:05:32
趣味でObjective-C使ってる自分には、>>554で十分だと思った。
そこは本質ではないんだろうけど。
559:デフォルトの名無しさん
06/04/27 08:37:51
Cocoaフレームワークに静的なJava言語が対応しきれないというのも原因なのかもね。
URLリンク(pcweb.mycom.co.jp)
560:デフォルトの名無しさん
06/04/27 10:47:22
つか、Sunの企業利益のために割く人的資源は無いって事だろ?
561:デフォルトの名無しさん
06/04/27 12:37:41
Cocoa+Javaは、引数が構造体や配列になっているメソッドがシカトされている事が多い。
機械的にバインディングを作れないので、力尽きたのでは無いかと思われ。
あとJavaのGCが動くタイミングで落ちる等の不具合が、とうとう直せなかったような気がする。
562:デフォルトの名無しさん
06/04/27 13:45:15
>>561
そういうバグがあったのか。
もしかしてそれって、
Cocoa+Java で(明示的に生成していない) NSAutoreleasePool でコケてたのと根は一緒?
563:デフォルトの名無しさん
06/04/27 20:32:38
わかった、Effective Objective-C が欲しいんだな、たぶん
564:デフォルトの名無しさん
06/04/27 20:51:24
>>564
それはすごく欲しい。
565:デフォルトの名無しさん
06/04/27 21:30:40
俺様が執筆してくれるわ
566:デフォルトの名無しさん
06/04/27 22:20:46
ははっ
567:デフォルトの名無しさん
06/04/27 23:03:42
Objective-C用単体テストフレームワークってありますか?
SmalltalkならSUnit、JavaはJUnitがありますが
568:デフォルトの名無しさん
06/04/27 23:07:04
OCUnitがXcode2(10.4)から添付されてる。他のもあたるなら
URLリンク(www.cocoadev.com)
あたり。
569:デフォルトの名無しさん
06/04/28 02:43:15
>>559
Cocoaの実用的な範囲であれば、リフレクションでなんとかなる。
ポージングとかの変態領域は、JDK7で予定されている動的クラス生成を待つ必要があるだろう。
570:デフォルトの名無しさん
06/04/28 02:47:10
Cocoa-Javaは、AppKitを使う上では制約が多かったが、既存のJavaライブラリを使う分には便利だった。
何をやるにも困らないぐらいのライブラリがあったし。
571:デフォルトの名無しさん
06/04/28 04:01:47
>568さんありがとっ!
572:デフォルトの名無しさん
06/05/01 08:08:13
>>547
>JavaやC++の最大のメリットは型チェックでもクラス指向でもなく、使っている人が多いということ。
激しく同意だなーこりゃ
573:デフォルトの名無しさん
06/05/01 08:11:04
じゃあ誰が使い始めるんだよ?w
574:デフォルトの名無しさん
06/05/01 09:25:49
最大のメリット以外に合致した人じゃないの。
一つしか言語を使っちゃ行けないわけでなし。
575:デフォルトの名無しさん
06/05/01 11:05:39
じゃあその最大のメリットって奴をどうやって計ったんだ?w
576:デフォルトの名無しさん
06/05/01 13:09:14
>>554
set(value := a, key := b)
と書かせる言語も幾つかあるね。
577:デフォルトの名無しさん
06/05/01 16:13:06
>>576
AppleScriptもレコード使えばそういうことができるな。
578:デフォルトの名無しさん
06/05/01 23:06:49
キーワード引数を取れるのは、Smalltalk, Common Lisp, Dylan, Self, Slate, Python
なんかがある。Lisp 系と Smalltalk 系で扱いはちょっと違うけど。
579:デフォルトの名無しさん
06/05/02 09:57:50
>>578
PL/SQLもいけるよ。
Oracleの拡張かもしんないけど。
580:デフォルトの名無しさん
06/05/02 10:05:55
PL/SQL自体がOracleの私物だろ
581:デフォルトの名無しさん
06/05/02 11:24:48
>>580
IBMやMSのサーバのストアードプロシージャは、PL/SQLじゃないの?
てっきりIBMのDB2がオリジナルで、ISOで標準化された物だと思っていたよ。
582:デフォルトの名無しさん
06/05/02 12:03:14
つ Wikipedia項目リンク
IBM DB2は SQL PL
MSは Transact-SQL
というところでスレ違い化してきたので、あとはぐぐって。
583:デフォルトの名無しさん
06/05/07 15:27:54
os x 10.4.6 で man gcc すると Leopard で garbage collection が追加されると
書いてあるという話...
うちでは man gcc-4.0 しないとダメだったけど。
URLリンク(theocacao.com)
584:デフォルトの名無しさん
06/05/09 19:12:24
>578
VBも仲間にいれてやってください・・
585:デフォルトの名無しさん
06/05/09 23:35:34
スマンね。Windows 系は殆ど知識無いんだ。
Smalltalk 系はメッセージ式の一部であり、構文拡張にもなるのが良いね。
単なる引数のラベルじゃない所が気持ち良い。
586:デフォルトの名無しさん
06/05/18 10:23:04
>>584
VB のは本質的に違うんじゃない?
もしそれが OK なら Perl や Ruby も OK になる
587:デフォルトの名無しさん
06/05/18 13:15:10
rubyの場合は、辞書が一時変数として作られるだけだな。
588:デフォルトの名無しさん
06/05/22 05:45:33 BE:18511766-#
マカーだけどこのスレちょくちょく購読させて貰うね
589:デフォルトの名無しさん
06/05/22 23:28:32
>>588
では早速はじめの一月分の金を払ってくださいw
590:デフォルトの名無しさん
06/05/23 00:12:11
マカーポーシャ
591:デフォルトの名無しさん
06/05/25 11:37:57
Smalltalk のはキーワード引数じゃなくてメソッド識別子の一部のような気がするけど・・・
いや、「気がするけど」じゃなくて「一部である」と強気に主張してみる。
592:デフォルトの名無しさん
06/05/25 14:13:47
そんな身構えなくとも、そうだと思う。Smalltalk のキーワードは、
セレクタの一部で分離、再配置はできない仕組み。
Objective-C も原則同じなのでは?
receiver do: #something for: #me
receiver …… メッセージレシーバ
do: #something for: #me …… メッセージ
do:for: …… メッセージセレクタ、もしくは、メソッド名
(前者はメッセージ寄りの呼び名、後者はメソッド寄りの呼び名。コロンも含める)
#something と #me …… 第1引数と第2引数
一般的な記法に当てはめると、
receiver.do:for:(#something, #me)
だから、LISP の機能の流れをくむキーワード引数とは別物。
593:デフォルトの名無しさん
06/05/26 09:15:09
キーワード引数ならPythonがよくできてる。
位置で指定することも、キーワードで指定することも両方できるうえに、
該当しないキーワードを自動的にDictionaryにいれさせることも可能。
例えばHTMLタグを生成するようなメソッドを定義するとき、知らないキーワードが指定されたら
それはHTMLタグの属性名だと判断して属性を出力する、なんてことができる。
スレ違いだけど、参考までに。
594:デフォルトの名無しさん
06/05/26 13:28:59
そりゃ便利そうだな。
と思ったが、メッセージ送信にそんなコストかけてらんないか・・・
595:デフォルトの名無しさん
06/05/26 13:52:28
>>594
存在しないキーワード付きの変数が現れたときに、
エラーにするかわりにmapを構築して渡すだけでそ。
コストはゼロでは?
596:デフォルトの名無しさん
06/05/26 16:35:54
Cocoaの場合、結構NSArrayやNSDictionaryを引数にするメソッドがある。
なので、NSStringみたいな初期化構文はあっても良いかもしれない。
配列
[self dispose:@[@"Basic", @"SQL"]];
辞書
[self assess:@{@"Basic" => @"garbage", @"SQL" => @"taint"}];
構文糖だな(--;;
597:デフォルトの名無しさん
06/05/29 15:20:11
[NSArray arrayWithObjects:@"Basic", @"SQL"];
これじゃダメなのかえ?配列の場合だけど。
598:デフォルトの名無しさん
06/05/29 15:22:12
nil入れ忘れた
599:デフォルトの名無しさん
06/05/29 16:08:02
>>597
それの省略構文に過ぎないから構文糖。
600:デフォルトの名無しさん
06/05/29 16:10:58
しかしまあ、@
601:デフォルトの名無しさん
06/06/24 00:58:44
すっかり廃れてしまったので、この記事を。
【境界を越える: Javaモデルを超える型定義戦略】
URLリンク(www-06.ibm.com)
安全性と柔軟性
静的言語か動的言語かという議論の要点は、ある意味で安全性対柔軟性か、という点に尽きます。
静的言語の支持者達は、より安全な言語が良いのだと信じています。
動的言語の支持者達は、安全性のために費やされる労力を嫌います。
彼らにとって言語を評価するための鍵は、プログラマーの効率を最大にするためにいかに
素早く概念を表現できるか、という点です。
そうしたスペクトル分布の対極として、静的言語のエキスパートは、初期のバグを捉えることが
『可能』ならば捉える『べき』であり、言語の持つ制限はツールで補える、と主張するのです。
皆さんはプログラミング言語のユーザーとして、良きにつけ悪しきにつけ、ある時点で
その言語の型定義戦略の奴隷となっています。
筆者は動的モエ〜らしいけど、
確かにO/Rマッピングとかやってると静的なのが面倒に感じる場合があるし。
ただ、言語である程度規定しないと静的な面の利点を享受できないから、
Objective-C は C との互換性やシンプルであれという思想からそれらの利点を捨てた時点で、
代替物が豊富にある Java の方がやはりプラットフォームとしての魅力はあるなあと。
逆説的に言えば、そうした利点を土台にしたからこそ、豊富な代替物を
引き寄せたとも言えるかもしれないね。
602:デフォルトの名無しさん
06/06/24 14:24:55
動的言語のスピードを生かしてプロトタイプを作り、
静的言語の安全性を生かして完成品を作る。
ってのが理想。
603:デフォルトの名無しさん
06/06/30 01:56:40
webで調べたら、C++のクラスをインスタンス変数で使うときの
制限がたくさん載っててびびった。
newすればコンストラクタも仮想関数も問題なしってことなの?
604:デフォルトの名無しさん
06/06/30 12:58:48
>>603
Tiger以降なら-fobjc-call-cxx-cdtorsつけとけばいいんじゃないの。
605:デフォルトの名無しさん
06/07/01 02:42:33
>>604
ググッたけど分からんかった。
objevtivecからc++のコンストラクタとデストラクタを呼ぶって意味なのかな?
とりあえず、純粋なC++コードが動作するってんならうれしいのだが。
606:デフォルトの名無しさん
06/07/02 09:25:41
>>604
>-fobjc-call-cxx-cdtors
URLリンク(developer.apple.com)
607:こぴぺ
06/07/04 17:31:53
Online会員もOKになってるよ。無料。
Cocoaセミナー中級編開催
7月11日(火)、8月1日(火)
URLリンク(developer.apple.com)
・書類とアプリケーションの間の関係の解説
・テキストファイルの読み込みとその表示
・Cocoaのデザインパターン
・XMLのパース
・配列、辞書といった、Cocoaのコレクションクラス
・テーブルビュー、アウトラインビューの使用方法
608:デフォルトの名無しさん
06/08/06 12:00:57
[self age];
609:デフォルトの名無しさん
06/08/08 04:22:52
Objective-C 2.0
So compelling, Apple wrote Xcode 3.0 itself in it.
Enjoy modern garbage collection, syntax enhancements, runtime performance improvements, and 64-bit support.
At your own pace, since it’s backwards compatible with existing Objective-C source.
Write applications more quickly with fewer bugs using Objective-C in Xcode 3.0.
だってよ。GC ついたらしい。
URLリンク(www.apple.com)
610:デフォルトの名無しさん
06/08/08 04:31:06
NHKは公共放送なのに公務員じゃないから採用は国籍不問。
だからNHKの司令塔であるNHK東京とNHK大阪は
上層部から制作現場・アナウンサーまで
「在日朝鮮人」「在日韓国人」「偽装帰化人」職員だらけ。
日本人関係者も韓国・北朝鮮・中国マンセーの創価・左翼(共産主義者)だらけ。
その結果、反日どころか売国放送ばかりする
さらに日本人から絞り取った受信料を使って
韓国に住んでる親類にタダで韓国ドラマを衛星放送してやっている。
だからNHKはスクランプル化に大反対。
日本国民の金を法権力で強制徴収してるのに
このまま外国籍人に好き勝手をさせていいのか?
ハッキリ言ってNHKの存在自体が主権在民を定めた憲法違反だ。
NHKや朝日などの売国マスコミ以外の
海外や日本の他の報道機関が既に過去に報道してバレてるカビの生えた古い事だけカキ集めて
あたかも自分だけがスクープしたかのような北朝鮮特番を恥知らずに放送するNHK。
「今まで私共NHKが隠蔽し握り潰して来た事実の集大成番組です」ってタイトルで放送すればピッタリだ。
日本社会と日本国民のNHKを見る認識と風向きが180度変わり
不安と恐怖にさいなまれて自分が韓国・北朝鮮・中国マンセーの「ポチ」じゃ無いと言い張り
アリバイ工作のハリボテ番組を必死で放送する恥知らずなNHK。
しかしもうそんな姑息で卑怯な言い訳やウソは通用しなくなっている事にさえ気付かない哀れなNHK。
でもどんな言い訳をしても売国奴の末路は悲惨なものだから覚悟しとけよNHK。
まさかそこまで追い詰められていたなんて知らなかったよNHK。
( ゚∀゚) アハハ八八ノヽノヽノ ヽ ノ ヽ ノ \ ノ \ / \ /
611:デフォルトの名無しさん
06/08/08 08:20:38
なるほど
612:デフォルトの名無しさん
06/08/09 03:51:55
やっと、GCC4.1.1+obj-c++の環境のコンパイルが完了。winの上でやっています。
さてと、昔NextStepでプログラミングをしていたので、マニュアルをひっぱり
だしてきてちょっとやってみますか。
ちなみに、「NEXTSTEP OBJECT-ORIENTED PROGRAMMING AND THE OBJECTIVE C
LANGUAGE」という本がありますが良い本ですよ。
もう売っていないでしょうけど、オブジェクト指向の本質的なことがうまく
書いてあります。
私は、C++もかなり長いことやっていて思いますが、C++はやはり言語仕様的
には強力なものがあり、加減を忘れるととことんまで機能を使いながらコー
ディングをしてしまいますが、アプリケーションの性質に応じてその機能を
使い方をどこまでにすれば良いのか判断にあぐねることが多いですね。
よくあるのが、多重継承をしまくると保存と読み出しの際に元に戻せなく
なったりします。これはjavaのinterface や、objcのprotocolやcategory的な
機能がなかったりするために基底型から目的のポインタを得るのに大変苦労
をします(C++の仮想基底型は本当のインターフェースとは異なると思います)。
そういう意味でオブジェクト指向といいながら、最後は型がはっきりわかる
javaやobjcのほうが現実には使いやすい言語じゃないかと思ったりもします(
アプリを作るというのは最後は小細工が必要なんです)。
さて、objc++を少しさわってc++のはかなさでも味わいますか....。
613:デフォルトの名無しさん
06/08/10 00:28:27
>612
またObjective-Cのために?gcc4系ってのは(汗。さすが。
で、その本なんだけど、AppleがRhapsodyの時に日本語PDFファイルで配布してたやつと大体一緒のやつかな?
しかしObjective-C 2.0ってGCとかどうでもいいんだけど(実質今のGNUstepでもアリだしさ)、言語仕様の拡張というかsyntaxが拡張されるっつーのが気になるなぁ。
BlockClosureとか使えるようにすんのか?とりあえずC++的な鵺には並んでほしいとこですが。
実際の仕様が貧乏人に公開されるのはもっと先だろうしなぁ。
614:デフォルトの名無しさん
06/08/10 14:20:32
>613
セットで、匿名ブロックが欲しい。
アレが無いと、クロージャの魅力が半減する。
615:デフォルトの名無しさん
06/08/10 19:42:14
>>614
今のObjective-Cにクロージャってあったっけ?
あれはGCがないとちゃんとした実装は難しいと思うのだが。
616:デフォルトの名無しさん
06/08/12 03:40:17
>>613
612です。たぶん、一緒でしょう。少し改定されていると思いますが。
OBJC-2.0といってもnamescopeもないし、ただ、C++と混在できるだけ。
やっぱりnamescopeがないのが一番困る。それとクラス静的変数を用意
してほしい。
クロージャについてはないですね。もともとベースがC++,Cなので難
しいでしょう。でも、GCCのC(C++にはない)の内部関数が使えるという
ことはパスカルスタックを実現しているはずなので、JAVAでいうロー
カルクラスによるクロージャチックなことが出来そうにも思うのですが
....。もう少しみてみないとわかりません。
でもクロージャが使えるようになると、もう違う言語ですね。GDBが追い
つかないように思います。そろそろOBJCもC#みたいに大変身するかも。
617:デフォルトの名無しさん
06/08/12 08:31:59
>>613
>AppleがRhapsodyの時に日本語PDFファイルで配布してたやつと大体一緒のやつかな?
nyとかで流れないものかなぁ。
618:デフォルトの名無しさん
06/08/12 09:02:48
まずAppleに頼むのが筋だろう。
619:デフォルトの名無しさん
06/08/12 16:35:23
>>617
どっかでひろった PDF もってるけど、基本的にいま Apple が配布してる
URLリンク(developer.apple.com)
とおんなじだよ。図版もずっとつかいまわしで、はじめにでてくる時計の絵とかも全く一緒。Apple 版のほうがページ数すくなかったりしますが、
それは
URLリンク(developer.apple.com)
とか
URLリンク(developer.apple.com)
が切り出されて説明が加わってべつのドキュメントになってるから。
620:デフォルトの名無しさん
06/08/12 16:39:14
あとはこの辺
URLリンク(www.channelu.com)
とか Sun のこの辺
URLリンク(docs.sun.com)
とか GnuStep の
URLリンク(www.gnustep.org)
とか。
621:デフォルトの名無しさん
06/08/12 21:48:45
>>619
Appleが翻訳した日本語版は
URLリンク(developer.apple.com)
で、その中に
Obj-C
URLリンク(developer.apple.com)
とか
Cocoa基礎ガイド
URLリンク(developer.apple.com)
などあるね。
622:デフォルトの名無しさん
06/08/12 22:31:08
ObjCの翻訳はちょい古くてIntelの話が無い。
まぁドラフトとれ次第、2.0をやってくれるだろ。
623:デフォルトの名無しさん
06/08/13 00:08:39
>>622
>まぁドラフトとれ次第、2.0をやってくれるだろ。
つまり「泳げる頃には」読めるんですな(苦笑)
624:デフォルトの名無しさん
06/08/13 15:47:52
何の情報も持たず、憶測で断言してる人ってなんなの?
625:デフォルトの名無しさん
06/08/13 15:50:37
>624は
>616のことね。
626:デフォルトの名無しさん
06/08/13 21:05:11
>>616が何を断言したって?
627:デフォルトの名無しさん
06/08/13 22:30:29
WWDC行ってる人もいるでしょ。616が行ったかどうかはわからんけど。
628:デフォルトの名無しさん
06/08/14 00:13:16
で、クロージャは付くのか?
629:デフォルトの名無しさん
06/08/14 00:50:02
WWDCの内容はしゃべれないんだよな
いつになったら情報でてくるのか
630:デフォルトの名無しさん
06/08/14 08:36:49
WWDCででた情報はしゃべれなくても、でてない情報はしゃべれるだろ。
WWDCでクロージャの話はでた?
631:デフォルトの名無しさん
06/08/14 09:28:18
>>630
ワラタ
GC って Boehm GC なの?
それともオリジナル?
632:デフォルトの名無しさん
06/08/14 09:52:46
>>631
以前出てた情報ではオリジナル。
633:デフォルトの名無しさん
06/08/14 13:05:07
>>616
Javaの匿名クラスはクロージャ風味を目指しているけど、準備と構文が煩雑すぎて愛されなかった。
C# 2.0の匿名ブロックぐらいが使い物になる境界線だと思う。
Java 7にも、ほぼ同じ構文が入る事になってる。
Objective-Cの場合、事前にInterfaceやdelegateを宣言する必要が無いと思うので、実装されれば幸福度は高いと思う。
634:613
06/08/14 15:13:33
>616
なるほど。あれのコラムとかは結構勉強になったもんす。
後のCocoa本(オライリーから翻訳でたけど)よりよっぽどこっちの方が役に立ったというか(笑)
Appleからは当時のオリジナルはないけど、NeXT絡みのサイトを調べるとまだ拾える所があったりするから不思議(笑)
個人的にはObjective-C 2.0ってGNUの方でも対応できるのだろうか?(GNUstepどうなるよ?)が今一番大きな心配だったり(笑)
635:デフォルトの名無しさん
06/08/14 17:46:50
Apple の runtime が必要になるから、簡単にはいかないよ (笑)
636:デフォルトの名無しさん
06/08/14 19:51:15
Apple runtime って、 opendarwin だったかなんかで
公開されてなかたっけ?
URLリンク(www.opensource.apple.com)
637:デフォルトの名無しさん
06/08/15 03:23:23
なんでもいいからNameScopeだけでも導入してくれ。いまや何でもかんでも
クラス化するのにグローバルにしかクラスが定義できないなんて最低だ。
使えん。クロージャなんかなくてもかまわん。
あと、Undoのマネージメントの仕組みも導入してほしいな。完璧でなくて
いいが、モデルがほしい。
638:デフォルトの名無しさん
06/08/15 03:51:42
>>632
サンキュ。オリジナルなんだ。実装の詳細を見られるのが楽しみだ。
639:デフォルトの名無しさん
06/08/15 04:43:35
>>637
だれもつっこんでないからいうけど、NamescopeじゃなくてNamespaceな。
日本語でいうと名前空間。
しかしNamescopeはなかなかいい造語のように思える。おまえ、センスあるよ。
640:デフォルトの名無しさん
06/08/15 04:52:18
カスを下手に誉めるとつけ上がるのでやめとけ。
641:デフォルトの名無しさん
06/08/15 12:33:30
URLリンク(www.cocoadev.com)
腐敗臭がする。
642:デフォルトの名無しさん
06/08/15 13:56:53
>>637
つけあがらないようにつっ込んでおくが、Undoの仕組みはかなり前に導入されたぞ。
Cocoaのクラス一覧を良く眺めてミロ。
643:デフォルトの名無しさん
06/08/15 17:00:00
Namescape
644:デフォルトの名無しさん
06/08/18 03:39:01
>>642
あんなもの使えん。おまえ、本当にアプリつくっているの?
645:デフォルトの名無しさん
06/08/19 07:35:44
>>644
俺はそれを使った事ないんだが、どうダメなのか簡単に。
646:デフォルトの名無しさん
06/08/28 10:44:52
誰かObjective-C 2.0の情報をまとめて下さい。
647:デフォルトの名無しさん
06/08/28 11:12:04
OSにつかわれてこそのプログラミング言語
648:デフォルトの名無しさん
06/08/29 04:10:16
OS って Kernel の事を指してる?
649:デフォルトの名無しさん
06/08/29 14:46:03
OSといってんだからOSだろ
650:デフォルトの名無しさん
06/08/29 17:33:49
Kernelの記述に使われてる言語ならほとんどはC言語とアセンブラかな。
ごく一部でC++もあるらしいけど。
651:デフォルトの名無しさん
06/08/29 17:57:10
macosx は、objc でかいてあるの?
652:デフォルトの名無しさん
06/08/29 20:59:31
objcがmacosxでかかれているよ
653:デフォルトの名無しさん
06/08/30 16:53:35
>>649
そうだとすると Objective-C も使われてる事になるね。
あとは Perl, Python, Java 辺りも。
Kernel だけなら、C, C++, ASM, m4 くらいかな。
654:デフォルトの名無しさん
06/08/30 18:40:16
Perl,Pythonって、どのOSにつかってるのか?
655:デフォルトの名無しさん
06/08/30 23:28:12
あ、sh を忘れてた。
656:デフォルトの名無しさん
06/09/03 03:40:41
>>645
YouOSあたりじゃない?
657:デフォルトの名無しさん
06/09/04 11:01:17
GNUstepをインストールしてみたんだけどObjective-C(・∀・)イイ!ね、
FoundationKitのソースをざっと眺めてみたんだけど読みやすくて何をしてるかすぐ分かって最高。
美しいって素晴らしい。
658:デフォルトの名無しさん
06/09/06 23:55:16
>>12
[>>1 autorelease];
で勘弁してあげて。
659:デフォルトの名無しさん
06/09/07 00:30:20
[self age];
660:デフォルトの名無しさん
06/09/07 09:02:47
Messageの一個目のパラメータに名前付けらんないのって
なんのいやがらせですか?
661:デフォルトの名無しさん
06/09/07 10:39:15
いや。それって、アンタの理解が間違っているだけですから……。
662:デフォルトの名無しさん
06/09/07 14:08:01
今日の議題
* メソッド名の一部をパラメータの名前だと勘違いしている件について
663:デフォルトの名無しさん
06/09/07 16:00:18
Objective-C の [ ] の中の文法(つまるところ Smalltalk の文法なんだけど…)は、原則として、
receiver message
というように、メッセージを受け取るオブジェクト(receiver)と、それに送るメッセージ
(message)をスペースなどで区切って記述する。
さらに、メッセージは、セレクタと0個以上のパラメータ(引数)で構成される。
セレクタはパラメータの数だけ : (コロン)を含み、メッセージとして記述する際には、
それぞれのコロンの後にパラメータ+スペースを挿入する特殊な記法をとる。たとえば、
receiver foo:arg1 bar:arg2
なら、メッセージは「foo:arg1 bar:arg2」、セレクタは「foo:bar:」。
コロンをひとつでも含むときは、セレクタは、かならずコロンで終わらせなければいけない。
換言すると、パラメータがあるときは、メッセージは必ずパラメータで終わる。したがって、
「foo:bar:baz」のようなセレクタや、それを含んだメッセージ(foo:arg1 bar:arg2 baz)は
使用できない。
なお、セレクタは、メッセージ送信の結果、起動することが期待されるメソッドの名前でもある
(両者は一致する)。
また、foo や bar を「キーワード」と呼ぶことがあるが、これはあくまで便宜的なもので、
言語仕様上、そうしたエンティティがあるわけではない(それらは結局、セレクタ、あるいは、
メソッド名の一部に過ぎない)。
664:デフォルトの名無しさん
06/09/08 11:45:28
Cocoaセミナーのムービーに中級編追加
URLリンク(developer.apple.com)
665:デフォルトの名無しさん
06/09/08 18:07:49
Objective-CでネイティブなWindowsアプリって作れる?
666:デフォルトの名無しさん
06/09/08 21:18:17
作ろうと思えば作れる
667:デフォルトの名無しさん
06/09/08 21:53:26
>>665 そのネイティブってどういう意味だ? 質問の前にもっと勉強が必要だな。
668:デフォルトの名無しさん
06/09/09 00:12:26
ObjCで使いやすいHTMLパーサってある?
別にCとかC++でもいいけど、Javaは嫌。
669:デフォルトの名無しさん
06/09/09 11:49:38
>>665
StepStone
670:デフォルトの名無しさん
06/09/10 09:46:15
>>669
StepStone社ってまだあるんか?
671:デフォルトの名無しさん
06/09/11 20:41:25
[self age];
672:デフォルトの名無しさん
06/09/11 20:43:22
さげちまった
673:デフォルトの名無しさん
06/09/15 18:47:44
[self hoshu]
674:デフォルトの名無しさん
06/09/16 09:42:36
[self sex:self]
675:デフォルトの名無しさん
06/09/16 11:08:36
/* おなにーかよ */
676:デフォルトの名無しさん
06/09/19 00:57:05
[self age];
677:デフォルトの名無しさん
06/09/19 01:29:36
Objective-C 2.0ではガーベッジコレクションが追加されるのかな〜。
知ってる人いたら教えて。
678:デフォルトの名無しさん
06/09/19 02:22:40
Objective-C 2.0
アップルは、魅力あふれる Xcode 3.0自身を使ってXcode 3.0を開発しました。
最新のガベージコレクション、強化された構文と改善されたランタイムパフォーマンス、
64ビットサポートをお届けします。
既存の Objective-Cソースとの下位互換性も備えているため、
自分のペースで作業を進めることができます。
Xcode 3.0のObjective-Cを使って、バグを減らしながらすばやくアプリケーションを記述できます。
679:デフォルトの名無しさん
06/09/19 18:26:27
プロパティってどうよ?
680:デフォルトの名無しさん
06/09/19 19:00:50
もうちょい具体的に
681:デフォルトの名無しさん
06/09/19 19:48:48
>>679-680
ワロタ
682:デフォルトの名無しさん
06/09/19 19:53:31
おそらく、2.0で追加される@propertyコンパイラディレクティブのことでないかと。
683:デフォルトの名無しさん
06/09/19 20:07:18
785 Name: 4/7 [sage] Date: 2006/09/12(火) 21:29:33 ID: TiBUhRpI0 Be:
他にもプロパティに指定できる属性がある。便利なのがivarだ。こいつはプロパティを指定した
名前のインスタンス変数にマッピングするものだ。
(コード。プロパティの属性ivarの例)
@interface Bar : Object
{
int iVar;
}
@property(ivar = iVar) int FooBar;
@end
getterやsetterのメソッドも別に指定することができる
(コード。プロパティのアクセサメソッドを個々に指定する)
@property(getter = whatBaby, setter = setFire:) id baby;
684:スマソ、こっちが先だ
06/09/19 20:08:43
784 Name: 3/7 [sage] Date: 2006/09/12(火) 21:28:49 ID: TiBUhRpI0 Be:
【プロパティ】
これはオレが見つけた中では追加された最大のものだ。こいつはグルーコードを書くために
費やす時間やコード量を節約してくれる。
Rubyの属性(attributes)のようにObj-C 2.0ではクラスのプロパティを定義することができる。
んでもって、プロパティの属性(nocopy, readonly, readwrite. etc)を指定すれば、コンパイラは
その指定に従ったKVC準拠のアクセサを生成する。もしそうしたければ、アクセサである
setVar:やvarメソッドをオーバーライドすることもできる。
(長いのでコード省略。属性無指定のプロパティとreadonlyのプロパティの例、アクセサのオーバーライド)
で、見りゃわかることはこんなことだ。
・プロパティは.(ピリオド)でアクセスできる。かんたんインスタンス変数アクセス(訳注:あとででてくる)は
->を使うことをヘンに思うかもしれんが、これはKVCとは関係ないってことで納得しとこう。
・デフォルトのプロパティの実装は、文字列みたいなオブジェクトすら"do the right thing"で扱ってる
ように見える。set時にコピーして、自分自身の解放時にもちゃんと解放するみたいだ。
少なくともdeallocのテストは見当たらないな。
・当たり前だがGroupオブジェクト中のPersonオブジェクトは初期化しなくちゃいけない
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4855日前に更新/229 KB
担当:undef