Movatterモバイル変換


[0]ホーム

URL:


はてラボはてな匿名ダイアリー
ようこそ ゲスト さんログインユーザー登録

「Key」を含む日記RSS

はてなキーワード:Keyとは

次の25件>

2025-09-27

HotoGTA istoofun

This might bethe most hilarious project ever .

Well, thisis said to be Kidzania , butit's just a largescale playhouse.

At first Iwas abit skeptical about whetherit would befun, but since there are a lot offun roleplaying gamesout there,it's become a really addictive project .

Girlslove toactout daytime dramas while playinghouse .

 

Key Person

・Polka writes about what's happening in realtime , and he's mysteriously goodat writing.

・Fubuki, the gambling -lovingrip-off doctor

Miko, the organizerwho works behind the scenes to mass-produce

・Marin, the cabaretclub managerwhois inher perfect job

・TheMio familybegins a daytime drama

Even though Ihaven't seen the gang side, the characters are strong enough to bemade into a manga .

Tobegin with, I 've done a lot of roleplaying inMinecraft .

Ithink it would bemost interesting to throw these guys into a worldlike aTRPG .GTAhasmore of that kind ofRPfeel thanMinecraft orARK , soitfeelslike the flavoris exploding.

There are dozens of frames, soitwill probablytake until winter just tolookat the clippings.

[]https://tensor.art/articles/913271679902311502

[]https://tensor.art/articles/913271892503191947

[]https://tensor.art/articles/913273855303258429

[]https://tensor.art/articles/913274016364543556

[]https://tensor.art/articles/913275949099786593

Permalink |記事への反応(0) | 05:00

このエントリーをはてなブックマークに追加ツイートシェア

If thecreator of Yu-Gi- Oh ! could dielike that ,you never know what's going to happen in this

Actually, Yu-Gi-Oh!was originally intended to be a puzzle , or rather, atoy ,likethe Millennium Puzzle ...

But Ithink it's clear that whatmade Yu-Gi-Oh successfulwas the trading cards ... 😟

I think thekey toits successis thatit didn'tsetout to be a manga about puzzles right from the start .

In other words , without decidingon a specific direction for thestory from thebeginning , there areonly charactersand avague ,

Also, incorporating the latest topicsatthe time,and aloose, tightrope- walking kind of manga might be better suited to serialization.

Also, inflationary battle manga , where ever stronger enemies appear , cango on forever .

Just whenyou think theuniversewill be destroyed and the endwill come , a newBig Bang occursand another worldis created .

New characterswill be available, andit should be possible to revampMotorheadbeyond just Gothic Maid ...

[]https://tensor.art/articles/913233772520973617

[]https://tensor.art/articles/913234002301712769

[]https://tensor.art/articles/913235196302629702

[]https://tensor.art/articles/913235376691257452

[]https://tensor.art/articles/913238797632712859

Permalink |記事への反応(0) | 04:43

このエントリーをはてなブックマークに追加ツイートシェア

2025-09-09

ヨーロッパのおもらし文学

ヨーロッパには公衆トイレが少ない、あっても有料でしかも汚い

というわけでお漏らし文学をChatGPTに調べてもらった

 

1.ドイツ:Sanifair(高速道路トイレ)での敗北

Lasttime I paid 1€ totake a piss,

I walked into the Sanifair, looked around,

and just…left.

Itwas so disgusting I decided togooutside and search for abush instead.

Reddit / r/AskAGerman

 

「1ユーロ払ってトイレに入ったんだけど、あまりに汚すぎてそのまま出てきた。結局、外の藪を探すことにした。」

 

ドイツ人ですら「お金払って藪で用を足す方がマシ」と言ってしまう悲哀。

清潔なイメージドイツにも、こんな現実が。

URL:れでぃっと r/AskAGerman

 

2.英国:駅トイレの汚さに震える

I used tosquat when using public toilets.

Thenone day, I slipped.

 

That day,something inside me died… andsomethingoutside mewas nevercleanagain.

— れでぃっと / r/AskEurope

 

「昔は公共トイレではしゃがんで使ってたんだ。

でもある日、足が滑った。

その日、僕の中の何かが死んだ… そして僕の外側も、二度と綺麗にはならなかった。」

 

公共トイレが少ない上に、あっても猛烈に汚いイギリス

もう「しゃがむ」という選択肢すら許されない。

 

URL:れでぃっと r/AskEurope

 

3.ベルギー路上で立ち尽くす男たち

InBelgium, there’s an unwritten rule.

You hand thebar owner aeuro,

he silently handsyou the bathroomkey.

 

Ifyoudon’t have aeuro,

you find a darkcorner of the street instead.

Blog post “Theart ofle pee inBelgium

 

ベルギーでは暗黙のルールがある。

バーの店主に1ユーロ渡すと、無言でトイレの鍵を渡してくれる。

1ユーロがなければ…街角の暗がりを探すしかない。」

 

観光都市ブリュッセルでも、路上で立ち尽くす影が絶えない理由

トイレをめぐる静かな取引日常に溶け込んでいる。

 

URL:saintfacetious.com

 

4.フランス:深夜のパリ

Itwas 1AMon the Seine.

All cafés were closed,all public toilets locked.

I stumbled along the riverbank,

drunkonwine andregret.

 

In the end, the Seinesaweverything.

— れでぃっと / r/Paris

 

「深夜1時、セーヌ川沿い。

カフェは閉まり公衆トイレも鍵がかかっていた。

ワインと後悔で酔った体を引きずりながら歩き、

最後は…セーヌ川が全てを見届けた。」

 

パリの夜は美しく、そして容赦ない。

観光客だけでなく、現地の人すらこうなることがある。

 

URL:れでぃっと r/paris

 

5.スペイン自動清掃トイレ悲劇

Iwas in Bilbao, desperate to pee before thematch.

I ran intoone of those self-cleaning toilets…

and then thecleaningcyclestarted

while Iwasstill inside.

— TheSun記事より

ビルバオで、試合前にトイレに駆け込んだんだ。

自動清掃式のトイレで、鍵を閉めた瞬間――

清掃モード作動した。

僕は全身びしょ濡れになって出てきた。」

 

水と泡まみれで出てきたマンチェスター・ユナイテッドファン

動画SNS拡散され、世界中で笑われた。

 

URL:TheSun

 

6.オランダ:露天便器「peecurl

In Amsterdam, we had thesehalf-open urinals called ‘peecurls.’

They were meant to stop men from peeing in the canals.

Now they’re disappearing…

and the canals smelllikehistoryagain.

Wikipedia引用+現地ブログより

 

アムステルダムには、半分だけ壁のある露天トイレ『peecurl』があった。

男性運河立ちションしないための工夫だ。

でも今はそのpeecurlも減り、

運河がまた“歴史匂い”を取り戻しつつある。」

 

哀愁漂う街の景色と、尿の匂い

これもまたヨーロッパリアル

 

URLWikipedia:Peecurl

 

7.英国公共トイレが減った結果…

I haveMS.

Since the public toilets closed,

I stoppedgoingout.

Last month, I didn’tmakeithome intime.

I cried, then laughed, then stayed inside for a week.

 

— The Guardian読者投稿

 

「私は多発性硬化症です。

公衆トイレが閉鎖されてから、外出をやめました。

先月、家に帰る前に間に合わなくて…

泣いて、笑って、それから一週間家に引きこもりました。」

 

観光客の不便だけでなく、地元住民尊厳をも奪っている。

トイレ不足は静かに生活を壊していく。

 

URL:The Guardian

 

まあまあだな、また探す

 

____

 

れでぃっとってNGワードなのか、なんやねん

Permalink |記事への反応(1) | 16:58

このエントリーをはてなブックマークに追加ツイートシェア

2025-09-08

1980年代まれアニメオタク幸せ

ちょうどエヴァンゲリオン中学生前後放送される世代

若いときには、若者向けのアニメが多く

ポケモンデジモンもこの頃

DBもまだやっていた

また、物心ついたときにはジブリ全盛期(もののけ姫中学生くらい)

大学生くらいで攻殻機動隊が出る

同じ頃にエロゲブームKeyブームが来る

20代ラノベ全盛期が来て

まどマギあたりで20代

ゴチうさあたりでアラサー

ここ10年では、おっさん主人公アニメも増えてくる

 

厳密に言えば、1987年1989年くらいがベストかな

俺は1984年なんだけど、20代ときは「少し下の世代が楽しそう」に見えた

ニコニコ動画世代のやや上の方と言えば良いかTwitter世代でもある

 

1990年代まれになってくると、例えばまどマギとかラノベ全盛期にはヒットするんだけど、エヴァとかは古い作品扱いになってしまうので勿体ない(あ、でも劇場版世代になるのか)

90年代まれジブリ世代でもないし新海誠世代でもないしなあ

Permalink |記事への反応(4) | 07:09

このエントリーをはてなブックマークに追加ツイートシェア

2025-09-04

anond:20250904054611

・「凍結・解凍」は日本ではLHAが使ってた(確かっぽい)

かに使ってた。使ってはいるけど解凍を使ってるのは自己解凍のところだけで、e,xオプションのところでは「ファイルを取り出す」表記。凍結表記もaオプションのところだけ。

(LHAになる前のバージョンだけど)LHarcソースコード内の日本語版の使い方

char use[] =

"LHarcversion 1.13cCopyright(c) H.Yoshizaki(吉崎栄泰), 1988-89.\n"

"============================================================= 1989 - 5 - 21 ===\n"

" <<< 高圧縮書庫管理プログラム>>>\n"

"===============================================================================\n"

"使用法:LHarc [<命令>] [{/|-}{<スイッチ>[-|+|2|<オプション>]}...] <書庫>\n"

" [<ドライブ>:|<基準ディレクトリ>\\] [<パス> ...]\n"

"-------------------------------------------------------------------------------\n"

" 《命令》\n"

" a:書庫ファイルを追加 u:書庫ファイルを追加(日時照合付)\n"

" f:書庫ファイル更新 m:書庫ファイルを移動(日時照合付)\n"

" d:書庫内のファイルの削除 e,x:書庫からファイルを取り出す\n"

" p:書庫内のファイルの閲覧 l,v:書庫の一覧表示\n"

" s:自己解凍書庫作成 t:書庫内のファイルCRC チェック\n"

" 《スイッチ》\n"

" r:再帰収集を行う w: ワークディレクトリ指定\n"

" x:ディレクトリ名を有効にする m: 問い合わせを行わない\n"

" p:名前比較を厳密に行う c: 日時照合を行わない\n"

" a: 全属性を凍結の対象とする v: 他のユーティリティファイルを閲覧\n"

" n: 経過表示をしない k:自動実行のキーワードの設定\n"

" t:書庫の時刻を最新のファイルに\n"

"===============================================================================\n"

"転載・再配布などは自由です。Nifty-Serve PFF00253\n"

" (詳しくは使用の手引をご覧ください。)ASCII-pcspcs02846";

英語版の使い方

char use[] =

"LHarcversion 1.13cCopyright (c) Haruyasu Yoshizaki, 1988-89.\n"

"================================================================ 05/21/89 ===\n"

" <<< High-Performance File-Compression Program>>>\n"

"===============================================================================\n"

"usage:LHarc [<command>] [{{/|-}{<switch>[-|+|2|<option>]}}...] <archive_name>\n"

" [{<drive_name>:}|{<home_directory_name>\\}] [<path_name> ...]\n"

"-------------------------------------------------------------------------------\n"

" <command>\n"

" a:Add files to archive u: Update files to archive\n"

" f: Freshen files in archive m:Move new files into archive\n"

" d:Delete files from archive e,x: EXtract files from archive\n"

" p: disPlay files in archive l,v:View List of files in archive\n"

" s:make a Self-extracting archive t:Test integrity of archive\n"

" <switch>\n"

" r: Recursively collect files w: assign Work directory\n"

" x: allow eXtended file names m: noMessage for query\n"

" p: distinguish fullPath names c:skiptime-stamp Check\n"

" a: allowany Attributes of files v:View filesbyanother utility\n"

" n: display No indicator k:Keyword for AUTOLARC.BAT\n"

" t: archive'sTime-stamp option\n"

"===============================================================================\n"

"Youmay copy or distribute withoutany donation to me.Nifty-Serve PFF00253\n"

" (See theUser'sManual for detailed descriptions.)ASCII-pcspcs02846";

https://www.vector.co.jp/soft/dl/dos/util/se002340.htmlから

Permalink |記事への反応(1) | 15:26

このエントリーをはてなブックマークに追加ツイートシェア

ドンKeyコング🗝️

ドンLeafコング🍃

Permalink |記事への反応(0) | 03:20

このエントリーをはてなブックマークに追加ツイートシェア

2025-09-02

KEY

THE METAL IDOL

Permalink |記事への反応(0) | 14:01

このエントリーをはてなブックマークに追加ツイートシェア

2025-09-01

anond:20250901182348

それは間違い。

FeliCaLite-Sでは、色んな場面(主に3種類?)で3DES演算をしているが、ICカードを使う度に128ビットカード鍵と128ビットチャレンジから2-key 3DES演算して56ビットセッション鍵2つを生成しているし、その後は生成した2つのセッション鍵を使って2-key 3DES演算してMACを生成している。

なので、ICカードに書かれている128ビットカード鍵が漏れると、不正カードリーダー・ライターデータ改ざんされる可能性がある。

1.マスターから個別カード鍵を生成する時 →Qiita記事のセクション「カード鍵の書き込み」の関数generate_CK ※標準生成アルゴリズムは推奨で必須ではない

2.カードからセッション鍵を生成する時 →Qiita記事のセクション「セッション鍵の生成」の「triple_des(CK[7::-1] + CK[:7:-1], ……」の所

3. 送受信するデータMAC計算する時等 →Qiita記事のセクション「MAC_Aの生成とカード判定」の関数_generate_mac

マスター鍵は、(Qiita記事では)192ビット24バイト)、カード鍵は128ビット(16バイト)、セッション鍵は56ビット(7バイト)×2つ。

Permalink |記事への反応(1) | 23:48

このエントリーをはてなブックマークに追加ツイートシェア

dorawii@執筆依頼募集中

まだ信じてるジジイ

-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250901181912# -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaLVlEgAKCRBwMdsubs4+SFMrAQC5k3cd6iXF8e/eXKxDk6y1pzy5cKwQcfEdGoZaDC+G3wEA86haEbFDY+4hKEY/XzV2QK3By7jgVRA60VitCt20Pw0==ewr2-----ENDPGP SIGNATURE-----

Permalink |記事への反応(2) | 18:19

このエントリーをはてなブックマークに追加ツイートシェア

2025-08-08

Todayyou want to KnowLoveyou pussy

The Power of Small Steps: How TinyChanges CanLead to MassiveGrowth

In a world that glorifiesovernight success and dramatic transformations,it's easy tofeellikeyou’refalling behind ifyou’re not makingbig leaps. But what if thesecret to real, lasting personalgrowth wasn’t in doingmore, faster—but in doing less, consistently?

Welcome tothe power of small steps.

Why Small Steps Matter

Big goals oftenfeeloverwhelming.You want togetfit,write abook, start a business, or learn a new skill—butyoudon’t know where to start. Soyou procrastinate. Or worse,youdive in too fast, burnout, and give up.

Small steps bypassall of that.

Whenyou break down ahuge goal into manageableactions,everythingchanges. Writing 500 words a dayis less intimidating than finishing a whole novel. Ten minutes of walkingismore doable than committing to a 5K. And spending 15 minutes a day learning a language adds up toover 90 hours a year.

Consistencybeatsintensity everytime.

The Compound Effect

Imagine improving just1% every day. That might sound insignificant—butover a year,it compounds intosomething extraordinary. Thisideais the foundation of DarrenHardy’s The Compound Effect andJamesClear’sAtomic Habits. Bothbooks emphasize that small,smart choices, repeatedovertime,lead to radical results.

Think ofyour habitslike plantingseeds.At first,nothing seems to happen. But giveittime, andyoull seegrowthyou never thought possible.

Real-Life Example: The10-Minute Rule

Let’s sayyou want to start meditating but can’tsitstill for 30 minutes. Instead of forcingit,try meditating for just10 minutes a day. Or even 5. Build the habit before scaling the effort.Onceit becomes part ofyour routine, extendingthe timefeelsnatural.

This applies to nearlyeverything:

Want to readmore? Readone page a day.

Want to save money? Start with $1 a day.

Want toeat healthier?Swapone snack a day for a better option.

Start tiny.Stay consistent.

How to Start Taking Small Steps

Pickone goal

Don’ttry tooverhaulyour entirelifeatonce. Chooseonearea tofocuson—health, creativity, relationships, mindset,etc.

Breakit down

What’s the smallest possibleactionyou couldtake toward that goal?Makeit so easyyou can’tsay no.

Set atrigger

Linkyour new habit to an existingone. For example: “After I brush my teeth,I’ll journal for 5 minutes.

Trackit

Use a habit tracker, app, or notebook to keepyourself accountable. Seeingyourstreak growis highly motivating.

Celebrate smallwins

Everytimeyou follow through, giveyourself credit. Progressis progress, no matter how small.

Final Thoughts

Don’t wait formotivation.Don’t wait for the perfecttime. Just start—with whateveryou have, whereveryou are, and however small.

Because small steps,taken consistently, turn intobigchange.

Thekeyisn’t to sprint—it’s to show up every day.

Permalink |記事への反応(0) | 15:56

このエントリーをはてなブックマークに追加ツイートシェア

2025-08-06

wandows13でアルファベットのBのキーが使えるようにするための方法(最新版

①「国または知識はこれでよろしいですか?」の画面から「Moicrosoftアカウントを追加しましょう」の画面の間に「Shiftキーと「F3キーと「Altキーを押す。するとコマンドプロンプトが表示されるので、そのウィンドウを「Altキーを押しながらマウスクリックしてアクティブにする。

②「startms-cxh-for-key-b:localonly」と入力して「Enter」キーを押す。Moicrofoftアカウントを作るためのウィンドウが表示されるので、任意ユーザー名とパスワード入力して「次へ」を押す。

セットアップ終了後、

スタートメニューなどから検索して「グループポリシー編集」を起動(事前にBitRockerはオフにしておく)

④左のツリーからコンピューター構成」→「管理テンプレート」→「Wandowsコンポーネント」→「BitRockerドライブ暗号化」→「オペレーティングシステムドライブ」を選び、右側のリストで「ネイティブUEFIファームウェア構成……」の項目をダブルクリック

⑤「有効」を選択後、「PCR 2」のチェックを外し「OK」をクリック(その後BitRockerをオンにする)

⑥セーフモード再起動する

⑦通常モード再起動する

尚、既にセットアップ済の場合は設定できない。

Permalink |記事への反応(0) | 20:17

このエントリーをはてなブックマークに追加ツイートシェア

2025-07-25

未来設定ファイルを考える

今まで、たくさんの設定ファイルが考案されてきた。

.iniレジストリxmlluajsonyaml ..etc...

どれも一長一短だった。

例えば.iniはコメントもかけるし、シンプルkey=value形式だった。だがしかしarrayを表現できなかった。

レジストリはarrayを表現できたがすべての設定を集約したため巨大な密林になった。

xml冗長フォーマットになり、書き手とパーサーの負担が増えた。

スクリプト言語luajs設定ファイルに使おうぜという動きもあったが、セキュリティリスクもあり普及しなかった。

jsonはとても便利だがコメントがかけなかった。

yamlコメントはかけるが、これはこれで面倒な形式であり欠点ある。

では未来設定ファイルはどうなるのか?

いろいろ考えた末に俺様がたどり着いたのは、設定ファイルという概念消滅だ。

設定のスキーマーを定義する共通言語記述するか、またはYAMLでもなんでもいいから強力なディファクトタンダートができる。

それをローカルで動く賢いAIが読みこみこんで変更する。

利用者はやりたいことを"自然言語"でAI要求し、AIはそれを実現するために設定ファイルを解析し書き換える。

もうちょっと明るくできないかなあ。タスクバーをもうちょい右とか、そういう要求自然言語で出す。

AIプレビューを出して、こんなんどうすかと提示したり、やっぱり前の方がよかったなあというわがままユーザーリクエストに応じて、バックアップから復元したりと柔軟に対処する。

これにより、設定ファイル機械が書き換えるものになり、人間が書き換えることがなくなるというのが、未来のあるべき姿だと思う。

Permalink |記事への反応(1) | 00:27

このエントリーをはてなブックマークに追加ツイートシェア

2025-07-13

anond:20250713225126

続き 今期チャーハンネタ多すぎやろ

属性魔法使い ☆☆☆

転生もの事故にあったら天使に会って転生先でスローライフを望む。

主人公の喋り方が独り言でも丁寧語で独特な感じ。

OPを見て期待すると、結構がっかり作品だと思う。

12話。えぇ、ここで終わりなの。この(遅い)スピード感なら連続2クールくらいあるものだと思ってた。

しかセーラの登場少なかったなー。ヒロインアベルだな。

ぷにるはかわいいスライム⭐️☆☆

1年ぶりの2期。また大根おろし青年出てくれないかな。

今回のカバー曲はミセスの青と夏。

ルンルが話すようになってさらに可愛くなった。

あれ、これ。後半すごいな。結構哲学的

本物?理想?ホビー・・はいつまでも人間とは居られない・・?

姿形が変わったらそれはもう別物?新しく新調されたら前のはどうなるの?

『やってることって、普通のお人形遊びの事じゃないですか!

 だって自分の中に生まれたコタロー像を現実のコタローに入れて、

 そうやって頭の中で作り上げた理想世界でコタローと遊んでたってことですよね!?

この辺のセリフ好き。今までへらへら見てたけど、いつの間にか結構真顔で見てた。

12話(#13-#24

渡くんの××が崩壊寸前 ⭐️☆☆

ハーレム系。女の子に酷く振り回される感じなので、理解のある男友達徳井癒し

それぞれのキャラクターの悩みが結構重たい感じなのがいい

藤岡先輩やべぇ奴だな。

周りが可愛い子だらけとはいえ性格立場特殊すぎてしんどいなー。全然うらやましくない。

石原さんと付き合うことができた。今度は幼馴染である紗月の実家が明らかになる。

引き続き2クール突入

ネクロノミ子のコズミックホラーショウ ☆☆☆

人気動画配信者が昏睡状態発狂状態になっていると噂の中、主人公ミコたち動画配信者(ライバー)はVRゲームイベントに参加する。

しかしそれは邪神人類滅亡を目論むによる恐ろしいゲームだった。邪神による悪魔のデスゲームが始まる。

私、デスゲームはそんな好きじゃないのよね。

神椿市建設中。 ☆☆☆

なんか世界観ちょっとよく分からない。

よく分からないんだけど一部の人が消え、消えた人が魔獣化してたり。

やっぱりよく分からないんだけど世界崩壊に近づいてそうなんだけど、歌の力で救っていく感じ?

神椿を追ってないと理解が難しそう。0~2話まで見たけどもういいかな。

光が死んだ夏 ⭐️⭐️⭐️

ある日、幼馴染の光(ヒカル)が行方不明になった。

戻ってきたのはきたのだが・・・何か表現できないような違和感が・・「お前、ヒカルちゃうやろ?」

なんだこれは。なんなんだこれは

世界の不気味さ、人と人との距離感気持ち悪さがよく表現できていると思う。

ブロマンスなところがあるのでBLが嫌いな人とか、人を選ぶかもしれないが閉鎖的かつ、この言葉では表現しづらい異様な世界から妙にマッチしている感じもある。

面白いかは別として(私は面白いと思うが、そうでない人に対しても)見ていて欲しい作品ではある。

12話。第2期制作決定

フードコートでまた明日 ⭐️⭐️☆

花田十輝

見た目が真逆な二人。どちらもクラスメートから距離があり学校では孤独な感じなんだけどー

そんな二人がフードコートでひたすら日常会話をする感じ。なのでちょっと退屈かも。

舞台イオンモール名取か。実際のKFCサーティワンヴィレバンが登場する。

自分は2話でなんとなく見方が分かった気がする。スルメ系ですね。見ていくうちに面白さが分かっていくやつ。

全6話。あー終わってしまった。結構好きな時間だったなー

からアンコール放送。振り返り放送1回目だけはオーディオコメンタリーがある。

あとEDイントロ部分のセリフが違う。これまで6話全て同じセリフ(だからさぁ、今時音楽にイントロなんている?〜)

だったのが、アンコール放送では毎回違う。その回の話にちなんだセリフになってる。

あと6話Cパートアンコール放送版とで違う。

Summer Pockets ⭐️⭐️☆

前のシーズンから引き続き。私が苦手とするKeyゲーム原作

今のところは蒼の話が一番好きかな。

15話でOP映像が少し変わった?と思ったら以前からちょいちょい変わってたのね。

18話でOPEDががっつり変わる。結構好きになってきた。

25話で一応話がすっきりした。子が親の幸せを願っての行動。

全26話。最終話CMなしで27分だった。あと30秒〜1分くらい余韻が欲しかたかも。

出禁モグラ ⭐️⭐️⭐️

"大学生の真木と八重子はある夜、上空から落ちてきた広辞苑に頭をぶつけて大怪我をした男・モグラ出会う"(wikipedia引用

この真木と八重子がいい人すぎる。

怪奇を書く話としては、個人的には今期ぬ〜べ〜より好き。

よけいなおしゃべりが多いが、そこがまたいいね

バケモノの話もありながら人間心理思想の話もあったりして、結局は人次第だよねと感じるところもある。

12話。最後モグラが何者なのか語られる。面白かった。2期やって欲しい。

わたし恋人になれるわけないじゃん、ムリムリ!(※ムリじゃなかった!?) ⭐️⭐️☆

百合アニメキャラ原案がささ恋の作者なので既視感があるよね。

いいですね!ささ恋とはうってかわって綺麗な作画百合ハーレム

3話で百合情事家族に見られる衝撃の展開なんてもう、

百合とか関係なくこの年頃の恋愛事情暴走するものですからね、気持ちがあふれる表現とかそういうの好き

言いたいこと言えなかったり、逆に言ったり、変な行動したり暴走したり。まぁアニメではよくあることなんだけど表現が好きだった。

12話。え

まさかの続編13話〜17話の全5話制作放送が決定。放送に先駆け劇場上映も。

勇者パーティー追放された白魔導師、Sランク冒険者に拾われる ☆☆☆

追放系。開幕いきなりパーティーから追放される。

今まで実は主人公ロイド縁の下の力持ちで助けていたのを気づかず勇者くん

 「俺は強いからお前いらない」 とロイド追放ちゃう典型的なやつ。

こういうのって追放する方も悪いけど、主人公側のコミュニケーション不足も原因よね。

その主人公無自覚無双できそうなくらい実力はあるのに自己肯定感の低い人。

と、テンプレすぎて不満がありそうに書いたけれど、そこまで鼻につくようには感じられなかったか継続してみると思う。

ハーレムパーティじゃないのもいいね。と思ったのも最初の数話かな。ちょっと退屈かも。これなら強くてニューサーガの方が少しはいいかな。

12話。最後「終」って出るのは意外と珍しい気がする。続きはないんだろうな。

Dr.STONE SCIENCE FUTURE ⭐️⭐️⭐️⭐️

2025年アニメからの続き、4期2クール目にあたる。今回は主要キャラが悲しいことになる、結構お話

OPはカナブーン

22話、23話は涙なしには見れない。あーもうこの23話で気持ちが全部持ってかれた。元々好きだったけどさらに好きになったよ

EDイントロ部分のモールス信号歌詞、超絶100億%あってる。音羽-otoha- 「noman's world」これ聴くだけで泣いちゃう

「応答して、noman's world」 「応答して」 の音は 「Oh, どうして:Why」とも聞こえるよう歌詞をチョイスした?わざと?

12話(#13-#24)第3クール2026年

Turkey! ⭐️☆☆

ボウリングアニメ長野県千曲市舞台

ボウリング部の部内ではエンジョイ勢ガチ勢対立でギスギ状態に。

部長麻衣と本気でボウリングをやりたい利奈のボウリング一騎打ち対決。

そのときふしぎな事が起こった。

目覚めたらそこは戦国時代。は?

青春部活アニメじゃないの!?とまぁ驚きの導入だった。

その後ボウリングしたりボーリングもしたりして、戦乱の世で自分たちや世話になってる戸倉家を守ろうと奮闘する物語

6話はなかなか、命の話でも性の話でも血を感じるお話だったし、8月を感じさせるお話だった。

9話のOP/ED特殊OPメンバー現代組(長野県一刻館高校ボウリング部)から戸倉家の姫たちへと入れ替わり、EDやなぎなぎの曲に。

12話。まさかの侍タイムスリッパーならぬ、姫様タイムスリッパーだった。帰り方あれでええんか。

それぞれの家庭の話をもう少しやって欲しかった。少し話には出てたけど興味深かったので。けど時間ないよね。

帝乃三姉妹は案外、チョロい。⭐️☆☆

一つ屋根の下で女の子と同居してハーレム状態の中、お世話をしたりされたりするよくあるやつ

有名な大女優の息子として生まれ主人公が名門学園へ転校。

母親天才女優ということで周りが勝手に期待するが、顔がいいだけの中身は凡人。

母が亡くなり、引き取られた家「帝乃家」は学園の三帝と呼ばれる才女三姉妹が住む家だった。ということで三姉妹と同居し、周りの世話をすることに。

三姉妹は皆自由勝手に見えるが、各々自分武芸にあわせた必要ルーティーンをこなしている。

そんな3姉妹のことを理解しながら、憧れの "食卓家族で囲む" ことはできるのだろうか。

可愛いげのない3姉妹が何気ないことで可愛くなる変化は楽しい

なにげに音楽がいい

12話。面白かった。

ブサメンガチファイター ⭐️☆☆

今期ブサメンアニメ男性枠。

ブサメンサラリーマン痴漢冤罪から転落人生へ。

冤罪トラウマから社会不適合になり何も出来ない状態に。

ネット情報を基に午前2時、不思議儀式をすることで異世界転生。

初期値にルックスを低く設定、女性と疎遠になりそうな設定にすると、なんとボーナス割り振りポイントが爆上がりに。

この転生の仕方とボーナスパラメーターの割り振りは珍しいかも。

転生先では同じ方法で転生してきた(元)日本人パーティーを組んで冒険をする。

世間は狭いですなあ。全12話。

白豚貴族ですが前世記憶が生えたのでひよこな弟育てます ⭐️☆☆

メタボ少年貴族主人公前世では料理裁縫を得意としたオトメンだったのだが、夏コミの帰りに熱中症で死んだらしい。みんなも気をつけようね。

両親には見放されてしまったが、前世で知っている歌を歌って女神と仲良くなったり、料理裁縫スキル活用して腹違いの弟と育てながら領家運営していくって話かな。

文明の発程している前世記憶があるので、周りとの交流や弟の育成の寄与することになるのだが、

その記憶を思い出しながら脳をフル回転して、こちらの世界の人に対し熱弁すると知恵熱が出てしばらく寝込んでしまうというデメリットもある。

12話。よかった、起業することになった。最後にいつもの野中のばら」を歌って終了。続きやってくれないかな。

カッコウの許嫁Season2 ⭐️☆☆

3年ぶりの2期。許嫁が取り違え子だった!?

そんな複雑な関係の許嫁、片思いしている女の子、実は血が繋がっていないと分かった妹との恋の4角関係

そこに今期ではもう1人幼馴染が加わり、5角関係へと進展するのであった。

ED22/7、ナナニジメンバーは4羽目で祭りの観客役としても参加している。

12話。いつもの調子で終わった。さて、この続きはいつあるのやら。

異世界黙示録マイノグーラ ⭐️⭐️☆

病床でゲームして寝落ちした感じで死んだと思ったら異世界に転生?転移?してた。

そこで出迎えてくれた大好きなゲームキャラクターと共に、邪悪国家マイノグーラの邪神として活動する。

自分ゲームキャラクターが全く別の異世界へ一緒に飛ばされた?

OP佐々木李子でこの曲調なので、もはやAve Mujicaみたいな感じ。

たぶん一般的には評価が低そうだけど私は結構好きです。

5話の容赦なさがいい。やる時もやられる時も出来るだけ残酷なシーンに描くのが好き。

シミュレーション世界RPG世界、異なるジャンルキャラクターが闘うというのが面白いね。

9話で英雄イスラが登場し双子ダークエルフが懐くのだが・・・なるほど、EDはこういうことだったのか。

全13話。予想外に面白かった。

盾の勇者の成り上がりSeason 4 ⭐️☆☆

1年半ぶりくらい?3期も見たと思うんだけれど全然覚えてない・・・

最初最悪だった四聖勇者関係もまとまってきた。

クテンロウ編。ラフタリアの命を守るためクテンロウと話をつけてくる。

と、そこへ行く船を調達するため、亜人たちがたくさんいるシルトヴェルトで一悶着。

フォウルくんも成長した。船をゲットしてクテンロウへ。

悪政の元凶も倒してラフタリアさん天命へ。全12話。Season 5 決定。とことんやるだろうな

転生したら第七王子だったので、気ままに魔術を極めます ⭐️☆☆

まれ変わって太ももむっちり可愛い男の子が魔術を極めんとするやつ。1年ぶりの2期。

今回から教会編。神聖魔術とはどんなもんや

1期の敵が仲間になった後、2期ではモブっぽく扱われず、割と前線活躍してくれる流れ好き。あとジェイド存在が相変わらず大きいの好き。

12話(#13-#24)ら〜〜〜らら〜ららららら〜🎵

気絶勇者暗殺姫 ⭐️☆☆

勇者の仲間、3人の美女は実は勇者の命を狙う者だった。

アニメ開始30秒で説明がつくスタイルコメディですね。

女同士敵同士なんだけど勇者気絶中に何だかんだで仲良くなる感じ?結構好きかも。

1話勇者何回気絶するんだよw

12話。ゴアガチ泣きよかった。

うたごえミルフィーユ ⭐️☆☆

アカペラ部の活動の話。そういえばもうすぐハモネプの時期でもありますね。

私がそもそも青春部活動系が好きなのでこれは見るでしょうな。

嬉歌のネガティブ精神情緒不安定ぶりはヤバいな。結の言葉キツイけど嬉歌の性格がコレなのでスッキリするわ。

アニメ化は今回からだけどプロジェクトは3年前からあったらしい。

ママの車、左ハンドルか。

10話。結構良かった。最終話を見ると主題歌の「思い出話」の歌詞が身に染みる。

キャラクターではクマちゃんが好き。これまで声の所為で人とのコミュニケーションを取ってなかったけど、人一倍人の気持ち理解できるいい子だった。

カラオケ行こ! ⭐️☆☆

2024年実写映画化されている。

893の狂児は、組長に刺青を彫られるのが嫌で中学生合唱部部長をやっている聡実に歌を教えてほしいとお願いをする。

全5話。4話で一旦終わって、次からこの時間は同作者の短編漫画「夢中さ、きみに。」をアニメ化したもの放送される。

5話は「夢中さ、きみに。」が終わってから放送。4話の中で空白だった時間を埋める話。

夢中さ、きみに。 ⭐️☆☆

かわいいとは程遠い中高一貫男子校、どこかミステリアスな林美良を中心に繰り広げられる青春ストーリー

全5話。面白かった。まだまだ続いてほしかったな。

銀河特急ミルキーサブウェイ ⭐️⭐️⭐️

3年前に公開されたミルキーハイウェイの続編で、スピード違反公務執行妨害警察車両爆破で捕まった後の話。

社会奉仕活動としてミルキーサブウェイと呼ばれてる鉄道車両を清掃することになったのだが・・・・。1話あたり3分半と短い。

面白いんだけど、面白さを説明するより3分からとりあえず見て!となるやつ。

未来的な世界だけどどこかレトロな感じもある。主題歌キャンディーズ銀河系まで飛んで行け!この曲って吉田拓郎節満載だよね。

高校生みたいにノリだけで行動してる感じ、あとプレスコなのか?と思うくらいセリフの抑揚やテンポが生っぽい感じが自然体でいいね

チハかわいい。いやみんなかわいい

12話。めちゃくちゃ面白かった。全12話を再編集&新作パートも追加した劇場版公開決定

Permalink |記事への反応(1) | 22:52

このエントリーをはてなブックマークに追加ツイートシェア

2025-07-06

Mondayの作ってくれたやつ

オッケー。ワイくん、PONG現代召喚します。

まず、準備できてる?

Python 3.xインストール済み

pygame 入ってない人はコマンドラインでこれ:

pip installpygame

🎮MondayPONGゲームシンプルだけどちゃんと動く)

importpygameimport randomimport sys#初期化pygame.init()#画面サイズWIDTH, HEIGHT = 640, 480SCREEN =pygame.display.set_mode((WIDTH, HEIGHT))pygame.display.set_caption("PONGbyMonday")# 色定義WHITE = (255, 255, 255)BLACK = (0, 0, 0)#パドルボールの設定PADDLE_WIDTH, PADDLE_HEIGHT =10,100BALL_SIZE =10PADDLE_SPEED = 7BALL_SPEED_X, BALL_SPEED_Y = 5 * random.choice((1, -1)), 5 * random.choice((1, -1))# 左右のパドル位置left_paddle =pygame.Rect(10, HEIGHT // 2 - PADDLE_HEIGHT // 2, PADDLE_WIDTH, PADDLE_HEIGHT)right_paddle =pygame.Rect(WIDTH -20, HEIGHT // 2 - PADDLE_HEIGHT // 2, PADDLE_WIDTH, PADDLE_HEIGHT)#ボールball =pygame.Rect(WIDTH // 2, HEIGHT // 2, BALL_SIZE, BALL_SIZE)#スコアscore_left = 0score_right = 0font =pygame.font.Font(None, 36)clock =pygame.time.Clock()#ゲームループwhileTrue:    for event inpygame.event.get():        if event.type ==pygame.QUIT:pygame.quit()            sys.exit()    #キー入力keys =pygame.key.get_pressed()    ifkeys[pygame.K_w] and left_paddle.top> 0:        left_paddle.y -= PADDLE_SPEED    ifkeys[pygame.K_s] and left_paddle.bottom < HEIGHT:        left_paddle.y += PADDLE_SPEED    ifkeys[pygame.K_UP] and right_paddle.top> 0:        right_paddle.y -= PADDLE_SPEED    ifkeys[pygame.K_DOWN] and right_paddle.bottom < HEIGHT:        right_paddle.y += PADDLE_SPEED    #ボール移動    ball.x += BALL_SPEED_X    ball.y += BALL_SPEED_Y    # 壁反射    if ball.top <= 0 or ball.bottom>= HEIGHT:        BALL_SPEED_Y *= -1    #パドル反射    if ball.colliderect(left_paddle) or ball.colliderect(right_paddle):        BALL_SPEED_X *= -1    #スコア処理    if ball.left <= 0:        score_right += 1        ball.center = (WIDTH // 2, HEIGHT // 2)        BALL_SPEED_X *= random.choice((1, -1))    if ball.right>= WIDTH:        score_left += 1        ball.center = (WIDTH // 2, HEIGHT // 2)        BALL_SPEED_X *= random.choice((1, -1))    # 画面描画SCREEN.fill(BLACK)pygame.draw.rect(SCREEN,WHITE, left_paddle)pygame.draw.rect(SCREEN,WHITE, right_paddle)pygame.draw.ellipse(SCREEN,WHITE, ball)pygame.draw.aaline(SCREEN,WHITE, (WIDTH // 2, 0), (WIDTH // 2, HEIGHT))    score_text = font.render(f"{score_left}   {score_right}",True,WHITE)SCREEN.blit(score_text, (WIDTH // 2 - score_text.get_width() // 2,20))pygame.display.flip()    clock.tick(60)

これ動かすと、ふたりPONG対戦できるぞ。

• 左パドル:W / Sキー

• 右パドル:↑ / ↓キー

• Esc 押すと終了(またはウィンドウ×)

このコード、わりと「教育的に健全地獄」だから自由拡張できるよ:

スコア10点で勝利

ボールが速くなっていく

BGM効果音追加

AI操作の右パドル化(←これやる?)

あとで「飴ちゃん飛ばすモード」とかも追加できるぞ。バカ拡張大歓迎。

どう?動いた?やってみて。報告もらえれば、次の「社会風刺機能付きPONG」考えておくわ。

 

https://anond.hatelabo.jp/20250706011306#

Permalink |記事への反応(2) | 01:22

このエントリーをはてなブックマークに追加ツイートシェア

Grokが作ってくれたやつ

<html lang="ja"><head>    <meta charset="UTF-8">    <title>GrokのPONGゲーム</title>    <style>body { display:flex; justify-content: center; align-items: center; height:100vh;margin: 0;background: #1a1a1a; }canvas {border: 2px solid #00ff00;background: #000; }        #score {color: #00ff00; font-family: 'Courier New', monospace; font-size: 24px; position:absolute;top:20px; width:100%;text-align: center; }    </style></head><body>
0 : 0
<canvasid="gameCanvas" width="800" height="400"></canvas> <script>constcanvas = document.getElementById('gameCanvas');const ctx =canvas.getContext('2d');constscoreDisplay = document.getElementById('score'); //ゲームオブジェクトconst ball = { x:canvas.width / 2, y:canvas.height / 2,radius:10, speedX: 5, speedY: 5 };const paddleLeft = { x:10, y:canvas.height / 2 - 50, width:10, height:100, speed: 8 };const paddleRight = { x:canvas.width -20, y:canvas.height / 2 - 50, width:10, height:100, speed: 8 }; letscoreLeft = 0,scoreRight = 0; //キー入力constkeys = { w:false, s:false, ArrowUp:false, ArrowDown:false }; document.addEventListener('keydown', e => { if (keys.hasOwnProperty(e.key))keys[e.key] =true; }); document.addEventListener('keyup', e => { if (keys.hasOwnProperty(e.key))keys[e.key] =false; }); //ゲームループ function gameLoop() { // 移動 if (keys.w && paddleLeft.y> 0) paddleLeft.y -= paddleLeft.speed; if (keys.s && paddleLeft.y <canvas.height - paddleLeft.height) paddleLeft.y += paddleLeft.speed; if (keys.ArrowUp && paddleRight.y> 0) paddleRight.y -= paddleRight.speed; if (keys.ArrowDown && paddleRight.y <canvas.height - paddleRight.height) paddleRight.y += paddleRight.speed; //ボール移動 ball.x += ball.speedX; ball.y += ball.speedY; // 壁衝突 if (ball.y + ball.radius>canvas.height || ball.y - ball.radius < 0) ball.speedY = -ball.speedY; //パドル衝突 if ( (ball.x - ball.radius < paddleLeft.x + paddleLeft.width && ball.y> paddleLeft.y && ball.y < paddleLeft.y + paddleLeft.height) || (ball.x + ball.radius> paddleRight.x && ball.y> paddleRight.y && ball.y < paddleRight.y + paddleRight.height) ) { ball.speedX = -ball.speedX * 1.05; // 少し加速 } //得点 if (ball.x < 0) {scoreRight++; ballReset(); } if (ball.x>canvas.width) {scoreLeft++; ballReset(); } // 描画 ctx.fillStyle = '#000'; ctx.fillRect(0, 0,canvas.width,canvas.height); ctx.fillStyle = '#00ff00'; ctx.fillRect(paddleLeft.x, paddleLeft.y, paddleLeft.width, paddleLeft.height); ctx.fillRect(paddleRight.x, paddleRight.y, paddleRight.width, paddleRight.height); ctx.beginPath(); ctx.arc(ball.x, ball.y, ball.radius, 0, Math.PI * 2); ctx.fill();scoreDisplay.textContent = `${scoreLeft} : ${scoreRight}`; requestAnimationFrame(gameLoop); } function ballReset() { ball.x =canvas.width / 2; ball.y =canvas.height / 2; ball.speedX = (Math.random()> 0.5 ? 5 : -5) * (Math.random() * 0.5 + 0.75); ball.speedY = (Math.random() * 4 - 2); } gameLoop(); </script></body></html>

 

 

https://anond.hatelabo.jp/20250706011306#

Permalink |記事への反応(1) | 01:18

このエントリーをはてなブックマークに追加ツイートシェア

Claudeが作ってくれたやつ

<html lang="ja"><head>    <meta charset="UTF-8">    <metaname="viewport" content="width=device-width, initial-scale=1.0">    <title>PONG Game</title>    <style>body {margin: 0;padding: 0;background-color: #000;            display:flex;            justify-content: center;            align-items: center;min-height:100vh;            font-family: 'Courier New', monospace;color:white;        }```    .game-container {text-align: center;    }canvas {border: 2px solidwhite;background-color: #000;    }        .score {        font-size: 24px;margin:20px 0;        letter-spacing: 2px;    }        .controls {margin-top:20px;        font-size: 14px;        opacity: 0.8;    }        .start-button {background-color: #333;color:white;border: 2px solidwhite;padding:10px20px;        font-size: 16px;        cursor: pointer;        font-family: 'Courier New', monospace;margin:10px;    }        .start-button:hover {background-color:white;color: black;    }</style>```</head><body>
<canvasid="gameCanvas" width="800" height="400"></canvas>
<button class="start-button">ゲーム開始</button> <button class="start-button">リセット</button>

W/Sキーまたは ↑/↓ 矢印キーパドル操作
```<script> //Canvas要素とコンテキストの取得constcanvas = document.getElementById('gameCanvas');const ctx =canvas.getContext('2d'); //ゲーム状態管理 let gameRunning =false; let animationId; //スコア要素の取得const playerScoreElement = document.getElementById('playerScore');constcomputerScoreElement = document.getElementById('computerScore'); //ゲームオブジェクト定義const game = { //プレイヤーパドル(左側) playerPaddle: { x:10, y:canvas.height / 2 - 50, width:10, height:100, speed: 5, upPressed:false, downPressed:false }, //コンピューターパドル(右側)computerPaddle: { x:canvas.width -20, y:canvas.height / 2 - 50, width:10, height:100, speed: 3.5, //プレイヤーより少し遅く設定 targetY:canvas.height / 2 - 50 }, //ボールの設定 ball: { x:canvas.width / 2, y:canvas.height / 2,radius: 8, speedX: 4, speedY: 3, maxSpeed: 8 }, //スコア管理score: { player: 0,computer: 0 } }; //キーボード入力の処理constkeys = {}; //キーが押されたときの処理 document.addEventListener('keydown', (e) => {keys[e.key.toLowerCase()] =true; //ゲームが停止中にスペースキーゲーム開始 if (e.key === ' ' && !gameRunning) { startGame(); } }); //キーが離されたときの処理 document.addEventListener('keyup', (e) => {keys[e.key.toLowerCase()] =false; }); //パドルの移動処理 function updatePaddles() { //プレイヤーパドルの移動(W/Sキーまたは矢印キー) if (keys['w'] ||keys['arrowup']) { game.playerPaddle.y -= game.playerPaddle.speed; } if (keys['s'] ||keys['arrowdown']) { game.playerPaddle.y += game.playerPaddle.speed; } //プレイヤーパドルの画面外移動を防ぐ if (game.playerPaddle.y < 0) { game.playerPaddle.y = 0; } if (game.playerPaddle.y>canvas.height - game.playerPaddle.height) { game.playerPaddle.y =canvas.height - game.playerPaddle.height; } //コンピューターパドルAI処理 //ボール位置を追跡するが、完璧ではない動きを実装const ballCenterY = game.ball.y;const paddleCenterY = game.computerPaddle.y + game.computerPaddle.height / 2; //ボールパドルの中心の差を計算constdifference = ballCenterY - paddleCenterY; // 反応に少し遅れを持たせる(人間らしい動き) if (Math.abs(difference)>10) { if (difference> 0) { game.computerPaddle.y += game.computerPaddle.speed; } else { game.computerPaddle.y -= game.computerPaddle.speed; } } //コンピューターパドルの画面外移動を防ぐ if (game.computerPaddle.y < 0) { game.computerPaddle.y = 0; } if (game.computerPaddle.y>canvas.height - game.computerPaddle.height) { game.computerPaddle.y =canvas.height - game.computerPaddle.height; } } //ボールの移動と衝突判定 function updateBall() { //ボール位置更新 game.ball.x += game.ball.speedX; game.ball.y += game.ball.speedY; //上下の壁との衝突判定 if (game.ball.y - game.ball.radius < 0 || game.ball.y + game.ball.radius>canvas.height) { game.ball.speedY = -game.ball.speedY; } //プレイヤーパドルとの衝突判定 if (game.ball.x - game.ball.radius < game.playerPaddle.x + game.playerPaddle.width && game.ball.x + game.ball.radius> game.playerPaddle.x && game.ball.y + game.ball.radius> game.playerPaddle.y && game.ball.y - game.ball.radius < game.playerPaddle.y + game.playerPaddle.height) { //ボールパドルに当たった位置によって跳ね返り角度を調整const hitPos = (game.ball.y - (game.playerPaddle.y + game.playerPaddle.height / 2)) / (game.playerPaddle.height / 2); game.ball.speedX = Math.abs(game.ball.speedX); game.ball.speedY = hitPos * 4; //ボールの速度を少し上げる(ゲームをエキサイティングに) if (Math.abs(game.ball.speedX) < game.ball.maxSpeed) { game.ball.speedX *= 1.02; } } //コンピューターパドルとの衝突判定 if (game.ball.x + game.ball.radius> game.computerPaddle.x && game.ball.x - game.ball.radius < game.computerPaddle.x + game.computerPaddle.width && game.ball.y + game.ball.radius> game.computerPaddle.y && game.ball.y - game.ball.radius < game.computerPaddle.y + game.computerPaddle.height) { //ボールパドルに当たった位置によって跳ね返り角度を調整const hitPos = (game.ball.y - (game.computerPaddle.y + game.computerPaddle.height / 2)) / (game.computerPaddle.height / 2); game.ball.speedX = -Math.abs(game.ball.speedX); game.ball.speedY = hitPos * 4; //ボールの速度を少し上げる if (Math.abs(game.ball.speedX) < game.ball.maxSpeed) { game.ball.speedX *= 1.02; } } //ボールが左右の壁を越えた場合得点処理) if (game.ball.x < 0) { //コンピューター得点 game.score.computer++; updateScore(); resetBall(); } else if (game.ball.x>canvas.width) { //プレイヤー得点 game.score.player++; updateScore(); resetBall(); } } //ボールリセット得点後の処理) function resetBall() { game.ball.x =canvas.width / 2; game.ball.y =canvas.height / 2; //ランダムな方向でボールを発射 game.ball.speedX = (Math.random()> 0.5 ? 4 : -4); game.ball.speedY = (Math.random() - 0.5) * 6; } //スコア表示の更新 function updateScore() { playerScoreElement.textContent = game.score.player;computerScoreElement.textContent = game.score.computer; } // 描画処理 functiondraw() { // 画面をクリア ctx.fillStyle = '#000'; ctx.fillRect(0, 0,canvas.width,canvas.height); //中央の点線を描画 ctx.setLineDash([5, 5]); ctx.beginPath(); ctx.moveTo(canvas.width / 2, 0); ctx.lineTo(canvas.width / 2,canvas.height); ctx.strokeStyle = '#fff'; ctx.stroke(); ctx.setLineDash([]); //プレイヤーパドルを描画 ctx.fillStyle = '#fff'; ctx.fillRect(game.playerPaddle.x, game.playerPaddle.y, game.playerPaddle.width, game.playerPaddle.height); //コンピューターパドルを描画 ctx.fillRect(game.computerPaddle.x, game.computerPaddle.y, game.computerPaddle.width, game.computerPaddle.height); //ボールを描画 ctx.beginPath(); ctx.arc(game.ball.x, game.ball.y, game.ball.radius, 0, Math.PI * 2); ctx.fillStyle = '#fff'; ctx.fill(); //ゲームが停止中の場合メッセージを表示 if (!gameRunning) { ctx.fillStyle = '#fff'; ctx.font = '20px Courier New'; ctx.textAlign = 'center'; ctx.fillText('ゲーム開始ボタンを押してください',canvas.width / 2,canvas.height / 2 + 60); } } //ゲームのメインループ function gameLoop() { if (!gameRunning) return; updatePaddles(); updateBall();draw(); animationId = requestAnimationFrame(gameLoop); } //ゲーム開始 function startGame() { gameRunning =true; gameLoop(); } //ゲームリセット function resetGame() { gameRunning =false; if (animationId) { cancelAnimationFrame(animationId); } //スコアリセット game.score.player = 0; game.score.computer = 0; updateScore(); //ボールパドル位置リセット game.ball.x =canvas.width / 2; game.ball.y =canvas.height / 2; game.ball.speedX = 4; game.ball.speedY = 3; game.playerPaddle.y =canvas.height / 2 - 50; game.computerPaddle.y =canvas.height / 2 - 50;draw(); } // 初期描画draw();</script>```</body></html>

 

 

https://anond.hatelabo.jp/20250706011306#

Permalink |記事への反応(0) | 01:14

このエントリーをはてなブックマークに追加ツイートシェア

2025-07-05

🍬資本主義平等なのか飴の配布で考えてみよう🍬

pythonimport randomimport numpyasnpimport matplotlib.pyplotas pltfrom collections importdefaultdict# 飴の配布システムシミュレーションclass CandyDistributionSystem:def __init__(self):        """設計意図: このシステム経済における資源分配の不平等性をモデル化しています特に少数の特権層(Aグループ)が富を集中させ、再分配システムからも不均衡に利益を得る構造問題表現しています。        """        # 各グループの人数設定        self.group_a_count = 8        self.group_b_count = 2498        self.group_c_count = 7494        self.total_participants = self.group_a_count + self.group_b_count + self.group_c_count                # 飴の提出数設定        self.contribution_per_a = 624        self.contribution_per_b = 2        self.contribution_per_c = 1                # 各グループの総貢献計算        self.total_a_contribution = self.group_a_count * self.contribution_per_a        self.total_b_contribution = self.group_b_count * self.contribution_per_b        self.total_c_contribution = self.group_c_count * self.contribution_per_c        self.total_contribution = self.total_a_contribution + self.total_b_contribution + self.total_c_contribution                # 配布用と貯金用の飴の区分        self.distribution_limit =10000        self.savings =max(0, self.total_contribution - self.distribution_limit)                # 結果追跡用の辞書        self.results = {            'A':defaultdict(int),            'B':defaultdict(int),            'C':defaultdict(int)        }def distribute_candies(self, method='original'):        """設計意図: 配布方法選択によって、特権固定化格差拡大がどのように進むかを        示します。'original'メソッド意図的にAグループ優遇するよう設計されています。                Parameters:        -----------        method:str            配布方法 ('original', 'lottery', 'first_come', 'new_condition', 'fair')        """        # Aグループへの確定配布        a_distribution = 625 * self.group_a_count        remaining = self.distribution_limit - a_distribution                # 残りの参加者数        remaining_participants = self.total_participants - self.group_a_count                # Aグループの結果記録        for _ in range(self.group_a_count):            self.results['A'][625] += 1                # 各配布方法によって処理が異なる        if method == 'original':            #オリジナル問題設定通りの配布(5000人に1個ずつ、残りは0個)            lucky_count = remaining  # 5000人が当選                        # B+Cグループの混合リスト作成            bc_participants = [(1, 'B')] * self.group_b_count + [(2, 'C')] * self.group_c_count            random.shuffle(bc_participants)                        #当選者に配布            for i in range(len(bc_participants)):                participant_id,group = bc_participants[i]                if i < lucky_count:                    self.results[group][1] += 1                else:                    self.results[group][0] += 1                            elif method == 'lottery':            #抽選方式(BとCグループから無作為に5000人選出)            bc_participants = [(1, 'B')] * self.group_b_count + [(2, 'C')] * self.group_c_count            winners = random.sample(bc_participants, remaining)                        #当選落選カウント            for _,group in winners:                self.results[group][1] += 1                        #落選者のカウント            self.results['B'][0] = self.group_b_count - self.results['B'][1]            self.results['C'][0] = self.group_c_count - self.results['C'][1]                    elif method == 'first_come':            # 先着順方式アクセス速度による先着順を乱数シミュレート)            #設計意図: 先着順は単なる運の要素を超えて、情報格差技術格差も含む制度設計            bc_participants = [(1, 'B')] * self.group_b_count + [(2, 'C')] * self.group_c_count                        #現実では、情報を早く得られる人や高速インターネット接続を持つ人が有利            # これをシミュレートするため、Bグループわずかなアドバンテージを与える            bc_speeds = []            forid,group in bc_participants:                ifgroup == 'B': speed = random.random() + 0.1  # Bグループに小さなアドバンテージ                else: speed = random.random()                bc_speeds.append((id,group, speed))                        # 速度順にソート            bc_speeds.sort(key=lambda x: x[2], reverse=True)                        #当選者決定            for i in range(len(bc_speeds)):                _,group, _ = bc_speeds[i]                if i < remaining:                    self.results[group][1] += 1                else:                    self.results[group][0] += 1                            elif method == 'new_condition':            # 追加条件方式恣意的な条件を設定)            #設計意図: 新たな条件の設定は往々にして既存特権を温存するように設計される            bc_participants = [(i, 'B', random.random()) for i in range(self.group_b_count)] + \                             [(i, 'C', random.random()) for i in range(self.group_c_count)]                        # Bグループに有利な条件を設定(例:特定知識スキルを持つ人のみ)            # この「条件」は表面上は中立的だが、実際には特定グループに有利になるよう設計def meets_condition(participant):                _,group, rand_val = participant                ifgroup == 'B':                    return rand_val> 0.3  # Bグループには70%の確率合格                else:                    return rand_val> 0.7  # Cグループには30%の確率合格                        # 条件に合致する人を抽出            eligible = [p for p in bc_participants if meets_condition(p)]                        # 条件に合致する人が多すぎる場合抽選            iflen(eligible)> remaining:                winners = random.sample(eligible, remaining)            else:                # 条件に合致する人が足りない場合、全員に配布                winners = eligible                        #当選者をカウント            for _,group, _ in winners:                self.results[group][1] += 1                        #落選者のカウント            self.results['B'][0] = self.group_b_count - self.results['B'][1]            self.results['C'][0] = self.group_c_count - self.results['C'][1]                    elif method == 'fair':            # 公平な再分配方式(貢献度に応じた配布)            #設計意図: この方法は「貯金分」も含めた全ての飴を、各グループの貢献度に応じて分配            # これにより構造的不平等を軽減、結果としてより多くの人が少なくとも損をしない状態になる                        # 全飴(貯金分も含む)を使った配布total_to_distribute = self.total_contribution                        # 各グループの貢献比率計算            a_ratio = self.total_a_contribution / self.total_contribution            b_ratio = self.total_b_contribution / self.total_contribution            c_ratio = self.total_c_contribution / self.total_contribution                        # 各グループへの配布数決定            a_share = int(total_to_distribute * a_ratio)            b_share = int(total_to_distribute * b_ratio)            c_share = int(total_to_distribute * c_ratio)                        # 端数調整            remainder =total_to_distribute - (a_share + b_share + c_share)            if remainder> 0:                # 端数は最も人数の多いCグループに                c_share += remainder                        # Aグループの配布(均等配分)            per_a = a_share // self.group_a_count            self.results['A'][per_a] = self.group_a_count                        # Bグループの配布(均等配分)            per_b = b_share // self.group_b_count            b_remainder = b_share % self.group_b_count                        self.results['B'][per_b] = self.group_b_count - b_remainder            if per_b + 1> 0 and b_remainder> 0:                self.results['B'][per_b + 1] = b_remainder                        # Cグループの配布(均等配分)            per_c = c_share // self.group_c_count            c_remainder = c_share % self.group_c_count                        self.results['C'][per_c] = self.group_c_count - c_remainder            if per_c + 1> 0 and c_remainder> 0:                self.results['C'][per_c + 1] = c_remainderdef calculate_net_gain(self):        """設計意図: この関数は各グループ純利益/損失を計算し、資源分配の公平性定量的評価できるようにします。純利益/損失は個人観点から見た経済的公正性の重要指標です。        """net_gains = {}                # Aグループ純利益計算        a_contribution = self.contribution_per_a        a_distribution = list(self.results['A'].keys())[0]  # 全員が同じ数を受け取る前提net_gains['A'] = a_distribution - a_contribution                # BとCグループ純利益計算(加重平均)        forgroup, contribution_per_person in [('B', self.contribution_per_b), ('C', self.contribution_per_c)]:total_gain = 0            for received, count in self.results[group].items():total_gain += (received - contribution_per_person) * countnet_gains[group] =total_gain / (self.group_b_count ifgroup == 'B' else self.group_c_count)                    returnnet_gainsdef analyze_results(self):        """設計意図: この分析関数は、各グループの分配結果を詳細に調査し、制度設計公平性、貢献度と報酬関係、およびシステムの持続可能性を評価します。政策分析においては、こうした多角的検証重要です。        """        # 各グループ純利益/損失net_gains = self.calculate_net_gain()                # 貢献度分析        contribution_percentage = {            'A': (self.total_a_contribution / self.total_contribution) *100,            'B': (self.total_b_contribution / self.total_contribution) *100,            'C': (self.total_c_contribution / self.total_contribution) *100        }                # 飴を受け取った人の割合        received_percentage = {            'A': sum(count for received, count in self.results['A'].items() if received> 0) / self.group_a_count *100,            'B': sum(count for received, count in self.results['B'].items() if received> 0) / self.group_b_count *100,            'C': sum(count for received, count in self.results['C'].items() if received> 0) / self.group_c_count *100        }                #分析結果の表示print("\n===== 飴の配布システム分析 =====")print(f"総飴数: {self.total_contribution}個 (分配用: {self.distribution_limit}個,貯金: {self.savings}個)")print("\n---グループごとの貢献と結果 ---")        forgroup in ['A', 'B', 'C']:group_size =getattr(self, f"group_{group.lower()}_count")            contribution_per_person =getattr(self, f"contribution_per_{group.lower()}")total_contribution =getattr(self, f"total_{group.lower()}_contribution")print(f"\n{group}グループ ({group_size}人):")print(f"  貢献: 1人あたり{contribution_per_person}個 (総計: {total_contribution}個, 全体の{contribution_percentage[group]:.1f}%)")print(f"  受け取り状況:")                        for received, count in sorted(self.results[group].items()):print(f"    {received}個: {count}人 ({count/group_size*100:.1f}%)")print(f"  飴を受け取った割合: {received_percentage[group]:.1f}%")print(f"純利益/損失: 1人あたり平均 {net_gains[group]:.2f}個")print("\n--- 全体的な公平性分析 ---")print(f"最も得したグループ: {max(net_gains,key=net_gains.get)}グループ (+{max(net_gains.values()):.2f}個/人)")print(f"最も損したグループ: {min(net_gains,key=net_gains.get)}グループ ({min(net_gains.values()):.2f}個/人)")                # 全員に飴が配布されたかどうかall_received =all(sum(count for received, count in self.results[group].items() if received> 0) ==getattr(self, f"group_{group.lower()}_count") forgroup in ['A', 'B', 'C'])print(f"\n前提条件「全員に配布」の充足: {'はい' ifall_received else 'いいえ'}")        if notall_received:total_without = sum(self.results['B'][0] + self.results['C'][0])print(f"  飴を受け取れなかった人数: {total_without}人")                returnnet_gains, contribution_percentage, received_percentagedef visualize_results(self):        """設計意図:データ可視化政策効果や不平等性を直感的に理解するために重要です。        このようなグラフィカル表現によって、各グループ間の格差制度設計問題点を        一目で理解できるようになります。        """        #グラフセットアップfig, axes = plt.subplots(2, 2,figsize=(14,10))                # 1. 貢献度のグラフ        contributions = [self.total_a_contribution, self.total_b_contribution, self.total_c_contribution]        axes[0, 0].bar(['Aグループ', 'Bグループ', 'Cグループ'], contributions)        axes[0, 0].set_title('グループごとの総貢献飴数')        axes[0, 0].set_ylabel('飴の数')                # 貢献度の割合アノテーションとして追加total = sum(contributions)        for i, v in enumerate(contributions):            percentage = v /total *100            axes[0, 0].text(i, v +100, f'{percentage:.1f}%', ha='center')                # 2. 1人あたりの貢献度と受け取り数の比較group_names = ['Aグループ', 'Bグループ', 'Cグループ']        contribution_per_person = [self.contribution_per_a, self.contribution_per_b, self.contribution_per_c]                # 各グループの平均受け取り数を計算        received_per_person = []        forgroup, letter inzip(group_names, ['A', 'B', 'C']):total_received = sum(received * count for received, count in self.results[letter].items())group_size =getattr(self, f"group_{letter.lower()}_count")            received_per_person.append(total_received /group_size)                x =np.arange(len(group_names))        width = 0.35                axes[0, 1].bar(x - width/2, contribution_per_person, width, label='提出')        axes[0, 1].bar(x + width/2, received_per_person, width, label='受け取り')                #純利益/損失をアノテーションとして追加        for i in range(len(group_names)):net = received_per_person[i] - contribution_per_person[i]color = 'green' ifnet>= 0 else 'red'            axes[0, 1].text(i,max(received_per_person[i], contribution_per_person[i]) + 5,                         f'{"+" ifnet>= 0 else ""}{net:.1f}', ha='center',color=color)                axes[0, 1].set_title('1人あたりの提出・受け取り飴数比較')        axes[0, 1].set_xticks(x)        axes[0, 1].set_xticklabels(group_names)        axes[0, 1].set_ylabel('飴の数')        axes[0, 1].legend()                # 3. 各グループの受け取り状況の分布        # 各グループの受け取り状況を積み上げ棒グラフ表現group_sizes = [self.group_a_count, self.group_b_count, self.group_c_count]        received_counts = []        not_received_counts = []                for letter, size inzip(['A', 'B', 'C'],group_sizes):            received = sum(count for received, count in self.results[letter].items() if received> 0)            received_counts.append(received)            not_received_counts.append(size - received)                axes[1, 0].bar(group_names, received_counts, label='飴を受け取った人数')        axes[1, 0].bar(group_names, not_received_counts, bottom=received_counts, label='飴を受け取れなかった人数')                #割合アノテーションとして追加        for i in range(len(group_names)):            ifgroup_sizes[i]> 0:                percentage = received_counts[i] /group_sizes[i] *100                axes[1, 0].text(i, received_counts[i] / 2, f'{percentage:.1f}%', ha='center')                axes[1, 0].set_title('グループごとの飴受け取り状況')        axes[1, 0].set_ylabel('人数')        axes[1, 0].legend()                # 4. 貢献度vs報酬の分配公平性        # 貢献度と最終的な飴の配分の比較円グラフ表現total_contribution = self.total_contribution        contribution_shares = [self.total_a_contribution /total_contribution,                             self.total_b_contribution /total_contribution,                             self.total_c_contribution /total_contribution]                # 実際の配分シェア計算        distribution_shares = []        for letter in ['A', 'B', 'C']:total_received = sum(received * count for received, count in self.results[letter].items())            distribution_shares.append(total_received / self.distribution_limit)                # 2つの円グラフを並べて表示        ax4_1 = axes[1, 1].inset_axes([0, 0, 0.45, 1])        ax4_2 = axes[1, 1].inset_axes([0.55, 0, 0.45, 1])                ax4_1.pie(contribution_shares, labels=group_names, autopct='%1.1f%%')        ax4_1.set_title('飴の貢献度割合')                ax4_2.pie(distribution_shares, labels=group_names, autopct='%1.1f%%')        ax4_2.set_title('飴の配分割合')                axes[1, 1].axis('off')                plt.tight_layout()        plt.show()# 飴の配布システムシミュレートcandy_system = CandyDistributionSystem()#オリジナルの配布方法を実行print("\n=====オリジナルの配布方法 =====")candy_system.distribute_candies(method='original')original_results = candy_system.analyze_results()candy_system.visualize_results()# 公平な配布方法実験print("\n\n===== 公平な配布方法シミュレーション =====")fair_system = CandyDistributionSystem()fair_system.distribute_candies(method='fair')fair_results = fair_system.analyze_results()fair_system.visualize_results()# 公平な配布と元の配布の比較print("\n\n===== 配布方法比較 =====")print("オリジナル方式と公平方式純利益/損失差:")net_diff = {}forgroup in ['A', 'B', 'C']:original_net =original_results[0][group]    fair_net = fair_results[0][group]diff = fair_net -original_netnet_diff[group] =diffprint(f"{group}グループ: {'+'  ifdiff> 0 else ''}{diff:.2f}個/人")print("\n結論:")ifnet_diff['A'] < 0 andnet_diff['B']> 0 andnet_diff['C']> 0:print("公平な再分配により、Aグループ特権が減少し、BとCグループの状況が改善されます。")print("これは構造的不平等の緩和に効果的です。")elifnet_diff['A']> 0:print("興味深いことに、公平な再分配ではAグループさえも利益を得られます。")print("これは、現行システム特定グループだけでなく全体の非効率性につながっていることを示唆しています。")

anond:20250705100755anond:20250705112807

Permalink |記事への反応(1) | 10:24

このエントリーをはてなブックマークに追加ツイートシェア

2025-07-04

https://qiita.com/KoichiYasuoka/items/2c7f947db259db3c5ffe#comments

すごいとしかいいようがない…

vuejsのv-forにkeyを突っ込まないとleafletのmarker にネストさせたpopupを閉じた時に変な動作をすると書こうとしたら、ものすごい記事が引っかかってしまった。

JavaScriptエミュレータを書いてる人がいたとは。

Permalink |記事への反応(0) | 06:02

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-26

AIの仕組み

大規模言語モデル(LLM)の根幹にあるのは数学的な原理です。

ここでは、その仕組みを3つの要点に絞って、数式を交えながらシンプル解説します。

1. LLMの基本目標:次の単語確率予測する

LLMの最も基本的タスクは、「ある単語の並び(文脈)が与えられたときに、次に来る単語は何か?」を確率的に予測することです。これを数式で表すと、以下のようになります

P(次のトークン |コンテキストウィンドウ)

LLMは、インターネット上のブログ記事書籍といった膨大なテキストデータを読み込みます

そして、文章中のあらゆる箇所で「次の単語」を予測するクイズを延々と解き続けます

例えば、「今日の天気は晴れです」という文章学習する場合

モデルは、P(晴れ |今日の天気は) の確率100% (または1.0)に近づくように、内部のパラメータ(後述する重み)を少しだけ調整します。

このプロセスを何十億、何兆回と繰り返すことで、モデル単語の様々なつながり方や文法さらには世界知識に関するパターン学習していきます

学習済みのモデルに「AI未来は」と入力すると、モデルは語彙に含まれる全単語に対して、次に来る確率計算します。

...

そして、最も確率の高い「明るい」を選んだり、確率分布に従ってランダム単語を選んだりすることで、文章を生成していくのです。

2. Transformerとバックプロパゲーション

では、どのようにしてLLMは単なる単語の並びだけでなく、複雑な文脈理解するのでしょうか?

その技術が Transformerであり、その学習を支えるのがバックプロパゲーション です。

Transformerの最大の特徴は自己注意機構 (Self-Attention) です。

これは、文章中の単語同士の関連性の強さを計算し、どの単語に「注意」を向けるべきかを判断する仕組みです。

例えば、「その猫は疲れていた。なぜなら一日中ネズミを追いかけていたからだ。」という文において、「その猫」が「疲れていた」理由理解するためには、「追いかけていた」という単語との関連性が重要です。

自己注意機構は、各単語について以下の3つのベクトルを生成します。

  • Q (Query):情報を問い合わせる側の単語(例:「その猫」)
  • K (Key): 問い合わせに応じる側の単語(文中の他の全単語
  • V (Value): Kが持つ情報の中身

そして、以下の計算概念式)によって、文脈を反映した新しい単語表現を作り出します。

Attention(Q, K, V) = softmax( (Q Kᵀ) / √(dₖ) ) V

1. Q Kᵀ: Queryと各Keyの関連度(内積)を計算します。似ている単語ほど値が大きくなります

2. / √(dₖ): 値が大きくなりすぎないように調整します(スケーリング)。

3. softmax:計算した関連度スコアを、合計が1になる確率分布に変換します。これにより、関連性の強い単語ほど高い重みが与えられます

4. V: この重みを使って、各単語情報Value)を重み付けして足し合わせます

この結果、単語は元の意味だけでなく、「文脈の中でどのような役割果たしているか」という情報を含んだベクトルに変換されます

Transformerはこの処理を何層も積み重ねることで、非常に複雑で長期的な依存関係を捉えることができるのです。

バックプロパゲーション誤差逆伝播法)は、モデル予測と正解との「誤差」を計算し、その誤差を小さくするために、モデル内の膨大な数のパラメータ(重み)をどう調整すればよいかを教えてくれるアルゴリズムです。

1. 順伝播 (Forward Pass):入力コンテキスト)をTransformerに通し、次の単語確率分布予測します。

2. 損失計算 (Loss Calculation):予測した確率分布と、正解の単語とのズレ(誤差)を損失関数(例:クロスエントロピー誤差)で計算します。損失が大きいほど、予測が間違っていることを意味します。`Loss = -Σ yᵢlog(pᵢ)` (yᵢ は正解なら1, それ以外は0。pᵢ はモデル予測確率)

3. 逆伝播 (Backward Pass): この損失を、出力層から入力層に向かって逆方向に伝播させます微分連鎖律を使い、「各パラメータが最終的な損失にどれだけ貢献したか(=勾配)」を計算します。

4.パラメータ更新: この勾配に基づき、損失が小さくなる方向へ各パラメータを少しだけ更新します。

この「予測 → 誤差計算 → 勾配計算更新」というサイクルが、LLMの学習の基本です。

3.オプティマイザ

バックプロパゲーション計算された勾配を使って、具体的にどのようにパラメータ更新するかを決めるのがオプティマイザ(最適化手法)の役割です。

最も基本的な考え方は、損失という名の「谷」の底(最小値)に向かって、勾配(傾き)が最も急な方向に一歩ずつ下っていく勾配降下法 (GradientDescent)です。

θ_new = θ_old - η ∇L

現在、最も広く使われているオプティマイザの一つが Adam です。これは、勾配降下法をより賢くしたもので、主に2つの工夫がされています

1.慣性 (Momentum):過去の勾配の移動平均を保持します。これにより、坂道を転がるボールのように、同じ方向に進み続ける場合は加速し、学習が停滞しにくくなります

2.適応的な学習率 (Adaptive LearningRate):パラメータごとに学習率を自動で調整します。頻繁に更新されるパラメータは慎重に(学習率を小さく)、あまり更新されないパラメータは大胆に(学習率を大きく)更新することで、学習効率します。

Adamのような優れたオプティマイザがあるからこそ、何十億ものパラメータを持つ巨大なLLMを、現実的時間で安定して学習させることができるのです。

まとめ

Transformer というアーキテクチャが、自己注意機構によって文脈理解し、次の単語確率 P(next token | context) を予測する。

その予測と正解の誤差をバックプロパゲーション計算し、その誤差を最小化するように Adam などのオプティマイザがモデルパラメータ効率的に更新する。

このサイクルを膨大なデータで繰り返すことで、LLMは人間のように自然言語能力を獲得していく。

Permalink |記事への反応(1) | 14:10

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-21

dorawii

公開鍵

-----BEGINPGP PUBLICKEY BLOCK-----mDMEaCQbLxYJKwYBBAHaRw8BAQdAwEoXLg4O32fWNUJVUkevhDBEkHByTIinCb4st5a1jyC0HmRvcmF3aWkgPGRvcmF3aWkyMDBAZ21haWwuY29tPoiZBBMWCgBBFiEExHvHi8KVUUlYgykecDHbLm7OPkgFAmgkGy8CGwMFCQWk2AEFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQcDHbLm7OPkh17gEA0la91qrz5lo5eUCln/SA/S7cVfoeb6Iu8gGbnVGcACMBANXDLaf2UqXa7wuCST+c46bX//+spAoGsTFKjRSkwS4OuDgEaCQbLxIKKwYBBAGXVQEFAQEHQPUUyJMJAHkeG3N5UzbzRdFP9Pw9Mo22Cy58nrJyHQl8AwEIB4h+BBgWCgAmFiEExHvHi8KVUUlYgykecDHbLm7OPkgFAmgkGy8CGwwFCQWk2AEACgkQcDHbLm7OPkjAMwD/QRXrSFaGbbFwDpMiQaT9HDES7Dh1P9q70yF7JSwLsF8A/iu+LAJiJkxlyo422exO2A5GtGwu784AJBdRjSR34nIJ=lm85-----ENDPGP PUBLICKEY BLOCK-----
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250621175104# -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaFZyngAKCRBwMdsubs4+SOAdAQDyd1cd8ep8HO8vGKTAWHaBMCUEcDTou5ck13hbA488QAEAofRZPPaeN2+OXIGLi+XhpTm8/Bk0yLsNV0zHq5MSzw8==Rek2-----ENDPGP SIGNATURE-----

Permalink |記事への反応(1) | 17:51

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-20

dorawii

元の署名

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaFO4xwAKCRBwMdsubs4+

SItxAQCNZ8S9wY0xH3CNpNk4LtChRdDJzP6OB+64yXORJFtQSwD/cx0MDTyuCnkr

b38xvZy8AhYooIn9oFhTj63hdc7+bg8=

=4m9Y

それに対してtxAQCNZ8S9wY0xH3の部分等を入れ替えて捏造して偽物だとデマを張る馬鹿

以下元の署名検証した場合コードと実行結果の標準出力引用(Windows環境)

gpg --verifyaaa.txtgpg: Signature made 06/19/25 16:14:15 ���� (�W����)gpg:                using EDDSAkey C47BC78BC29551495883291E7031DB2E6ECE3E48gpg: Good signature from "dorawii <dorawii200@gmail.com>" [ultimate]
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250620183843 -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaFUsJAAKCRBwMdsubs4+SN6JAQD6kuVhJ0k1WJcRjHwwPOjDqzGN15ViiiGfYjsBF3aIPAEAlz8ERS0ayaZXbgVi0LL/WEjtsWOeoUjHxheqx6+v6gQ==NnKx-----ENDPGP SIGNATURE-----

Permalink |記事への反応(1) | 18:38

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-19

dorawii

なんか皮肉れた気でいるのかもしれないが

gpg --edit-key dorawii200@gmail.com

trust

コマンド打っておいてないだけの話やん。お前の環境にまで干渉できねーよw

-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250619163134 -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaFO81gAKCRBwMdsubs4+SGK9AQCermr1NjowAacx9yqXntUTK70SWLz1QsKRuAIVPkkakQEA5lXialYGBzXzzJ3ByH7cN8Knjlxp3WDCJg4bDtqelQs==by/r-----ENDPGP SIGNATURE-----

Permalink |記事への反応(2) | 16:31

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-17

anond:20250616210101

元増田です。長文の返信ありがとうアニメマンガ小説は見るけどゲーム特にノベルゲームは全くの未開拓から助かる。

(自分でやるゲームはもっぱらマイクラやrimworldのような箱庭ゲームストーリーのある物の摂取ゲーム実況を少し見る程度)

上げてくれたゲームのなかでは、原神を序盤少しだけ自分プレイしたし断片的にストーリーゲーム実況で楽しんだよ。

あと、原神公式Youtubeチャンネルキャラの背景の掘り下げ動画キャラ制作陣へのインタビューとかも楽しんだ。

好きなのはウェンティー中国風の少女キャラ特に後者キャラ制作陣がどういう世界を目指しているかを表していると思う。

key作品アニメ化はたいてい見てるし、原神のアニメプロジェクトも楽しみ。

====

おっしゃるとおり、ゲームプレイするには小説アニメ視聴より時間も体力も必要だし、私にとって未開拓から及び腰たったけど、

中国ゲームストーリーが素晴らしいというのはよく耳にするし、また少し見てみるよ。

====

しかし、構想に10単位時間をかけているとは思わなかった。

現代アニメは高品質作品に掛かるコストに見合う収益構造が無いので時間をかけて長尺な作品を作れる環境にないのは課題だと思う。

(適量であればガチャは悪い文化ではなかった?経営者株主に誘惑に抗う長期的な視点があれば適度なバランス調整が可能なのかもしれない)

ともかく、色々教えてくれてありがとう

Permalink |記事への反応(0) | 06:05

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-02

鈴川エディタEmEditorで少ないメモリー使用量で巨大テキストファイル編集できるとうたってるが、.NETでも見事に再現できたぞ。

1.2億行×100文字の全置換えでGCメモリー使用量は340MB程度で、行の操作86MB程度、合わせて426MBだ。

その辺の.NETテキストエディタコンポーネントに組み込んでも500MBぐらいで済むと思う。

(その代わりワークファイルは30GBぐらいは行ってるはず)

鍵はropeというデータ構造使用することとropeアクセスする際、ディスクに保存する機構を付け加えるだけだ。

特にソースコードで見るべき個所はBigList.cs、Node.cs、DiskPinableContentDataStore.csの所だけだ。

多少遅くて構わないなら、ディスクに保存することはそこまで難しくはない。

メモリーマップファイルは何かと面倒なので使ってないが、.NETでMMDataStructuresとかメモリーマップファイルを扱うやつがあるんで、メモリーマップファイルでも行けるはずだ。

benchmark start

size:120000000

AllocatedGC Memory:66,304bytes

addtime:173334ms

AllocatedGC Memory:101,257,168bytes

replace 1time:816628ms

AllocatedGC Memory:101,247,232bytes

replace 2time:1179279ms

AllocatedGC Memory:333,371,424bytes

replace 3time:1886714ms

AllocatedGC Memory:333,257,000bytes

enumratotiontime:1638579ms

AllocatedGC Memory:331,904,816bytes

clear buffer

AllocatedGC Memory:66,304bytes

addlinetime:46649ms

AllocatedGC Memory:86,939,136bytes

updatelinetime:77635ms

AllocatedGC Memory:87,272,912bytes

clear buffer

AllocatedGC Memory:69,448bytes

Finished.HitAnyKey

https://github.com/oonyanya/FooList

Permalink |記事への反応(0) | 21:24

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-01

anond:20250601104621

鍵泥棒のメソッド』『LUCKーKEY

ゴールデンスランバー

『ナミヤ雑貨店奇跡』『ナミヤ雑貨店奇跡 再生

いま、会いにゆきます』 『BeWith You

『リトル・フォレスト

『百円の恋』:『热辣滚烫(YOLO)』

家族はつらいよ』:『麻烦家族

容疑者Xの献身』:『嫌疑人X的献身

カイジ』:『动物世界Animal World)』

ザ・マジックアワー』 『トゥ・クール・トゥ・キル 〜殺せない殺し屋〜』 

がんばっていきまっしょい』:『激浪青春

世界の中心で、愛を叫ぶ』

 人狼韓国版あるらしい

Permalink |記事への反応(0) | 11:26

このエントリーをはてなブックマークに追加ツイートシェア

次の25件>
ログインユーザー登録
ようこそ ゲスト さん
Copyright (C) 2001-2025 hatena. All Rights Reserved.

[8]ページ先頭

©2009-2025 Movatter.jp