自分のサイトをプログラミングして作らないのはプログラマーとして問題なのでは?
ということで作った。
サイト自体は年の初めくらいにほぼ完成していたものの、デザインがいけてなかったり良いタイトルが思いつかなかったりで放置してた。
4か月かかったこのタイトルだが、アグロとはTCG文脈での「序盤から高い攻撃力を出して速攻する」ような戦術のことで、タイトルは寿司屋で速攻でマグロを頼むという意味。美味いからね、マグロ。
ゲームもあるのでアクセスして遊んでね!!!!!
SEOなど知らん
自分のサイトをプログラミングして作らないのはプログラマーとして問題なのでは?
ということで作った。
サイト自体は年の初めくらいにほぼ完成していたものの、デザインがいけてなかったり良いタイトルが思いつかなかったりで放置してた。
4か月かかったこのタイトルだが、アグロとはTCG文脈での「序盤から高い攻撃力を出して速攻する」ような戦術のことで、タイトルは寿司屋で速攻でマグロを頼むという意味。美味いからね、マグロ。
ゲームもあるのでアクセスして遊んでね!!!!!
新年から1ヶ月が経過しようとしていて、前クールの話の内容についてもだいたい忘れているわけですが、後からどんなアニメを見ていたのか振り返る際に記事にまとめられていた方が便利だと至り、25秋の話を書くことにしました。1ヶ月前に書けやというツッコミについては返す言葉は本当にないです。
25秋アニメ評価(見た範囲で)(左の方が強い)
あとはそれぞれのアニメにちょっとずつ触れます。敬語も捨てます。ネタバレはありません。
このクールの主役はウマ娘もスパイファミリーだったはずだが見てなかった。だってニコニコで最新話無料の対象外なんだもの俺は悪くねぇ!見てたら4.0~4.5くらいに入ってたと思う。
これら主役を除くと機械仕掛けのマリーが一際輝いていた。話の閉じ方がものすごく綺麗で好き。面白かったけど、2期は蛇足なのでやらないでほしい。
嘆きの亡霊や異世界カルテットらへんのシリーズものも普通に良かった。嘆きの亡霊については文句なし。異世界カルテットは登場人物が多すぎて話を捌けていなかったのがマイナス。3期になって影実メンバーが追加され、影実は私が好きな作品の一つだが、参加しなかった方が全体としては良かったと思う。ファン向けのアニメなんで話の完成度を気にしてもしょうがない気もするけど。
クールの中で1つは欲しい枠、アルマちゃんは家族になりたい。安定して面白かった。
わたたべを一言で表すなら、「関係性の構造を楽しむ」アニメだと思った。構造や謎が明らかになるにつれ、その構造が詰んでいることが良く分かるし、だからこそ今後のキャラの行動が気になり惹きつけてきた。逆に構造が判明しない序盤はそこまでだったと思う。評価が難しいアニメ。
悠久のユウグレは......オリジナルアニメってやっぱ難しいんでしょうね、という感想。ラノベや漫画原作だと基本的に面白い作品がアニメ化されて品質が多少担保されるわけだが、アニオリだとこれらの段階を飛ばしてしまうので、面白くない作品が淘汰されない。やっぱりヒット作を書けそうな原案者なり脚本家なりを起用するしかなさそう。ひびめしスタイルこそ最強。
銀八先生はツッコミが酷かった。本編第100話でダメな例として銀さんに指摘されてたツッコミそのままだったよね。続編やるらしいけど大丈夫なんですかね...。
果てしなきスカーレットの感想や考察を述べていきます。記事後半にはネタバレも含みます。
何故この映画を見たのかと言えば、それは何故わざわざジェットコースターに乗るのか、何故わざわざお化け屋敷に入るのかという問いと同じであり、つまりは怖いもの見たさであった。暇なんだと思う。YouTubeでは酷評に晒され、行きつけの美容院では、
「この映画の感想を聞くと皆さん『うーん』と黙ってしまうんですよ...w」
と言われ、逆に自分の目で確認したくなってしまった。
ちなみに果てしなきスカーレットを見てきたのは先々週の土曜日。前日の金曜の時点でも席は7割ほど埋まっており、前評判ほどのスカスカっぷりではなかった。
映画の感想に移ります。まずはありがとう。(これから殴りますという宣言)
映像についてはまあまあ安定してた。多少CG臭がきついシーンもあったが、そこまで悪い箇所はなかったと思う。1週間以上経過して覚えてないだけかもしれないが、忘れるくらいには自然だったということで...
ただ海外ウケを意識した造形は気に入らなかった。ぶっちゃけ可愛くない。スカーレットは劇中殴られたり鼻血を出したりと無様に描かれるシーンがあったが、美醜の落差を感じられずあまり刺さらなかった。もっと萌え豚に媚びた造形にしていれば、売上も1割くらい上がったんじゃなかろうか。
主人公のCVは芦田愛菜"さん"で、ところどころイントネーションに違和感があったが、全体を通してみれば悪くなかったと思う。でもまあ普通に声優使った方がもっと良かった気もするけど。
あと敵役のクローディアスのCV(役所広司)が良かった。これは手放しで褒められる。
ここからはストーリーに触れるため、ネタバレを含みます。
「許す」がこの作品の主軸であったように、「クローディアスを許したから死者の国から生還できた」というストーリーは自然に感じる。もちろんこの考え方を否定するつもりはないが、当サイトでは「仮にクローディアスに復讐したとしても生還できていた」説を提唱したい。
というのも、死者の国からクローディアスが消えたのち、あの謎の婆ちゃんはスカーレットに対して「時間切れ」という言葉を使っていた。「許したから」ではなく、単に「時間切れ」によって死者の国を去ったのではないか。
少し話は変わるが、スカーレットとクローディアスは合わせ鏡のような存在である。 スカーレットが叔父クローディアスへの復讐を望んでいたのと同様に、クローディアスもまたスカーレットの父であり兄である国王アムレットを処刑し復讐を果たした。国王として実権を握った後も反乱分子筆頭候補のスカーレットを生かし続けたのは、復讐に駆られる姪をかつての自分と重ねていたからではないだろうか。
ではスカーレットが叔父への復讐に囚われたまま生還し、国王の地位を授かっていたらどうなっていたか。恐らく憎き叔父と同じような、力で民を掌握し相互不信がまん延した国を運営していただろう。
この作品を語る上で最も重要な箇所は、死者の国でのくだりにはなく、むしろその後の所信表明演説にあるように感じた。死者の国で叔父を許したからこそ、民からの信頼を得られ、天気も国民の気持ちも晴れた。その許す/許さないの集大成が演説という形で表われていたと思う。
16世紀デンマークの王女は父を殺めた叔父に復讐をするべく死者の国を彷徨う中、現代世界から転生してきた聖と出会い夢に見た光景がこれ。
_______________
— 【公式】『果てしなきスカーレット』@スタジオ地図 (@studio_chizu) December 26, 2025
『 #果てしなきスカーレット 』
プロダクションノート
<3Dアニメーション編>
_______________
渋谷のシーンでの後ろのモニターには、
わざわざさまざまな角度から撮影した
スカーレットが映っています。
本編では一瞬ですが、… pic.twitter.com/gU49im4h3R
なんでやねん。
そもそもダンスがなんかチープ。聖も野原ひろしとジョイマンを足して2で割った感じ。あと視点の切り替えも少ない。1つのカメラを動かすだけってどうなんだ。スカーレットが楽しそうに踊っているのを見せたいなら、もっと顔に寄って笑顔にフォーカスしなきゃダメだと思う。あと周りの人ももうちょっと描いてあげて。
そもそも何故現代の渋谷で踊るのか。このシーンでスカーレットは、今とは違う自分、強引に換言すれば理想の自分を発見できたわけだが、観客の中で今の渋谷を理想郷と思える人は大変少ないのではないか。ハロウィンでは車が横転するし、JRの改札近くの通路でホームレスの方が寝てるし、イスラエルへの反戦デモが車をせき止めて一時一帯が渋滞してたし(その時現場にいた)。まあ渋谷でなかったとしても、現代日本を理想郷としてしまうと観客から白い目で見られるのは必至だろう。
何より面白いのは、この渋谷ダンスが仮に無くなってもストーリーの進行に特段の支障がなかったことだ。一応復讐以外の生き方を知らずに悩むスカーレットが楽しそうに踊る自分を見て今とは違う生き方を知るという意義がこのシーンにはある。ただ後半のストーリーに深く絡んでたかというと......。なんというか渋谷ダンスを入れるために生き方云々の話を持ってきたという印象を拭えなかった。
これは想像だが、ストーリーを改善するうちに不要になったが諸々の理由で映画に含めざるをえなかったのではないか。例えば、「渋谷再開発関連のステークホルダーに既に話を通していて今更変えられなかった」「既に莫大な資金を渋谷ダンスにつぎ込んでいて変えられなかった」とか。あとは売上面。
渋谷ダンス前後が不自然な流れになっていたことを監督自身もさすがに理解していると思う。そうでなければ、映画後半でこのダンスがもっと導線になっていただろうし、シーン自体ももっと気合い入れて作っていたはず。その上で捻じ込むだけの非ストーリー上の理由があったんだと思うが、まあこれ以上は邪推ですね。
あのデカい竜は何なのか。なぜスカーレット達を助ける行動をとっていたのか。最後竜は無数の鳥として消えていったがどういう意味なのか。
なんとなく「神はお前らをみているぞ」と的なノリを主語を竜にして実装した印象を受けた。ただ、最後は単純に竜としての役目を終えて消えようとしたのか、それとも一羽一羽の鳥が国民というメタファーであり「民はお前たちを見ているぞ」的なノリで終わらせたかったのか不明。すいません、良く分からなかったっす。
他の人の考察も見てみましたが、分かりませんでした!いかがでしたか?
冒頭に述べた「感想を聞くとみんな黙る」という美容院の人が放った言葉は意外と芯を食ってたと思う。明確な感動ポイントが存在せず、残された謎も解決されない。だがなぜか渋谷でダンスする。全く面白くなかったわけではないのだが、面白さよりは謎が勝る作品だった。
逆に言えば、謎解き気分で見に行く人にとっては楽しめる作品だと思います。是非この記事を参考にして、自分なりの考察にたどり着いていただければ幸いです。
えいがさきを観るために、お台場まで1時間をかけて見に行った。お台場は虹ヶ咲学園の舞台でもあり聖地巡礼の意味合いもあるが、単純に上映時間の都合が良かったのがお台場を選んだ主な理由である。
既に公開から2週間が経過しており、どの映画館でも1本/日程度、その上朝8時とか9時とかに上映する映画館も多かった。ラブライブの、しかも虹ヶ咲を観るような人間がそんな朝早くから観に行けるわけないだろ。まあスパスタだったらギリ通用するかも、スパスタ好きは早起きできそうだよね逆に(再偏見)
そんな中、お台場の映画館はこれ。流石は聖地、1日に8本を上映する怒涛っぷりである。
東京テレポート駅では虹ヶ咲メンバーのパネルがお出迎えしてくれた。テンション爆上げだったのだが、駅を出た時点で上映まで残り10分程度だったので写真を撮るのは断念した。ちなみに帰りはゆりかもめ台場駅を使ったが、虹ヶ咲関連のパネルは置かれてなかった。現在進行形でコラボしてるのに...
🌈コラボ情報🌈#えいがさき 第2章×ゆりかもめ30周年記念コラボ開催決定🎊
— 『ラブライブ!虹ヶ咲学園スクールアイドル同好会』【公式】 (@Nijigaku_movie) September 25, 2025
期間:10/24(金)~ 12/25(木)
🌟ゆりかもめ30th記念 ニジガクデジタルスタンプラリー
🌟ゆりかもめ各駅フォトブース
🌟コラボ記念グッズ販売
🌟一日駅長イベント
🌟限定キッチンカー出店
など盛りだくさん🎉
詳細✅… pic.twitter.com/1pSheTiJe5
映画を見終わり、「せつあい良ぃ...」となった衝動で2人のアクリルキーホルダーを買った。俺は軟派なオタクだからよぉ、素直で性格が良い陽キャ目な女の子に夢見ちまうんだ
アクアシティの三階では映画館のものとは別の虹ヶ咲グッズが販売されていた。そこでアクリルスタンドが飾ってあったので撮ってきた。
今気づいたけど右4人に蛍光灯が反射してた。すまない...俺が写真とは無縁の人生を送ってきたばかりに...
あとは映画の感想です(ネタバレ含む)
前のブログ名気に入ってなかったんすよ()
...というわけで「雑多なブログ・フォン・あすらと」に変更しました。
ちなみに「フォン」は所有の前置詞で、ドイツ語版の"of"です。大学の第二外国語としてドイツ語を選択した経験が遺憾なく発揮されています。ちなみにドイツ語の数字はuns?(1), zwei(2), drei(3)までしか思い出せません。
「雑多なブログ・フォン・あすらと」もちょうど3つ目のブログ名になりました。投稿しない期間が長引くとなんかブログ名を変えたくなるので、今後変えないためにも投稿を頑張りたいなあと思います。なによりこれ以上数えられませんし。
アマプラの作品は、0.5点刻みで5点満点で評価される。
マイ基準はこんな感じ
個人的な2025年春アニメの評価はこんな感じだった
今日言いたいのはほとんどこれで、
ひびめしありがとう
いやー、のんのんびよりのスタッフが集まった時点で良い作品なのは確定的に明らか。最終話Xのトレンド1位おめでとう
ついでにジークアクスも面白かったよ
流れてきた岡田斗司夫の切り抜きはわりかし同意できた。曰く、「ギャグアニメのスピード感をシリアスなアニメに導入したことで面白さに繋がった」と。やっぱアニメ単体だと脳のリソースを余らせて退屈になるんだと思う。テンポ良く話を回すか、ニコニコでコメントと合わせて見るかしないと。
ただ俺は「二次創作」は割とキーワードな気がした。特にソシャゲの二次創作と相似形で、「ソシャゲの二次創作という概念をアニメに導入したことで面白さに繋がった」んじゃないかと内心思っている。
ほら、遊んでないソシャゲの二次創作見てキャラ覚えちゃうし、なんなら二次創作経由でソシャゲ始める人多いでしょ?なあ、ブルアカ。なあ、ゼンゼロ。おい何目を背けてるスタレ。お前もこっち側だからな。
1stガンダム未視聴であってもジークアクスを二次創作として楽しめる土壌はソシャゲによって既に養成されていて、だからこそガノタ以外も巻き込んだあの盛り上がりようになったんだと思った。特に根拠はないけど。
アスペクト比を維持して固定値を使わずに整列させる方法をなんと2つも説明します。
まずは目指す状態について説明します。
上の画像では半透明の範囲に本の画像とその白背景のセットが2つ描かれています。また白背景は正方形で、本の画像はその中に収まります。つまり、本+白背景の縦横比は1:1になります。
整列の設定を上手く施すことで、中身を増減させても自動的に間隔を調整してくれます。実際私は、以下の画像を作る時に位置や大きさを入力しませんでした。
以降の章でこの自動整列の設定方法について解説します。
なお、この記事では横に整列させる方法を解説しますが、Horizontal←→Vertical、Width←→Heigh(t)と適宜変換すれば縦にも同様に整列させられます。
自動整列を実装する方法は複数ありますので、まずはそれらの共通部分について説明します。
上の画像は本の画像と白背景のセットが2つある場合のヒエラルキーです。
上のヒエラルキーに登場するCanvas内のGameObjectが有するComponentを以下に示します。
これらに追加でComponentを加えるケースもあります。
Areaに紐づける"Horizontal Layout Group"の"Control Child Size"のHeighがTrueになっている場合(上の画像)、子のオブジェクト(GameObject1)のHeightには何も入力できない状態になります。"Control Child Size"はその名の通り、子のWidthやHeightを親が決定するかどうかのフラグであり、Trueになると子オブジェクトに対するWidth/Heightの入力を受け付けなくなります。
本と白画像のセットの縦横比は1:1にするためには、Widthの値をHeightからコピーしてくる必要があります。そこで、子オブジェクトに"Aspect Ratio Filter"を適用します。
Aspect Ratio Filterはそのオブジェクトのアスペクト比を自動で決定するためのComponentです。Aspect Modeで"Height Controls Width"を選択すると、WidthがHeightの値から自動入力されます。このように設定することで、本+白背景を複製しても同じ親にある限り上手に間隔を作ってくれます。
しかし残念なことに、子オブジェクト以下をPrefab化してスクリプト上から複製すると自動整列が機能しません。Aspect Ratio FilterとHorizontal Layout Groupが共存すると発生する問題のようで、入力をロックする箇所が異なっていても動作しないようです(実際警告が出てる)。Aspect Ratio Filterが先にWidthやHeightをロックすることで後のLayoutGroupが動作できなくなり、機能しないのではないかと睨んでいます。Prefabから生成する場合は次の方法を試してみてください。
代替案として、子オブジェクトの代わりに孫オブジェクト(Background)にAspect Ratio Filterをつけることでも自動整列が可能です。その際、Aspect Modeを"Envelope Parent"に設定しましょう。Envelope Parentモード下では、元々設定していた孫オブジェクトの大きさを子の大きさによって拡大することが可能になります。
上の画像ではW Deltaに82.79999と入力されています。これは親オブジェクトのHeightが182.79999で、元々設定されていた子オブジェクトのWidthが100であり、Envelope Parentによって引き伸ばされた分がW Deltaに入力されます。
この方法ではPrefabから生成しても自動整列が機能します。Aspect Ratio FilterとHorizontal Layout Groupが同じ箇所をロックすることもないので、警告も発生しません。
自動整列問題がややこしいのは、WidthやHeightを画面の大きさに応じて変化させようとするからです。WidthやHeightに固定値を入力させられれば、Layout Elementなどを利用してもっとわかりやすく自動整列を実装できます。まずは画面のサイズを最初に決めて、WidthやHeightに固定値を入力させるのが良いと思います(一敗)。
以上です。
日◯簿記の問題集で家を確保するゲームを公開しました!
URL: https://unityroom.com/games/boki-warashibe
よかったら遊んでください。(偉い人に怒られたら消します)
こんにちは、あすらと(@__asurato__)です。
モダンなゲームではあまり見かけなくなりましたが、大戦略やCivilizationのような戦略シミュレーションではヘクス座標系が採用されています。ヘクス座標系では1つのマスが正六角形になっており、正六角形の各マスは隙間なくマップに敷き詰められます。本日はヘクス座標系のマスの管理方法について考察しましたのでご覧ください。
例えば tiles[id] 等でそのidに関するTile型のインスタンスを取得することができれば前の3つについて達成されます。言い方を変えると、関数f: id→Tile となる関数が作れるならOKです。
またマスXに隣接したマスYを取得できれば最後の項目は達成されます。前3つの項目によりidからTileへの変換は前提とするため、XのidからYのidが取得できれば達成されます。
以下からマスの管理方法について章立てで説明します。
このような場合はIDを振る方向を横に変えるとなんと解決します。
一次元的にIDを与えるのではなく、二次元座標を用いて各マスを二次元配列に格納することもできます。座標[a, b]のマスはtiles[a][b]として取得します。
問題点として、tiles[0][0]とは異なりtiles[0][1]には値が存在しません。tiles[a][b]が存在するかを常にチェックする必要があります。
上の手法の派生系で、二次元座標を文字列に変換してMapに格納する手法です。ちなみにPythonのようにタプルをキーにできる言語や、座標を示す構造体をMapのキーに自前で設定する場合は文字列への変換は不要です。メリットはメモリの無駄がないこと、デメリットは座標とMapのキーとの相互変換が面倒な点でしょう。
まず上図のように軸を設定し座標を計算します。B軸の位置について、Aの要素が0以上になるように設定しましょう。
次に2つの配列を用意します。1つ目の配列には全てのマスが格納され、もう1つの配列には前者の配列のキー(ID)が入ります。
まず要素Aが小さい順に、要素Aが同値の場合は要素Bが小さい順にマスを配列1へ格納します。その格納の際に、要素B=0となるマスの(配列1における)IDを配列2に格納します。2つの配列を用いて、座標(a, b)のマスは arr1[arr2[a] + b] として取得できます。
http://higesusk.blog.fc2.com/blog-entry-146.html
https://ninagreen.hatenablog.com/entry/2015/11/14/193417
https://sinsei.space/blog/11747
https://www.redblobgames.com/grids/hexagons/
Bloggerでは記事に対してラベルを付与できますが、このラベルの機能はあまりリッチではありません。そこで、当BlogではBloggerのブログアーカイブのHTML構造を参考にし、比較的自然なラベルの階層化機能を自前実装しました。本日はこのラベル階層化の手順について解説します。
先に完成後のスクリーンショットを以下に載せます(まあPCなら横に表示されているとは思いますが念の為)。
ご自身のブログに同様の機能を実装したいと感じた方は是非最後までご覧ください。
まずBloggerはラベルの階層化機能を提供しておりませんので、HTMLを自分で編集する必要があります。「テーマ」→「カスタマイズの横の下三角」→「HTMLを編集」とクリックしHTMLの編集画面を開きます。
続いて、編集画面で「id='Label1'」で検索し、ラベルの機能を探します。(検索にない場合は元の画面に戻り、「レイアウト」からラベルガジェットを追加してください。)おそらく以下のように表示されていると思います。
最後に<b:widget...から次の</b:widget>まで以下のコードに差し替えて終了です。
<b:widget id='Label1' locked='false' title='カテゴリ別' type='Label' version='1'>
<b:widget-settings>
<b:widget-setting name='sorting'>ALPHA</b:widget-setting>
<b:widget-setting name='display'>LIST</b:widget-setting>
<b:widget-setting name='selectedLabelsList'/>
<b:widget-setting name='showType'>ALL</b:widget-setting>
<b:widget-setting name='showFreqNumbers'>false</b:widget-setting>
</b:widget-settings>
<b:includable id='main'>
<b:if cond='data:title != ""'>
<h2><data:title/></h2>
</b:if>
<div expr:class='"widget-content " + data:display + "-label-widget-content"'>
<ul class='hierarchy' id='rootNode'>
<b:loop values='data:labels' var='label'>
<li class='labelNode archivedate collapsed' expr:name='data:label.name'>
<b:include name='myToggle'/>
<a class='post-count-link' expr:href='data:label.url'>
<data:label.name/>
</a>
<span class='post-count' dir='ltr'>(<data:label.count/>)</span>
<ul class='hierarchy' style='padding: 10px 0 0 10px'/>
</li>
</b:loop>
</ul>
<ul class='hierarchy' id='templateElement' style='display:none;'>
<li class='labelNode archivedate collapsed'>
<b:include name='myToggle'/>
<a class='post-count-link' href='javascript:void(0)'>LABEL_NAME</a>
<ul class='hierarchy'/>
</li>
</ul>
<b:include name='quickedit'/>
</div>
<style type='text/css'>
li.collapsed > ul.hierarchy {
display: none;
}
</style>
<script type='text/javascript'>
// 深さ優先探索でHTMLタグを形成する関数
function dfs(ul, obj) {
for (const label of Object.keys(obj)) {
let {node, children} = obj[label]
if (!node) {
const template = document.querySelector('#templateElement').innerHTML.replace('LABEL_NAME', label)
node = new DOMParser().parseFromString(template, 'text/xml')
}
node.firstElementChild.addEventListener('click', () => onToggled(node.firstElementChild))
console.log(ul)
console.log(node)
ul.appendChild(node)
if (Object.keys(children).length > 0) {
dfs(node.lastElementChild, children)
continue
}
node.removeChild(node.lastElementChild)
node.removeChild(node.firstElementChild)
}
}
// トグルがクリックされた時の関数
function onToggled(element) {
element.parentElement.classList.toggle('collapsed')
element.parentElement.classList.toggle('expanded')
element.firstElementChild.classList.toggle('toggle-open')
if (element.parentElement.classList.contains('expanded')) {
element.firstElementChild.innerHTML = '▼ '
} else { // 縮小する
element.firstElementChild.innerHTML = '► '
}
}
function main() {
const treeObj = {} // 木構造を有するデータ
document.querySelectorAll('li.labelNode[name]').forEach(node => {
node.parentElement.removeChild(node) // 一旦DOMから消えてもらう
// ラベルの名前をツリー状になるように登録する
let obj = treeObj
node.getAttribute('name').split('_').forEach((label, i, a) => {
if (label in obj === false) {
obj[label] = {'children': {}, 'node': null}
}
if (i === a.length - 1) {
obj[label]['node'] = node
} else {
obj = obj[label]['children']
}
})
})
dfs(document.querySelector('#rootNode'), treeObj)
}
main()
</script>
</b:includable>
<b:includable id='myToggle' var='interval'>
<a class='myToggle' href='javascript:void(0)'>
<span class='zippy'>
► 
</span>
</a>
</b:includable>
</b:widget>