オブジェクト指向を教えてくれ!

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2021/03/16(火) 17:06:02.41ID:VhqTt897
オブジェクト指向について、調べれば調べるほど疑問が募ります。低レベルで粗末な疑問かも知れませんが、ご教授願いたいです。

・データと振る舞いをまとめる?
まとめると何か良いことあるの?
ファイルあるいはモジュールにはまとまってるよね?
丁度いい単位があるのに、何故わざわざオブジェクトという概念を導入するの?
(Javaには1ファイル1クラスという文化あるらしいけど)

・カプセル化?
モジュールのimport, exportでも実現出来るよね?
(構造体などへのアクセスを制限できれば)

・ポリモーフィズム?
別にデータと振る舞いをまとめなくても実現出来るよね?

・モノのように扱いたい?
モノとして扱いたいときに扱えば良くない? なんでわざわざ全てをオブジェクトにするの?
717デフォルトの名無しさん
垢版 |
2021/04/11(日) 07:57:06.87ID:0+LhiyyI
>>716
いいか?
ボタンをクラスにするのではない
「ボタンの状況」を把握するクラスを作ること
それが最初から言われている大条件だが
日本語苦手なのかな?

で、俺はスマホでスクロールの話をしたとき
お前は「原理は全く別のもの」と吹っかけた
では原理的に何がどう違うのか説明して貰おう
否定すると言うことは当然理解もしているし
こうだから違うと言うことを自分が
理解していて説明出来るからという解釈でいいんだよな?
2021/04/11(日) 08:13:48.85ID:CjAFb9gH
>>717
話をすり替えるな

>>675
>「ボタンを押している状態」
>をクラスにしてしまうと
>プログラムが無茶無茶になる
2021/04/11(日) 08:14:43.87ID:CjAFb9gH
680 名前:デフォルトの名無しさん[sage] 投稿日:2021/04/10(土) 18:35:00.78 ID:edMGid1M [2/4]
>>679
それ「ボタンを押してる状態」をクラスにしてる?

681 名前:デフォルトの名無しさん[] 投稿日:2021/04/10(土) 18:52:25.48 ID:GLiDRYw8 [2/6]
>>680
そうだよ
2021/04/11(日) 08:18:42.29ID:CjAFb9gH
「ボタンの状況」を把握するクラスっていうのも意味不明なんだよな
イベントドリブンをしらないのか?
ボタンは状況が変わればそれをイベントとして通知する
それはハードウェアやドライバレベルで処理する話なの

いちいちフレーム単位でボタンの状況を
スキャンしたりしないの
721デフォルトの名無しさん
垢版 |
2021/04/11(日) 08:19:04.30ID:0+LhiyyI
>>718
何もすり替えていない。
「ボタンを押している状態」のクラスを作ることだろ?
ボタンが別のオブジェクトになるとか
さっきから何の話をしているんだ?

俺からするとお前の方が回答したくなくて
話を逸らしているように見えるんだが?
なぁ、早く答えてくれよ
2021/04/11(日) 08:22:01.88ID:CjAFb9gH
> 「ボタンを押している状態」をクラスにする

> 「ボタンの状況」を把握するクラスを作ること


この2つが区別つかないようじゃ話にならんなw
723デフォルトの名無しさん
垢版 |
2021/04/11(日) 08:25:38.30ID:0+LhiyyI
>>722
「ボタンの押している状態」
「ボタンの押している状況」
「ボタンの状況」
俺からすれば言葉遊びのように見えるが
では何がどう違うのか説明してくれ
2021/04/11(日) 08:28:12.36ID:CjAFb9gH
> 「ボタンを押している状態」をクラス
ButtonPressedClass

> 「ボタンの状況」を把握するクラスを作ること
ButtonStateScannerClass

ぜんぜん違うだろ
725デフォルトの名無しさん
垢版 |
2021/04/11(日) 08:36:11.20ID:0+LhiyyI
>>724
馬鹿か?
ボタンのイベント処理そのものをクラスにするなんて常識としてあり得ないだろ?
そういう言葉遊びはもう沢山だから
キチンとボタンの状態を管理する話から話を逸らすなよ。
で、スクロールの件は?早く答えてくれよ。
2021/04/11(日) 08:37:59.54ID:CjAFb9gH
> ボタンのイベント処理そのものをクラスにするなんて常識としてあり得ないだろ?
誰もそんな話はしてない
どこをみて「ボタンのイベント処理そのものをクラス」と
書いてあると思ったのか?

そして>>724へのレスはなし。
都合の悪いレスは無視して違う話を始めるw
727デフォルトの名無しさん
垢版 |
2021/04/11(日) 08:45:17.73ID:0+LhiyyI
>>726
>>724ぬ対してのレスは見えなかったことになってるのか
ButtonPressedClassって
どう見てもボタン押下しましたクラスだが
それはボタンを押下したイベントを司るクラスでないなら何のクラスなんだ?
こっちからしてみるとそっちの言ってることはさっきから支離滅裂なことにしか見えないんだが?
2021/04/11(日) 08:50:34.59ID:CjAFb9gH
> どう見てもボタン押下しましたクラスだが
> それはボタンを押下したイベントを司るクラスでないなら何のクラスなんだ?

ボタンが押された状態のクラスだろ
なんでもう押されてしまった状態なのに
ボタンを押すイベントを司らなければならないのか
ボタンを押すイベントが発生した後のクラスだろうに
はぁ英語も通じないのか・・・
729デフォルトの名無しさん
垢版 |
2021/04/11(日) 08:56:03.31ID:0+LhiyyI
>>728
そのボタンが押された後に発生したクラスで何をやっているのか?
押された後の状態管理で有れば>>724で言っている下のクラスとは何が違うのか?
730デフォルトの名無しさん
垢版 |
2021/04/11(日) 08:59:35.24ID:7+Z1QVDQ
チンポという主体意思決定存在(サブジェクト)を、オブジェクト指向で表現するということなんだが?

>>695
>「〜が」の時点で主語(サブジェクト)だから、それはサブジェクト指向やぞ

カンタンに表記すれば、
Subject = 法則,
Object = (法則によって規定される)集団
になるんでしょう。
これをコンピュータのプログラミングに当てはめると、
Subject = コンピュータの処理方法,
Object = プログラマが設定可能な部分
になるんではないかと。
https://note.com/nephews_tech/n/n02380a2cc0e3
2021/04/11(日) 09:01:34.10ID:CjAFb9gH
>>729
> そのボタンが押された後に発生したクラスで何をやっているのか?

>>716より
> それに「オブジェクトを押した状態」をクラスにするのが
> アホ設計って話をしてるよね

「ボタンが押された後に発生したクラス」なんてのを
作るのがアホと言ってる俺に聞くなアホ
2021/04/11(日) 09:03:59.94ID:CjAFb9gH
> >>724で言っている下のクラスとは何が違うのか?

それはお前が「ボタンを押してる状態のクラス」と聞いて
「ボタンの押してる状態を把握するを把握するクラス」と勘違いしたものだろ
お前が想像で作り出したものなんか知らんわ
733デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:07:23.17ID:7+Z1QVDQ
>>718
ここで話を本質に戻すと、もしチンポをクリントンのインナークラスとして固定してしまうと、

>>626
>人格は乗っ取られているかも知れないがそれはクリントンの状態変化であって

『チンポに人格を乗っ取られた【状態】のクリントン』を【再定義】【継承】が不可欠ということだ!
734デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:07:31.72ID:0+LhiyyI
>>731
なんだ結局>>724で言ってたものの上下は
言葉を変えただけの言葉遊びか
735デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:10:06.68ID:0+LhiyyI
>>732
まぁいいや何が言いたかったかは大体分かった。
後はスクロールの件だけ答えてくれればいいや。
2021/04/11(日) 09:10:12.49ID:CjAFb9gH
>>734
どこを読んで言葉遊びだと思ったの?
全く違うものであるといったよね?

「どこを読んで同じものだと思ったの?」
次のレスはそれだけ言えばいいよw
2021/04/11(日) 09:10:32.38ID:CjAFb9gH
> 後はスクロールの件だけ答えてくれればいいや。
すでに返答済み
738デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:15:12.83ID:0+LhiyyI
>>736
結局ボタンを押した後に行うのは
それに対しどう状況が変化するのか
管理するものへの設定だけだろ?
名前が違うだけでやることは同じだからな
だから言葉遊びと言ったんだ。

>既に回答済み
ああ、あの「そのように作ればいい」ってやつね。
はいはい
739デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:25:57.00ID:7+Z1QVDQ
オブジェクトの更新処理
一般にゲームは、時間の経過とともに状態が変化します。
その時間経過による状態の更新を、BattleクラスのUpdate()メソッドで処理することとします。
そして、BattleクラスのUpdate()の中で、各BattleObjectのUpdate()を呼びます。
https://developer.aiming-inc.com/programming/design-battle-program/
740デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:34:53.14ID:7+Z1QVDQ
バトル通信ラグ軽減のための「武器持ち替え廃止論」コメント 1件

アイミョン
[KS108-054]
テーマ:バトル2020/09/20 15:47
https://hiroba.dqx.jp/sc/forum/pastthread/413734/

>現在できている操作ができなくなってしまう可能性もあるため

武器持ち替えは操作が無駄に多くなるし行動ターンを浪費するので、無くしてしまっても問題無いと思います。

https://i.imgur.com/U4jgmc3.png
741デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:45:39.75ID:0+LhiyyI
>>739
お、いつもチンポチンポ言ってるけど
こういうのの反応は早いのね。
ちょっと見直したよ。

ちょっとC++は忘れたけど時間経過と言うか
確か走査線が一画面分走ったときに起る
VSYNC割込みが使えたんじゃなかったかなー
まぁその辺の単位で処理しているのは違いないよ
ネットでの他者との同期は俺もそこまで詳しくないけど
他のPCとの同期は2台だけでもかなりややこしかったからね
後で色々起きるのも理解出来るよ。
742デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:53:24.21ID:7+Z1QVDQ
状態変化といっても、オシッコするときのチンポはインナークラス、勃起・射精するときのチンポはサブクラス。

>BattleクラスのUpdate()メソッドで処理することとします。

オンラインゲームのバトルはごくシンプルに、同一人格の状態変化はインナークラスが良い。

928 デフォルトの名無しさん 2018/11/21(水) 18:59:11.61 ID:8Yc2p7H1
>>922
>ナンチャッテメッセージングスタイルになったのは

チンポ.オシッコを出す
チンポ.オシッコを止める

さっきトイレでやってきた。


929 デフォルトの名無しさん 2018/11/21(水) 19:07:17.83 ID:8Yc2p7H1
>>915
>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。

×
俺.オシッコを止める 俺.オシッコを出す

俺.チンポに力を入れる 俺.チンポから力を抜く
2021/04/11(日) 09:56:07.22ID:dlO5vcSm
君たち日曜の朝からなにやってんのwww

>>687
とりあえず「状態をクラスにする」の意味が分かってないことは良くわかった
誰も問題にしてないことに対して頑張って反論してたわけね
744デフォルトの名無しさん
垢版 |
2021/04/11(日) 10:14:46.71ID:0+LhiyyI
>>743
まぁお前はその入口にすら立てていないことも解ったけどな
2021/04/11(日) 10:20:51.36ID:dlO5vcSm
>スクロールする枠とスクロールを検知する枠が異なる場合

検知するというのがスクロールイベント自体を作成することを言ってるのか
それともスクロールイベントをハンドリングすることを言ってるのかわからないな

前者ならスクロールされた枠がスクロールイベントを発行すればいいだけなのに
別のところでスクロールされた枠用のイベントを発行する意味がわからない
後者ならごく一般的なことなので何を問題にしてるかがわからない

とかいっても無駄かな
746デフォルトの名無しさん
垢版 |
2021/04/11(日) 10:29:15.53ID:0+LhiyyI
>>745
というかお前はまずスマホのタッチとかスライドとかどうなってんのとか、
昨日も言ったけどコンピュータとは何か、から勉強しような。
自分の後輩なら手取り足取り教えるけど
スクロールイベントがどうのなんて言ってる時点で本質が全く見えていないのミエミエだから
747デフォルトの名無しさん
垢版 |
2021/04/11(日) 10:32:01.65ID:0+LhiyyI
話続きだったな
自分の後輩なら手取り足取り教えるけど
そんな義理は全くないから。
ましてや質問者じゃなくて教える立場として
このスレに来ているなら尚更。
748デフォルトの名無しさん
垢版 |
2021/04/11(日) 11:17:29.99ID:7+Z1QVDQ
ボタンが押されたか離されたかってのはともかく、

>>712
>なら画面が動いている最中に
>ボタンが押されたばかりか離されたか
押しっぱなしか押してないかどう検知するんだよ?

オンラインゲームでバトルキャラが死んだか否かってことでの『死亡ラグ』は珍しく無いぞ?

他のプレイヤー視点では既に倒れている。しかし、遅れているので自分では分からないためいきなり何も
ないところで死ぬ。また、デスマッチなどでは既に死んでいるため、自分が動けてもリスポンされていたり
して無敵時間が無くなり、復活した瞬間に倒されることもある。
自分がいつ死んでいるのか分からず突然死んで突然画面が切り替わってしまう。その結果キルログを注視してしまいゲームを楽しめなくなってくる。
https://gamingpcs.jp/knowledge/kankyou/kaisenhuguai/
749デフォルトの名無しさん
垢版 |
2021/04/11(日) 11:37:53.31ID:7+Z1QVDQ
オシッコを出している状態と、オシッコを止めている状態、インナークラスのメッセージング処理だなw

724 デフォルトの名無しさん sage 2021/04/11(日) 08:28:12.36 ID:CjAFb9gH
> 「ボタンを押している状態」をクラス
ButtonPressedClass

> 「ボタンの状況」を把握するクラスを作ること
ButtonStateScannerClass

ぜんぜん違うだろ

250 デフォルトの名無しさん sage 2021/03/21(日) 16:00:54.94 ID:rWfpUSZ4
状態をオブジェクトにするな
は昔からよく言われている
「ボタンを押している状態」
をクラスにしてしまうと
プログラムが無茶無茶になる
「モノ」をオブジェクトにする
これがオブジェクト指向の本質
750デフォルトの名無しさん
垢版 |
2021/04/11(日) 11:47:01.37ID:7+Z1QVDQ
さっきトイレでオシッコを出したり止めたりしていたが、

>オンラインゲームでバトルキャラが死んだか否かってことでの『死亡ラグ』は珍しく無いぞ?

オシッコを出したり止めたりするのに、脳とチンポで『通信ラグ』を感じたのは、自分だけたろうか???
751デフォルトの名無しさん
垢版 |
2021/04/11(日) 12:31:55.97ID:7+Z1QVDQ
インナークラスを用いたメッセージングによる状態操作、イベントドリブンによる割り込み処理と通信ラグ、
それはトイレでオシッコを出したり止めたりして、脳とチンポで必ずしも『同期』が取れるかという問題だ。

728 デフォルトの名無しさん sage 2021/04/11(日) 08:50:34.59 ID:CjAFb9gH
> どう見てもボタン押下しましたクラスだが
> それはボタンを押下したイベントを司るクラスでないなら何のクラスなんだ?

ボタンが押された状態のクラスだろ
なんでもう押されてしまった状態なのに
ボタンを押すイベントを司らなければならないのか
ボタンを押すイベントが発生した後のクラスだろうに
はぁ英語も通じないのか・・・
752デフォルトの名無しさん
垢版 |
2021/04/11(日) 12:42:55.74ID:7+Z1QVDQ
プログラミング言語の性能差
主な言語とスループット
言語 スループット 特性 C/C++ 100 静的言語 ネイティブコード Java 1〜10 静的言語 VM バイトコード Ruby/Python 0.1〜1 動的言語
オンラインゲームのサーバではC/C++が最も使われる
http://www.wata-lab.meijo-u.ac.jp/file/seminar/2013/2013-Semi1-Atsushi_Somekawa.pdf

オンラインゲームでは『メッセージング』なんて当たり前なのに、いつの時代の話をしているのかな?

701 デフォルトの名無しさん sage 2021/04/11(日) 07:11:59.27 ID:CjAFb9gH
>>700
だから既存のものはどうなってるかって聞いたんだよ
どれもゲームのようにはなってないだろ?

YAGNIって知ってるか?出来るかどうかの話はしてない。
必要ないのに無駄な汎用性をもたせるなという話
それともゲーム並みに無駄な汎用性をもたせるといい理由でもあるか?
753デフォルトの名無しさん
垢版 |
2021/04/11(日) 13:13:51.27ID:7+Z1QVDQ
オブジェクト指向には、大きく分けて2種類ある。

1 インナークラス(オシッコをするときのチンポ)
ネットワーク、メッセージング、イベントドリブン、同期処理・・・
2 サブクラス(勃起・射精するときのチンポ)
自然言語処理、人工知能・・・

世界初のパーソナルコンピュータであるApple Iと、キーボードやメモリ、CPU、画像出力装置、外部記憶装置、
音声出力装置とのインターフェース、プログラム言語などのオールインワンパッケージ化を可能にした
最初のコンピュータであるApple IIの開発を1人で成し遂げたのもスティーブ・ウォズニアックです。
https://engineer-shukatu.jp/column/archives/26603


インターネットも人工知能も無い1980年代のプログラミングは、いかにメモリを節約するかということだった。
演算処理をいかに早く正確に行うかが全てであって、オブジェクト指向がどうこうという議論は無かったはずだ。
近年のオブジェクト指向を意識したシステム開発は、インターネットと人工知能が背景にあり、従って、
チンポ【が】シコシコするという、新しい言語パラダイムが求められているということだ。
2021/04/11(日) 16:03:38.54ID:CjAFb9gH
>>748
> 押しっぱなしか押してないかどう検知するんだよ?
>
> オンラインゲームでバトルキャラが死んだか否かってことでの『死亡ラグ』は珍しく無いぞ?

だからお前はゲーム脳(ゲームの設計しか知らない)だと言ってる
フレーム単位でボタンの状態をスキャンするなんてことは
普通のアプリではしないんだよ

そもそもな、フレーム(1/60)ごとに発生するイベントが存在しない
お前は1/60ごとに描画しなきゃならないと思ってるんだろうが、そんなことをするのはゲームだけ

普通は何もイベントが発生しない限り変化がない
ボタンは押したときと離したときにイベントが発生する
それに応じて処理をするのがイベントドリブン

押しっぱなしは普通キーリピートとして、何度も押したというイベントが発生するのが普通のUI
それじゃゲームには役に立たない!っていいたいんだろう?ゲーム脳だからゲームに役に立たない!としか言わんわけだ

普通のUIで押しっぱなしの状態で何かを変化させる必要があれば
そのときにタイマーイベントを設置する。
ゲーム脳のお前は、このタイマーイベントがあるという前提でしか物事を考えられないんだろうが
普通のUIじゃそんなの追加機能だ

そして押しっぱなしの状態を検知したいんだったな?
ボタンオブジェクトは自身に押されたか押されてないかの状態を示すステータスフラグを持ってる
(なければそういうステータスフラグを作って、ボタンが押された・離されたときにフラグを更新するだけ)
そしてタイマーイベントからそのステータスを見るだけだ
755デフォルトの名無しさん
垢版 |
2021/04/11(日) 18:21:34.08ID:AX7XCaAp
>>710
むかーし、スマートフォンアプリ(Java/Objective-Cベース)開発初期に
ケータイやWebアプリ(flashベース)の人が来て質問してきた時に
スマホ側は「ボタン自体がタッチイベントなどの属性持ってる」前提で話してるのに
ケータイflashの人が「画面へのタッチをトリガーに
if文で矩型の範囲設定してどこを触ったか?で条件分岐させよう」としてて
噛み合わなさに苦笑したの思い出した。
2021/04/11(日) 21:18:16.23ID:LXnW0jT4
高橋名人だっけ?
1秒間に、18回クリックできた人

確か、これがこの当時の限界のはず
757デフォルトの名無しさん
垢版 |
2021/04/12(月) 08:31:37.55ID:A3OoULtt
>>754
つまり君の言い分はこうだ
「ぼくのさいきょうのおぶじぇくとしこう(ただしげーむやすまほではつかえません)」

つまり時間による状態変化にはついて行けないということだ。
別にタイマーみてボタン押下のイベントを見るのは構わないが、ひと処理がタイマー期間に間に合わず、次の期間にもなだれこむ場合、
ひとつの処理の中で複数回のボタン読み込み処理が発生する場合があり、それだけだと正確なボタン検知が出来なくなるし
それ用の処理をそのために作るのも大変だしな
作るとしてもそれを含めて
結局正しいボタン情報を監視、制御するクラスはそういう役割として持たせておくと楽だろう

それとあの後一生懸命勉強したのだろうが、フレーム(1/60秒)と書いてあるがfpsという言葉を知っているか?
身に付けたばかりの知識はひけらかすと恥をかくから気をつけた方がいいぞ

後、プログラマーのゲーム脳というのは
少なくとも君の語る最強のオブジェクト指向のようなカタワではないから褒め言葉として受け止めておくよ

それと人が居なくなった頃を見計らって書き込むのはいいが、
いくら俺が怖いからって他の誰かれ構わす他噛みつくのはみっともないな
後でチンポさんに謝っておけよ
2021/04/12(月) 09:11:21.50ID:yZXPyOt1
>>757
> 別にタイマーみてボタン押下のイベントを見るのは構わないが、ひと処理がタイマー期間に間に合わず、次の期間にもなだれこむ場合、
コマ落ちでもすりゃいいじゃん。なにか問題でも?

やっぱりゲームのことしか考えてないよね
759デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:13:33.97ID:A3OoULtt
あ、カタワ指向君ちーっす
2021/04/12(月) 09:15:25.81ID:yZXPyOt1
>>757
お前はイベントドリブンっていうのを知ったほうがいいよ
今の主流の開発手法。ブラウザなんかもイベントドリブンで処理する

マウスクリック、キーボード入力、タッチ、などなど
それぞれのイベントが発生し、そのイベントの中で処理を行う
それらのイベントが発生しない間に、常にボタンを監視するなんてことはしない
761デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:17:10.71ID:AGjFdU+p
???

>>754
>押しっぱなしは普通キーリピートとして、何度も押したというイベントが発生するのが普通のUI

756 デフォルトの名無しさん sage 2021/04/11(日) 21:18:16.23 ID:LXnW0jT4
高橋名人だっけ?
1秒間に、18回クリックできた人

確か、これがこの当時の限界のはず
2021/04/12(月) 09:17:17.08ID:yZXPyOt1
イベントドリブンは省エネ
メインループをずっと繰り返すというのはアンチパターン
特にスマホなんかだと、そんな事するとあっという間にバッテリーが無くなる
763デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:20:34.27ID:A3OoULtt
>>760
イベント知ってるからこそ
そこの落とし穴も知ってて
>>757のようなことを書いてるんだけどなー
まぁ処理落ちのことをコマ落ちとかいったり
そうした場合の処理が結構大変なのを
知らないというのも幸せなんだろうなー
2021/04/12(月) 09:22:29.29ID:yZXPyOt1
>>763
だからその落とし穴ーをお前が説明した途端
ああ、やっぱりゲームのことしか考えてないよねって思ったわけだ
765デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:28:23.26ID:A3OoULtt
>>764
いんや別にゲームでなくても
画面にボタン操作が入って時間経過の概念があるものは何でもそうだよ
そうであれ、なかれ
きみの言うさいきょうのおぶじぇくとしこうではそれに対応出来ないってだけ
766デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:28:42.73ID:AGjFdU+p
イベント連携機能では、発生する『イベント』と、イベントを検知したときにどう振る舞うかといった
『アクション』を事前に登録していただければ、『イベント』の発生を監視し、イベントの発生を検知したら、
事前に登録されている『アクション』を自動実行することができます。
http://a-auto50.blogspot.com/2014/11/blog-post.html?m=1

760 デフォルトの名無しさん sage 2021/04/12(月) 09:15:25.81 ID:yZXPyOt1
>>757
お前はイベントドリブンっていうのを知ったほうがいいよ
今の主流の開発手法。ブラウザなんかもイベントドリブンで処理する

マウスクリック、キーボード入力、タッチ、などなど
それぞれのイベントが発生し、そのイベントの中で処理を行う
それらのイベントが発生しない間に、常にボタンを監視するなんてことはしない
767デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:55:23.61ID:A3OoULtt
>>766
うーん、リンク先見たけど
リアクティブプログラミングの話かな?
だとしたらカタワ指向君にはまだ早いし
自信損失に繋がるからやめたげて
768デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:58:33.20ID:AGjFdU+p
左側の太い線で書いたループはイベントループと呼ばれ、発生するイベントを常に監視しています。そして、
ユーザがマウスを押したり、キーを押したりして何らかのイベントが発生すると、それに対応する処理を呼び
出します。各処理は自分の仕事が終わると再びイベントループに戻り、次のイベントを監視します。
http://www.ics.kagoshima-u.ac.jp/edu/ProgramingJava/Event/top.html

762 デフォルトの名無しさん sage 2021/04/12(月) 09:17:17.08 ID:yZXPyOt1
イベントドリブンは省エネ
メインループをずっと繰り返すというのはアンチパターン
特にスマホなんかだと、そんな事するとあっという間にバッテリーが無くなる
769デフォルトの名無しさん
垢版 |
2021/04/12(月) 10:10:52.76ID:A3OoULtt
>>768
これは比較的俺が言っていたのに似ているね
まぁ普通のアプリの場合(何を持って普通というのかはアレだけども)、
あんまし画面描写関係ないなら
処理単位でのループだし、さっき言った落とし穴にもはまらないからいいと思うよ
770デフォルトの名無しさん
垢版 |
2021/04/12(月) 10:33:08.50ID:AGjFdU+p
チンポから力を抜く、チンポに力を入れるという体内の『イベント』により、

>『アクション』を事前に登録していただければ、『イベント』の発生を監視し

オシッコを出す、オシッコを止めるという体外の『アクション』に繋げられる!

・・・我流なので、異論があれば何なりと!
2021/04/12(月) 10:51:42.72ID:yZXPyOt1
>>765
> 画面にボタン操作が入って時間経過の概念があっても
そこじゃない

> 処理がタイマー期間に間に合わず、次の期間にもなだれこむ場合
を気にしないといけないのがゲームぐらいしかない
2021/04/12(月) 10:53:49.34ID:yZXPyOt1
>>768
> 左側の太い線で書いたループはイベントループと呼ばれ、発生するイベントを常に監視しています。

メインループとイベントループをごっちゃにするな
イベントループはイベント(マウスボタン押下など)が発生しない限り何もせず休んでいる
ゲームのメインループは、一定間でボタンの状態をスキャンしている
全く別のものだ
2021/04/12(月) 10:55:32.60ID:yZXPyOt1
しかもそこに書いているな


> 左側の太い線で書いたループはイベントループと呼ばれ、発生するイベントを常に監視しています。
> そして、ユーザがマウスを押したり、キーを押したりして何らかのイベントが発生すると、それに対応する処理を呼び出します。
> 各処理は自分の仕事が終わると再びイベントループに戻り、次のイベントを監視します。

ユーザがマウスを押したり、キーを押したりして何らかのイベントが発生すると、それに対応する処理を呼び出します。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


> GUI部品に対してのこれらのイベントを自分で処理する必要はほとんどありません。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

> マウスやキーボードを自分で処理する必要があるのは、アプレットやキャンバス上で発生したイベントについてだけです。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
774デフォルトの名無しさん
垢版 |
2021/04/12(月) 10:59:41.18ID:A3OoULtt
>>771
さっきも書いたけど、
そうであれ、なかれ
君のカタワ指向では対応出来ないってだけ
775デフォルトの名無しさん
垢版 |
2021/04/12(月) 11:02:43.20ID:A3OoULtt
カタワ指向君大ハッスルで草
2021/04/12(月) 11:05:06.27ID:yZXPyOt1
>>767
> リアクティブプログラミングの話かな?

ぜんぜん違う。
リアクティブプログラミングはマウス等のイベントの発生をきっかけに
処理がすすんでいく(マウス等のイベントに対してイベントハンドラを設定する)

ゲーム脳が言ってるやつは、マウスのイベントではなく一定時間ごとに
自分でマウスの状態をスキャンする。タイマーがイベントとも言えるが
普通のUIはタイマーをイベントにしない。

マウスのイベントをトリガーとすればマウス操作で即座に反応できるが
しかしタイマーをイベントとしてマウスの状態をスキャンする場合
即座に反応させるためには、短い間隔のタイマーを設置しなければいけない
しかも精度の高いリアルタイムタイマーでなければならない

リアクティブプログラミングでリアルタイムタイマーをサポートしているライブラリは
おそらくないだろう。だからゲームではリアクティブプログラミングは使えず
イベントドリブンではない旧来のメインループを使うという特殊なプログラム技法を使っている

完全に概念が別なんだわ。
2021/04/12(月) 11:05:48.18ID:yZXPyOt1
>>774
> さっきも書いたけど、
> そうであれ、なかれ
> 君のカタワ指向では対応出来ないってだけ

書いてないよ。ただお前が主張してるだけで
その根拠が全く書かれていない
2021/04/12(月) 11:15:38.40ID:o1bf8P7D
イベントと状態を区別して整理できてないから落とし穴にハマってるだけだな
結局オブジェクト指向とは関係ない
2021/04/12(月) 11:18:09.51ID:yZXPyOt1
参考と言えるほどのものではないが

ゲーム開発と一般的なアプリケーション開発の違いについて
https://qiita.com/sawasaka/items/288c745b48328e76ca66#%E3%81%AA%E3%81%9C%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E4%BD%9C%E3%82%8B%E3%81%8B

決定的な違い
一般的なアプリケーションはイベント駆動型で
ボタンを押したり、メニューを選択した時などのアクションが発生した際に処理を行う。

ゲームは終了するまで永久に回り続けるメインループを作り
ループ内でアクションの発生を確認し、それに応じて処理を行う。
2021/04/12(月) 11:21:13.76ID:Ggr3enQ8
>>776
横からだが、イベントってのはそもそも言語やフレームワークやOSの機能だから、まずはそこを定義してないから話が噛み合わないんじゃないのか?

低レベルの部分ではハードウェア割り込みやポーリングは必要だし、キーバッファだってあるわけだから、組み込み系だったりそういうレベルでコーディングしてる人からしたらイメージしにくいのかも
2021/04/12(月) 11:22:51.88ID:yZXPyOt1
>>780
言語、フレームワーク、OS、いずれにしろイベントというのは
イベントが発生したときに、そのイベントに対応する処理を書くという点では一緒

ゲームのメインループはイベントを使わず、(以下>>779
782デフォルトの名無しさん
垢版 |
2021/04/12(月) 11:28:26.35ID:A3OoULtt
>>780
折角書いたのにね
恐らく割込みというのを知らないんだよ
ちょっとアレな人だから許してあげてね
783デフォルトの名無しさん
垢版 |
2021/04/12(月) 11:28:42.99ID:AGjFdU+p


>>772
>イベントループはイベント(マウスボタン押下など)が発生しない限り何もせず休んでいる

プログラムは,イベントに対する処理内容をコールバック関数で動作した後,イベントループと呼ばれる無限ループに動作が移る
この無限ループで,イベントの監視と,それに対応する処理を永遠行う
https://qiita.com/twipg/items/8f2a00354f6159cd1a5a
2021/04/12(月) 11:29:39.47ID:yZXPyOt1
>>783

そこに書いてあんだろw

> イベントループ
> イベントを待機するループを持つ仕組み
2021/04/12(月) 11:32:46.54ID:yZXPyOt1
>>782
割り込みとイベントは似てるようで違う
割り込みは他の割り込みをブロックしないように短時間でその処理を終えなければいけない
イベントはそうではない。時間がかかる処理を行ってもいい。
その間に割り込みがブロックされることはない。処理するレイヤーが全く違っている。
786デフォルトの名無しさん
垢版 |
2021/04/12(月) 11:56:09.87ID:AGjFdU+p
動作アプリと静止アプリという程度の違いと思われるが、

>>779
>ゲーム開発と一般的なアプリケーション開発の違いについて

調査機関IBISWorldの調査によれば、企業がERPソフトウエアに支払う費用は2012年以来、1年につきほぼ
2パーセント減少してきています。同社は、顧客が今日ERPのソフトウエア・ライセンスに支払うと予測される
平均価格は1ユーザー、1年について約$1,911と言います。さらに、この先3年間、ERPソフトウエアの価格にプレッシャーが
掛かり続けて下落し、2018年迄に年間ライセンス料は1ユーザーにつき平均$1,800まで下がると予測しています。
https://www.e-bellnet.com/category/jungle/1512/1512-829.html


ワードやエクセルも含めて、事務処理用の静止アプリは、年々衰退しつつあるのでは?
2021/04/12(月) 12:12:55.21ID:LRhqKPdk
クズ同士のマウント合戦で糞スレ上げるなよ
788デフォルトの名無しさん
垢版 |
2021/04/12(月) 12:13:10.74ID:G4m+DR25
スゲーな
俺も含めてだけど
ゲーム脳指向
チンポシコシコ指向
カタワ指向と
基地外がよりどりみどりだわw
2021/04/12(月) 12:25:30.01ID:yZXPyOt1
>>786
> 年々衰退しつつあるのでは?
質問スレでしろ
790デフォルトの名無しさん
垢版 |
2021/04/12(月) 12:47:01.64ID:AGjFdU+p
https://youtu.be/08W9VWUdkjI

NHKの子供向け番組で、突然ど下ネタがぶっこまれる事案が発生「NHKから怒られる」「受信料払うことにした」
https://togetter.com/li/1075927

>>631
>オブジェクト志向に関する議論において、
>「シコシコ」という言葉を恣意的に使って

『シコシコシコシコしこランド!』って、問題になったらしいぞ?
791デフォルトの名無しさん
垢版 |
2021/04/12(月) 12:48:08.65ID:A3OoULtt
>>786
Switchや新型XBOXの売れ行きが好調なのと
スマホのソーシャルゲーム系がそこそこ行けてるからね
家電量販店辺り行くとLiteでないSwitch、XBOXのXシリーズ辺りは慢性的に品切れだよ
PS5はたまに売ってるけど、それでもこれも慢性的に品切れと言えるね
ただPS5は逆鞘なのでソフトが出ないと売れれば売れるほど損失が出るからソフトが揃うの待ち
CS業界ではSwitchが出てからずっと好調かな
カタワ指向君が言う通りゲーム脳だからこのくらいのことは即答出来るよ
792デフォルトの名無しさん
垢版 |
2021/04/12(月) 13:13:14.41ID:AGjFdU+p
令和のコペルニクス
https://youtu.be/7DbdPKWhrpY

自作プログラミング、ソースコードと解説付き!!!
793デフォルトの名無しさん
垢版 |
2021/04/12(月) 13:29:08.92ID:AGjFdU+p
ゲーム脳というが、ゲームに例えるとプログラミングがわかりやすくなる!

静的変数(コンティニュー可)
例 ドラゴンクエスト
自動変数(コンティニュー不可)
例 テトリス
2021/04/12(月) 13:36:26.09ID:yZXPyOt1
オブジェクト指向と関係ない話を始めた理由は、みなさんわかりますよね?w
795デフォルトの名無しさん
垢版 |
2021/04/12(月) 13:44:35.85ID:G4m+DR25
みなさんて誰?
ここには基地外しかいないが
796デフォルトの名無しさん
垢版 |
2021/04/12(月) 18:28:56.46ID:XB1ybHa5
なんかよくわかってないというかそもそもスマホの“OS”レベルの動作から知らない人がいるっぽいんだけど
iOSなんかはWindowsCEとかのクソ遅いアプリレスポンスを反面教師として設計されたから
OSが画面タッチをOSの最優先処理として監視しているので毎秒何フレームとかいうレベルじゃなくて
触れた瞬間に最優先割り込みが起動して、画面のその場所のパーツレイヤーに重ね順番に沿って即座に
「この場所のオブジェクト!タッチイベントに反応できる?する?」ってリクエストが飛ぶ仕組みなんだけど…

全画面をスプライトとか扱うゲームキットレイヤで覆えば
ゲームキット側で「オーケーあとはうちで」ともできるし
可視、不可視ボタンオブジェクト置いといてそっちでイベントフックしてもいいし
それはアプリ設計側の自由だし。

また、逆に「割り込み」ってCPUレベルの機能知らないなら書いておくけど
「割り込み」はメインループが回ってようがリクエストが来た瞬間に
メイン処理を棚上げにして、割り込みで割り当てられた処理を優先するハードウェア機能ね。
アプリどころかOSの処理に画面タッチ関連が最優先割り込み指定されてるの。
2021/04/12(月) 19:08:50.10ID:FHLyrm59
>>796
わかってないのはお前でどのOSもタッチとか割り込みで処理されてるの
ゲームが例外でタッチが割り込みで処理されてるにもかからわず
毎秒何フレームのポーリングで処理するんだよ

そもそも毎秒何フレームとかいう考え方自体がゲーム特有で
1秒間に何回も画面を書き換えてるの(もちろん工夫して書き換える量を減らしてる)
その書き換えのタイミングで(割り込み)ではなくタッチの状態をスキャンしてるんだよ

ゲームは基本的に何も触らなくても画面が書き換わるし
割り込みが発生時でやる処理によってタイミングがずれるのは困るから
割り込みで正確にタイミングを測るのが難しい。だからOSやハードウェアでは
割り込みを持っていたとしても、それを使わない(正確に言えば状態を更新するだけ)で
あと毎秒何フレームのメインループで処理するんだよ
2021/04/12(月) 19:41:23.31ID:iOiHPkVC
割り込みはデバイスドライバがやるので
その情報は漏れなくOSに伝わってる
格闘ゲームとかコントローラの操作で入力が
反映されないのは何かの性能が悪いから
ネットゲームはメインのプログラムがサーバー上にあるので
それの作り次第
たくさん人がいると本当のリアルタイムのような
ことは難しくなる
2021/04/12(月) 19:53:28.93ID:wo2ZdM5G
>>798
そういう話じゃないんだよね。

割り込み(イベント)はメインの処理をしてるときに割り込まれてくるだから割り込み
ゲームに置いてメインの処理として画面描画を行っている

このときに割り込みが入って、そこですぐにプレイキャラを動かしたりしたら問題があるんだよ
例えばプレイヤーが連射なんかしたら、割り込みが入る分、画面描画が遅れてしまう
割り込みのほうが優先だからね

だから逆に画面描画のタイミングでバランスを取って、そのタイミングでボタンが押されていれば
それに応じた処理をするという設計になってる
800デフォルトの名無しさん
垢版 |
2021/04/12(月) 19:57:14.46ID:XB1ybHa5
OSが無い大昔のPCゲーやアーケードでもなきゃ
OSが割り込み取ってゲームキットに伝えてるってのに
そのOSからの「いま入力来たで!」を非同期的に受け取ってるアプリ側から
「ゲームアプリはフレームごとにメインループ処理してんだよ」って…
あの…別にゲームは30とか60とかそんな「遅い」反応しなくてもいいんですよ?
801デフォルトの名無しさん
垢版 |
2021/04/12(月) 19:57:40.11ID:A3OoULtt
>>796
ふーんスマホではタッチが最優先割込みになるんだ
たださっきメインループとか雑な説明のリンクをカタワ指向君が貼っててそういうもんだとみんな錯覚しているかも知れないけど、
そういう仕組みにすることもあればタイマで起動時間を区切ってその間隔単位で処理することもあれば
画面上を走査線が走り終わったタイミングの割込みを見ることもあるんだよ。
上の二つはともかく、走査線の割込みについては
俺はてっきり画面系の割込みが最優先だと思ってて
まぁハードウェアによってそういうこともあるのかなと思ってちょっと調べてみたけど
https://ja.m.wikipedia.org/wiki/割り込み_(コンピュータ)
これ見てるとやっぱり走査線の割込みが優先順位高いみたいだね。
IiPgone辺りはCPU、ARMじゃなかったっけ?
まぁスマホという枠を外れればキー割込み自体が存在しないハードがあることも考えればそれも納得なんだけれどね。
まぁメインループとか言ってる方式は言わずもがな、タイマによる割込みはソフトウェア割込みだからそこではタッチ割り込みが優先されるよ
ドンマイ!
2021/04/12(月) 19:59:52.02ID:iOiHPkVC
ゲームプログラムが割り込み受ける仕組みがあるのか
それは知らなかったな
何というクラスで受け取ってるの?
デバイスドライバから直で?
2021/04/12(月) 20:14:09.37ID:wo2ZdM5G
>>800
画面の書き換えが30や60だから、それより速く反応しても意味ないんだよ
普通のアプリはレスポンス重視=イベントで処理する
ゲームはタイミング重視だから遅い反応で十分
804デフォルトの名無しさん
垢版 |
2021/04/12(月) 20:18:58.60ID:AGjFdU+p
ところでイベントループが休んでいる時に、どうやってイベントログをリアルタイムで監視するんだ?

集中管理するログデータの安全性確保、データの有効活用のための効果的な対策が求められます。
そのためには、リアルタイムで問題や予兆を管理者が知ることのできる仕組みも必要です。たとえばWindows
イベントログのひとつであるセキュリティログを監視することにより、
ネットワーク経由の異常なアクセスやアクセス許可のないデータへのアクセス試行を検知し、
大事に至る前に追跡・対策することが可能となります。
https://www.manageengine.jp/products/EventLog_Analyzer/windows-event-log-monitoring.html

772 デフォルトの名無しさん sage 2021/04/12(月) 10:53:49.34 ID:yZXPyOt1
>>768
> 左側の太い線で書いたループはイベントループと呼ばれ、発生するイベントを常に監視しています。

メインループとイベントループをごっちゃにするな
イベントループはイベント(マウスボタン押下など)が発生しない限り何もせず休んでいる
ゲームのメインループは、一定間でボタンの状態をスキャンしている
全く別のものだ
2021/04/12(月) 20:29:26.92ID:wo2ZdM5G
> ところでイベントループが休んでいる時に、どうやってイベントログをリアルタイムで監視するんだ?
マルチタスクOSって知ってる?
ゲーム脳だから、実行中のプロセスは一つだけという前提なのか?w
2021/04/12(月) 20:29:44.51ID:iOiHPkVC
イベントログはポーリングするapiみたいなのがある
例えばプロセスが起動したら教えてくれる
807デフォルトの名無しさん
垢版 |
2021/04/12(月) 21:01:58.55ID:AGjFdU+p
『実行中のプロセス』がいくつあろうが、マウスクリックへの反応が後回しになるんか???

805 デフォルトの名無しさん sage 2021/04/12(月) 20:29:26.92 ID:wo2ZdM5G
> ところでイベントループが休んでいる時に、どうやってイベントログをリアルタイムで監視するんだ?
マルチタスクOSって知ってる?
ゲーム脳だから、実行中のプロセスは一つだけという前提なのか?w
2021/04/12(月) 21:13:57.67ID:Ggr3enQ8
>>803
最近のゲームは描画ループとゲームループは分かれてること多くてな、内部的には120とか240で回してたりすることもあるんよ

ちなみにむかしのゲームはvブランク割り込みって言うやつに同期してることが多いからゲームループは60とか50だったりする
2021/04/12(月) 21:19:41.60ID:2nuKPDwB
お前らオブジェクト指向の話見失ってない?
いつまでゲームプログラムの実装の話してるの?
810デフォルトの名無しさん
垢版 |
2021/04/12(月) 21:19:50.40ID:AGjFdU+p
>>808
>最近のゲームは描画ループとゲームループは分かれてること多くてな、

そのために『死亡ラグ』が起こってしまうらしいね!

>自分がいつ死んでいるのか分からず突然死んで突然画面が切り替わってしまう。

サーバー側のバトルシステムと、プレイヤー側の描画システムが乖離してる!
2021/04/12(月) 21:30:03.94ID:wo2ZdM5G
>>807
どこを読んでマウスクリックへの反応が後回しになるって思ったの?
意味不明すぎてさっぱりわからん
2021/04/12(月) 21:30:38.33ID:o1bf8P7D
アプリのレイヤーから見れば
iOSならRunloop、AndroidならLooperでイベントループ回して
ループ単位でUIイベント処理してるんだから考え方は一緒なんだよなぁ

画面タッチでハードウェア割り込みが発生しようが
それによってアプリの処理が直接割り込まれるわけじゃなくて
アプリのイベントループ内でチェックするイベントキューにメッセージが送られるだけ
イベントキューをチェックするフェーズが過ぎてからイベントが発生したら次のイテレーションに回される

ゲームはタイミングコントロールのためにゲームループを一定時間で回すものが多いけど
それもイベントループという意味では同じ
2021/04/12(月) 21:30:56.96ID:wo2ZdM5G
>>810
一人で空回りしてるとこ悪いけど、オンラインゲームの話はしてないからw
2021/04/12(月) 21:32:22.27ID:wo2ZdM5G
>>812
> ゲームはタイミングコントロールのためにゲームループを一定時間で回すものが多いけど
> それもイベントループという意味では同じ

違うのはループじゃなくて、ボタンの話だよ

アプリはボタンが押された時のイベントに応じて処理を行う
ゲームはループの中でボタンの状態を検知して処理を行う
815デフォルトの名無しさん
垢版 |
2021/04/12(月) 21:36:13.24ID:A3OoULtt
>>808
>ちなみにむかしのゲームはvブランク割り込みって言うやつに同期してることが多いからゲームループは60とか50だったりする

なーんか遠い昔vblankと言うのはあった気が・・・
ゲームボーイだっけ?
2021/04/12(月) 21:48:52.33ID:hU41fQqw
スレ違いや板違いの書き込みをするやつは詳しいやつがいないと見込んで調子に乗っている卑怯者の荒らし
そんなのが何回真っ赤になって書き込んでいるんだ情けない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況