ITニュース(02/02)

2月いっぱいの限定版 Apple Watch Series 6 Black Unity 実機開封レポ – Engadget日本版

アップルが黒人歴史月間に向け発表したApple Watch Series 6の限定エディション「Black Unity Collection」。販売開始となりましたので、実機レポートを届けします。

どのアプリが大事なプライバシーを握っているのかを確認する方法 – GIZMODO JAPAN

プライバシーの自己管理の基礎として、自分が普段使っているアプリがどんな情報にアクセスできるのか把握しておきましょう。この記事ではスマホ、PCのアプリが使用するカメラとマイク、位置情報の確認を行なう方法を解説します。

パナソニックが太陽電池生産から撤退、国内外でのパネル販売は継続(スマートジャパン) – Yahoo!ニュース – Yahoo!ニュース

パナソニック ライフソリューションズ社は2021年2月1日、太陽電池生産から撤退すると発表した。マレーシア工場および島根工場における住宅・産業向けすべての太陽電池モジュールの生産を、2021年度中

3インチスマホ「jelly 2」実機レビューの巻:スマホ総研定例会#164 – アスキー

毎週月曜夜は、アスキー編集部で四六時中スマートフォンの話ばかりしている“スマホ総研”のメンバーが、入れ替わり立ち替わり、スマホに関するちょっとしたトークを生放送でお届けします。▽関連記事アスキースマホ総研・白書http://ascii.jp/elem/000/001/209/1209978/▽出演者Twitter…

銀行は停止、品薄の米、携帯使えず…混乱のミャンマー – ライブドアニュース – livedoor

民主化が進んでいたミャンマーで国軍が突如、国家権力の掌握を宣言した。街の人々は突然のクーデターをどう受け止めているのか。地元のミャンマー人や現地在住の日本人が朝日新聞の電話取材に、街の様子や不安な思

iPhone/iPadのパスワード、パソコン版Chromeで利用可能に。Appleが拡張機能提供 – PC Watch

Appleは、Google ChromeでiCloudキーチェーンを利用可能にする拡張機能「iCloudパスワード」をChromeウェブストアで公開した。

「Uber Taxi」、東京での迎車料金無料延長 2月末まで – TRAICY(トライシー)

タクシーやハイヤーの配車サービスを展開するUber(ウーバー)は、東京の「Uber Taxi」で迎車料金を無料とするキャンペーンを2月28日まで延長した。 東京での「Uber

イーロン・マスク氏がビットコイン支持を表明 – 株式会社CoinPost

音声型SNSアプリClubhouseにテスラ社のイーロン・マスクCEOが初登壇。仮想通貨ビットコインについて支持する姿勢を示したほか、宇宙関連事業では人類の火星着陸について展望を示した。

太陽光パネルで充電! アフリカの密猟監視でレンジャーが乗るためのEVバイクが超クール – GIZMODO JAPAN

スウェーデンのCAKEが密猟者を追跡するためにエコで静かな電動バイク「Kalk AP」を開発。

NECもソースコード流出を確認、GitHubで SMBC、NTTデータに続き(ITmedia NEWS) – Yahoo!ニュース – Yahoo!ニュース

ソースコード共有サービス「GitHub」で三井住友銀行(SMBC)などのシステムに関連するソースコードが無断公開されていた問題で、NECが顧客向けに開発したシステムのソースコードも無断公開されてい

プログラミング言語Perlが公式サイトのドメインをランサムウェア配布サイトに乗っ取られる – GIGAZINE

プログラミング言語Perlの公式サイトのドメイン「perl.com」が何者かに乗っ取られたことが明らかになりました。記事作成時点では、perl.comがランサムウェアを配布するサイトと同一のIPアドレスにホストされていることが確認されており、アクセスしないように注意が呼びかけられています。

空気圧を自動制御するハイテク膝サポーター「E-Knee」、どう見ても『バットマン』の敵ベイン – GIZMODO JAPAN

KICKSTARTER発のハイテク膝サポーター「E-Knee」。身体の動きに合わせて膝にかかる負担を減らす。

マウントゴックスの失敗、「とても残念」-大口債権者が振り返る(Bloomberg) – Yahoo!ニュース – Yahoo!ニュース

(ブルームバーグ): 暗号資産(仮想通貨)ビットコインの交換業者として2013年当時世界最大だったマウントゴックスの北米事業を取得する契約に絡み、ピーター・ベッセネス氏が米シアトルのオフィスにいたと

「Raspberry Pi Pico」が入荷。スイッチサイエンスで550円 – PC Watch

スイッチサイエンスは、1月21日にRaspberry Pi財団から発表された新しいマイコンボード「Raspberry Pi Pico」の販売を開始した。価格は550円。

Googleマップで首都圏の鉄道のリアルタイム位置情報表示(Impress Watch) – Yahoo!ニュース – Yahoo!ニュース

ODPT(公共交通オープンデータ協議会)は2月1日、Googleマップ上に首都圏の鉄道のリアルタイム位置情報が同日より掲載されることを発表した。

Z 6IIがもらえる! ニコンCP+フォトコンテスト – デジカメ Watch

株式会社ニコンイメージングジャパンは、写真映像イベント「CP+2021」のオンライン開催への出展に先立ち、東京カメラ部との協業でフォトコンテスト「Z 6IIがもらえる! ニコンCP+フォトコンテスト」を開催する。作品募集期間は3月2日まで。

モバイルSuica、税込み1000円以上の買い物で3000円相当を還元 – Engadget日本版

JR東日本は、交通系電子マネー「モバイルSuica」のキャンペーンを2月1日から28日まで実施します…

この価格では「ありえない音」をアピール、finalのA4000/A3000の実力は? (1/4) – ASCII.jp

finalが取り組んでいる新しい音質評価法に基づいて開発されたA4000とA3000。価格は1万円+αだが、20万円級イヤホンのA8000で培った驚くべき高音質が特徴だ。

経済ニュース(02/01)

常磐線・勝田駅に早朝から撮り鉄が集合 「罵声大会」が起こった背景 – livedoor

常磐線の勝田駅で、「勝田工臨」という列車に大勢の撮り鉄が集合。その撮影にあたってホームに罵声が飛び交い、マナーに関する騒動があったようです。「下がれ!」「マナー守れよ!」常磐線の勝田駅(茨城県ひたち

「新幹線オフィス」試行 ウェブ会議OK、特殊めがねも – ライブドアニュース – livedoor

新型コロナウイルスの影響で広がったリモートワークに新幹線の車内を活用する「新幹線オフィス」と銘打った実証実験が1日、東北新幹線で始まった。JR東日本の初の試み。車両の一部を「新幹線オフィス」とし、一

資産家コーエン氏、ツイッター休止 ゲームストップ株巡り「脅威」 – ロイター (Reuters Japan)

米ゲームストップ株を巡る一連の騒動で個人投資家に標的にされた資産家スティーブン・コーエン氏が、ツイッターのアカウントを削除していたことが30日分かった。投稿内容が自身や家族への脅威につながったことが理由という。

次の技術ブログを狙う「Zenn」がクラスメソッドへ 改めてエンジニアの情報発信を問う (1/3) – ASCII.jp

クラスメソッドがエンジニアの技術情報発信サービスである「Zenn(ゼン)」を買収する。自らもエンジニア向けの技術情報発信メディア「Developers.IO」を運営するクラスメソッドが、なぜZennの運営に乗り出したのか? 数十社による争奪戦の舞台裏とは? そして今後目指す情報発信の姿とは? クラスメソッドの横田聡CEOとZenn開発者のcatnose氏に聞いた。

〔東京株式〕3日続落=米国株安受け(1日前場寄り付き) – ニュース・コラム – Y!ファイナンス – Yahoo!ファイナンス

【第1部】1日午前の東京株式市場は、前週末の米国株安を受けて売りが優勢となり、日経平均株価は前営業日比14円32銭安の2万7649円07銭と、小幅ながら3営業日続落して始まった。…

銀貨サイト、需要過多で対応不能に-「レディット」投資家が照準 – ブルームバーグ

銀棒や銀貨の小売りサイトが1月31日、需要過多で対応できなくなった。オンライン掲示板「レディット」に触発された投資家が先週、商品市場を混乱させたが、そうした流れが現物資産に波及しつつある。

話題のSNS「Clubhouse」同名の別アプリに風評被害 “偽物”と勘違いした批判レビュー相次ぐ(岡田有花) – Yahoo!ニュース – Yahoo!ニュース

音声SNS「Clubhouse」が急激に話題になる中、同名のアプリに風評被害。プロジェクト管理アプリ「Clubhouse」には、音声SNSの「偽物」と勘違いした低評価レビューが相次いでいる。

ロビンフッド、取引制限8銘柄に縮小-ウォーレン議員が規制主張 – ブルームバーグ

個人投資家の株式取引プラットフォームを提供する米ロビンフッド・マーケッツは1月31日、取引制限リストの対象を先週末時点の50銘柄から8銘柄に減らしたことを明らかにした。同社のウェブサイトに最新の制限リストが掲載された。

今売れてる完全ワイヤレスイヤホンTOP10、ソニーがアップルを追う(BCN) – Yahoo!ニュース – Yahoo!ニュース

「BCNランキング」2021年1月18日から24日の日次集計データによると、完全ワイヤレスイヤホンの実売台数ランキングは以下の通りとなった。

 2021年1月18日週の完全ワイヤレスイヤホン売れ

日本株急落とロビンフッダー:ここは買い場?「宴の終わり」を判断する3つのシグナル – トウシル

1月最終週(1月25~29日)の日経平均は、5週ぶりに反落。1週間で960円下がり、2万7,663円となりました。ナスダック総合指数、NYダウが1月27日から急落した影響で、日本株にも売りが波及しました。 先週、米国株式相場で「過熱」を…

スズキがトヨタOEM供給の『スウェイス』を欧州で発売…カローラベースのワゴン – レスポンス

◆専用グリルやバンパーで異なる表情に◆1.8リットルのハイブリッドのみを設定◆3種類の走行モードが切り替え可能◆2グレードをラインナップ

今朝の注目ニュース! ★Tホライゾン、J・TEC、アサヒHDなどに注目! – minkabu PRESS

★は本日の株価動向が特に注目されるニュース銘柄!

巨大IT企業の不公正な取り引きを規制 新法がきょう施行 – NHK NEWS WEB

巨大IT企業への規制を新たに設ける法律が1日、施行されました。立場の違いを背景にした不公正な取り引きを防ぐため、通販サイ…

【独自】障害児「放課後デイサービス」、179事業所に行政処分…利用料水増し請求 – goo.ne.jp

国と自治体が利用料の9割以上を負担し、障害のある子どもを放課後や休日に受け入れる福祉サービス「放課後等デイサービス」で、制度が始まった2012年4月以降、利用料…

全国の薬局半数が代替品調達に苦労 – 福井新聞

福井県あわら市の小林化工が製造した爪水虫などの治療薬に睡眠導入剤成分が混入した問題で、日本保険薬局協会(東京)は1月31日までに、全国の薬局の対応に関する調査結果を発表した。薬局の半数が代替品の調達に苦労しており、改めて流通の課題が明らかになった。 同協会は、保険薬局など521事業者でつくる。調査は一部ロットで混入があった経口抗真菌剤イトラコナゾール錠50「MEEK」の在庫、販売実績を持つ薬局が対象。1月8~20日の間に163の薬局から回答を得た。

家庭によっては食費の節約は至難の業 5人家族の40代女性は「月15万円」 – livedoor

大家族や育ち盛りの子どもがいる家庭において、食費の節約は至難の業だ。40代のある女性は子ども3人を育てているが、食費は月15万円ほど。「子どもが大きくなると、もっと食費がかかる」と語った

債券は下落か、米長期金利上昇を受け売り先行-日銀オペ減額も重し – ブルームバーグ

債券相場は下落が予想されている。前週末の米国市場で長期金利が上昇した流れを引き継ぎ、売りが先行する見通し。日本銀行が公表した2月の買い入れオペ月間予定で、中期ゾーンの減額が示されたことも重しになるとみられている。

パナソニックの携帯除菌スプレーが本日発売。除菌率99%の次亜塩素酸噴霧 – PC Watch

コロナ禍で除菌に対する意識が高まり、さまざまな除菌ツールが登場している。そうしたなか、パナソニックが2月1日から、次亜塩素酸技術を活用した携帯除菌スプレー「DL-SP006」を発売する。Panasonic Storeでの直販価格は6,578円。

8年ぶりのフルモデルチェンジ!美しい曲線でラグジュアリーを表現したメルセデス・ベンツの新型「Sクラス」(@DIME) | 自動車情報サイト【新車・中古車】 – carview! – carview!

メルセデス・ベンツ日本は、フラッグシップモデル新型 S クラスの発売を開始した。納車時期はモデルにより異なる。メルセデス・ベンツSクラスの先代は2013年に発表され、累計販売台数は世界で50万台を超え“最も選ばれているラグジュアリーセダン”…

ITニュース(02/01)

注目の“ノート版GeForce RTX 3070”搭載機を使って分かったゲーミングノートの新基準 – PC Watch

2020年秋に登場したNVIDIAのGPU、GeForce RTX 30シリーズは、前世代から飛躍的な性能を遂げたことから大きな人気を呼び、同シリーズを搭載したビデオカードは8万円、10万円と高価なものでも好調に売れている。そして2021年に入って、ついに同GPUのノートパソコン向け版が投入された。

ワイモバイル、25GBが月3780円の新料金「シンプル S/M/L」2月18日提供 5Gも開始 – Engadget日本版

ワイモバイルは、25GBが月3780円で利用できる「シンプルS/M/L」を2月18日より提供します。

高浜原発の再稼働、地元町長が同意 老朽原発では全国初 – auone.jp

au Webポータル

Googleがチャットアプリ「Element」を突如削除した後、復活させる – GIGAZINE

リアルタイム通信のためのオープン標準である通信プロトコルのMatrixを用いたオープンソースのインスタントメッセンジャーアプリである「Element」が、Google Play上から突如削除されるという事態が起きました。

VAIOがティザーサイトをオープン、180度にディスプレイが開く新モデルを近日発表か – Engadget日本版

VAIOが「NEW VAIO COMING SOON」と題したティザーサイトをオープンしました。

ケーブルもスタンドも一切不要でスマホをリモート充電できる技術「Mi Air Charge」をXiaomiが開発 – GIGAZINE

中国の家電メーカーであるXiaomiが、充電ケーブルや充電スタンドなしで、スマートフォンをワイヤレスで充電可能な技術「Mi Air Charge」を発表しました。この技術を使えば、デバイスを部屋の中に持ち込むだけで自動的に充電が行われるとのことです。

エンジニア向けUMPC「A1」に一太郎発売記念モデル – PC Watch

株式会社ジャストシステムは、ONE-NETBOOKのUMPC「A1」と一太郎2021発売記念の特典グッズをセットにした「A1 7インチモバイルPC 一太郎発売記念モデル」を4日に発売する。

サンコーの格安モニターアームを買ったらiPadのSidecarがもっと快適になった – Engadget日本版

ノートPCで効率よく在宅勤務を行うには、サブディスプレイが必須。MacBookシリーズでは、「Sidecar」機能を使ってiPadをサブディスプレイ代わりに使えます。しかし、筆者はノートPCの”横”にiPadを並べるスタイルがどうもしっくり来ません。そこで、サンコーの「超安定モバイルディスプレイ&タブレットスプリングアームスタンド」を使ってみたところ、より快適な環境が作れました。

なぜStack Overflowから個人情報が流出したのか、犯人の攻撃方法と対処の詳細なタイムラインが公開中 – GIGAZINE

2019年5月に発生した技術コミュニティ・Stack Overflowの個人情報流出について、Stack Overflowが攻撃者の詳細な足跡をタイムラインで公開しました。

1億7000万円ものコストダウンを機械学習で達成したDropbox、一体どんな方法を取ったのか? – GIGAZINE

Dropboxが自社サービス上の「ファイルプレビュー機能」を機械学習で効率化することで、170万ドル(約1億7000万円)の費用削減を達成しました。具体的なシステムの内容について、機械学習エンジニアのWin Suen氏が説明しています。

【2002年1月12日号 掲載】謎のCPU「1Giga Pro」をオンボード搭載したマザーの展示始まる – AKIBA PC Hotline!

新年早々、アキバに突然妙な製品が姿を現した。これまでおそらく誰も見たことも聞いたことがないその妙な製品は、謎のチップセットと謎のCPUを搭載したマザーボードで、詳しい仕様もよくわからないものだ。

スマホゲームを禁止されインドの15歳少年が自殺 スマホ依存症か – livedoor

スマホゲームを禁止されたインドの15歳少年が自殺する事件が発生した。事件前に、両親はスマホを取り上げネット環境のない親戚の家に預けていた。少年は異常なまでにスマホゲームに依存し、スマホ依存症だった可能性も

パナソニックの携帯除菌スプレーが本日発売。除菌率99%の次亜塩素酸噴霧 – PC Watch

コロナ禍で除菌に対する意識が高まり、さまざまな除菌ツールが登場している。そうしたなか、パナソニックが2月1日から、次亜塩素酸技術を活用した携帯除菌スプレー「DL-SP006」を発売する。Panasonic Storeでの直販価格は6,578円。

電子マネーをまったく利用していない人は4割 「設定するのが面倒」など – livedoor

リスクモンスターは1月28日、第1回「電子マネー利用実態調査」の結果を発表した。調査期間は2020年12月14~15日、調査対象は20~69歳の個人で、有効回答は500人。※画像はイメージ○利用しない理由、1位「現金支払い

選手村の売り主に40億円が流れたか 弁護士は「濡れ手に粟」と疑問 – livedoor

選手村として使われるマンションの購入者が売り主に民事調停を申し立てる。今回の延期によって東京都から売り主へ約40億円が支払われたという。購入者側の代理人の弁護士は「濡れ手に粟といった状態」と疑問を投げかけた

SaaSで月間100万円の収益を達成するまでの実録はこんな感じ – GIGAZINE

ソフトウェアをライセンス販売するのではなく、インターネット経由でユーザーに提供する「SaaS」では月額あるいは年額課金の形がよく取られます。個人の開発者がSaaSでサービスを提供する場合、自分でゼロからサービスを開発することだけでなく、慣れないマーケティング活動を行う必要があり、実際に収益をあげるようになるまでの道のりは想像以上に険しいものです。会社を辞めてスタートアップを立ち上げたJon Yongfookさんはマーケティングを自動化・拡大するためのツール「Bannerbear」を開発・運営しており、収入ゼロで1…

iPhone SE Plus、デュアルモード5G対応、約51800円で発売か – iPhone Mania

 Gizchinaが、iPhone SE PlusはTouch ID内蔵電源ボタンを搭載し、デュアルモード5Gに対応、499ドル(約51,800円)で発売されるとの予想を伝えています。Tou…

アーッ!!! iPhone 12にマグネット吸着する「MOFT」が出たーッ!!! – ケータイ Watch

先日見たケータイWatchのニュース。知る人ぞ知るデバイススタンド「MOFT」のMagSafe対応バージョンがAmazonで売られ始めたとのこと。うっ、イイかも〜ソレ〜!!!

AMDの新しいモバイル用CPUはヤバいくらい速い – ギズモード・ジャパン

世間の話題がApple M1の驚異的な速さでもちきりな中、既にデスクトップの分野ではIntelと肩を並べ、追い越さんばかりの勢いのAMDが、実はラップトップでも背後に忍び寄っていたようです。

カンバン形式やガントチャートなど複数形式でプロジェクト&タスク管理が可能な「Wrike」を使ってみた – GIGAZINE

GoogleやAirbnbなどの著名企業だけでなく、国内でも1000社以上が使っているというプロジェクト管理サービスが「Wrike」です。圧倒的な使いやすさだけでなく、2021年1月21日にシンクライアント技術大手のCitrixに22億5000万ドル(約2330億円)で買収されたことでも話題になっていたので、実際に使ってみました。

【農場経営ゲーム】画面を作り始めた。

https://github.com/takishita2nd/FarmGame

とりあえず、ボタンを配置してみた。

ボタンは下記リンク先のフリー素材を使用しています。

https://kopacurve.blog.fc2.com

ボタン+テキスト配置で作成したけど、たぶん、文字の入ったボタンを作った方が良いような気がする。

位置合わせがめんどくさい。

あ、そうそう、今回はAltseed2を使用しています。

.NEt Coreで動作するゲーム用ライブラリです。

農場経営ゲームを作ってみる

とりあえず、こんなものをサクッと考えてみた。

メイン画面

  • 各画面への移動
  • 所持金
  • 体力(1日に何回行動できるか)
  • 天気
  • 進捗状況

農場画面

  • 畑に種をまいて、育てて収穫する。
  • 種は、収穫物から回収・市場で購入することで入手。
  • お世話作業をすることで管理を行う
  • 時間経過とともに成長度が増加し、100%を超えたときに収穫できる。
  • 管理状態によって収穫物の品質が変化する。
  • 畑は市場で購入することで拡張できる。

牧場画面

  • 牛や鶏を飼うことができる。
  • 牛や鶏は市場で購入できる。
  • エサを与えることで成長度がアップし、100%に達すると畜産物を収穫できる。収穫後は成長度が0に戻る。
  • エサは市場で買うか、加工場で農作物から作成できる。
  • エサやお世話作業によって畜産物の品質が変化する。

市場画面

  • お金を使用して様々なアイテムを購入することができる。
  • (種、畑の拡張、動物、加工に必要なアイテムなど)

加工場画面

  • 農作物や畜産物を使用して別のアイテム(加工品)を作成する。

お店画面

  • 農作物、畜産物、加工品を商品棚に並べて、販売する。
  • 商品棚に並べた商品は時間経過で自動的に販売される。
  • 販売価格は品物と品質によって変化する。

能力画面

  • プレイヤーの能力値を確認できる。
  • プレイヤーには農業レベル、酪農レベル、加工レベル、経営レベルがある。
  • 農業レベルが高いと、農場でのお世話作業の効率がアップする。
  • 酪農レベルが高いと、牧場でのお世話作業の効率がアップする。
  • 加工レベルが高いと、加工品の品質がアップする。
  • 経営レベルは売り上げによってレベルアップし、作業回数が増える。

こんな感じで、着手開始します。

余りにも雑なスパムメッセージ。

騙されるか!

まず、ツッコミどころ3つ。

一つ目は、自分は今(たぶん5年以上)NTTドコモユーザーではない。

なので、いまさら利用料金云々言われることはあり得ない。

そして、二つ目は発信元電話番号である。

このような重要なメッセージが携帯電話の番号から掛かってくるわけが無いだろう。

そして三つ目、同じようなメッセージが以前にも届いてきたのである。

微妙に発信元番号と連絡先番号を変えている。

本当に重要なメッセージを繰り返し通知するのならば同じ連絡先になるはずである。

完全に墓穴掘ってるね。

おそらくですが、オイラの使用している電話番号が元々ドコモでもらった電話番号だからと言うのがあると思います。

ケータイの電話番号は、キャリア毎に使用できる番号が割り当てられていて、Webのツールを使えば、その番号がどのキャリアか、というのが解るようになっています。

ただし、これはあくまでも目安であって、確実では無い。

なぜなら、ナンバーポータビリティでキャリアを変えてしまえば、上のようなツールを使っても正確にキャリアを特定することができなくなったのです。

オイラの電話番号が元々ドコモの番号だったからドコモからの請求を装ってメッセージを投げてきたのだろう。

ちなみに、オイラの現在のキャリアは楽天モバイルである。

さらに言うと、連絡先に電話かけて文句言ってやろうか、と思っても、連絡先は委託されたコールセンターなので、あまり意味は無いし、自身の番号が有効である事が相手に解ってしまうので、スルーするのがいちばんよいです。

【COCOS2D-X】クエストリストをスクロールしすぎないように調整する。

https://github.com/takishita2nd/cocos2d-x_sample

こんなかんじになりました。

今回はスクロール処理にもう少し手を加えて、

スクロールしすぎないようにストッパ処理を追加しました。

    if(questListMenu.isShow)
    {
        // Yの差分だけメニューを動かす
        float divY = touch->getLocation().y - keepPosition.y;
        auto visibleSize = Director::getInstance()->getVisibleSize();
        Vec2 origin = Director::getInstance()->getVisibleOrigin();

        if(questListMenu.questListMenu[0].parts.point.y - questListMenu.questListMenu[0].parts.size.height + divY < visibleSize.height)
        {
            for(int i = 0; i < QUEST_NUM; i++)
            {
                questListMenu.questListMenu[i].parts.point = Vec2(questListMenu.parts.point.x, questListMenu.parts.point.y - questListMenu.questListMenu->parts.sprite->getContentSize().height * (i + 1));
                questListMenu.questListMenu[i].parts.sprite->setPosition(questListMenu.questListMenu[i].parts.point);
                questListMenu.questListMenu[i].questName.point = Vec2(questListMenu.questListMenu[i].parts.point.x + questListMenu.questListMenu[i].parts.size.width / 30.0, questListMenu.questListMenu[i].parts.point.y);
                questListMenu.questListMenu[i].questName.label->setPosition(questListMenu.questListMenu[i].questName.point);
            }
        }
        else if(questListMenu.questListMenu[QUEST_NUM - 1].parts.point.y + divY >= origin.y)
        {
            int listcount = 0;
            for(int i = QUEST_NUM - 1; i <= 0; i--)
            {
                questListMenu.questListMenu[QUEST_NUM - 1].parts.sprite->setPosition(questListMenu.questListMenu[i].parts.point.x, questListMenu.questListMenu[0].parts.point.y * listcount + origin.y);
                questListMenu.questListMenu[QUEST_NUM - 1].parts.point.y = questListMenu.questListMenu[0].parts.point.y * listcount + origin.y;
                questListMenu.questListMenu[QUEST_NUM - 1].questName.label->setPosition(questListMenu.questListMenu[i].questName.point.x, questListMenu.questListMenu[0].parts.point.y * listcount + origin.y);
                questListMenu.questListMenu[QUEST_NUM - 1].questName.point.y = questListMenu.questListMenu[0].parts.point.y * listcount + origin.y;
                listcount++;
            }
        }
        else
        {
            for(int i = 0; i < QUEST_NUM; i++)
            {
                questListMenu.questListMenu[i].parts.sprite->setPosition(questListMenu.questListMenu[i].parts.point.x, questListMenu.questListMenu[i].parts.point.y + divY);
                questListMenu.questListMenu[i].parts.point.y = questListMenu.questListMenu[i].parts.point.y + divY;
                questListMenu.questListMenu[i].questName.label->setPosition(questListMenu.questListMenu[i].questName.point.x, questListMenu.questListMenu[i].questName.point.y + divY);
                questListMenu.questListMenu[i].questName.point.y = questListMenu.questListMenu[i].questName.point.y + divY;
            }
        }

        keepPosition.y += divY;
    }

考え方としては、

リストの先頭が画面上部のサイズから下に移動しそうなときは初期位置に設定する、

リストの最後が画面の下から上にいs¥どうしそうなときは下からリストを並べる、

といった感じです。

じゃあ、次はタップで選択処理だな。

【デザインパターン】Chain of Responsibilityパターン

Chain of Responsibilityのサンプルコードです。

package org.example.chainofresponsibility;

public class Question {
    public int level;
    public Question(int level){
        this.level = level;
    }
}
package org.example.chainofresponsibility;

public abstract class Handler {
    private Handler next;

    public Handler setNext(Handler next)
    {
        this.next = next;
        return next;
    }

    public final void request(Question question)
    {
        if(judge(question)) {
            // 処理完了
        } else if(next != null) {
            next.request(question);
        } else {
            // 処理不可能
        }
    }

    protected abstract boolean judge(Question question);
}
package org.example.chainofresponsibility;

public class ConcreteHandler1 extends Handler {
    @Override
    protected boolean judge(Question question) {
        if(question.level <= 1) {
            return true;
        } else {
            return false;
        }
    }
}
package org.example.chainofresponsibility;

public class ConcreteHandler2 extends Handler{
    @Override
    protected boolean judge(Question question) {
        if(question.level <= 2) {
            return true;
        } else {
            return false;
        }
    }
}
package org.example.chainofresponsibility;

public class Main {
    public static void main(String[] args)
    {
        Handler handler1 = new ConcreteHandler1();
        Handler handler2 = new ConcreteHandler2();

        handler1.setNext(handler2);

        Question question = new Question(1);

        handler1.request(question);
    }
}

Chain of Responsibilityは処理を行う人(Handler)を数珠つなぎに配列しておき、リクエスト(Question)に対して先頭のHandlerから処理が可能かどうかを判定(judge)し、処理できない物であれば後ろのHandlerにまる投げする、という仕組みです。

なので、あらかじめHandlerを継承しているConcreteHandlerを作成して数珠つなぎを作っておく必要があります。

ConcreteHandlerにてjudge=trueならば、渡されたquestionを適切に処理し、judge=falseならば、そのquestionを後ろのConcreteHanderに渡します。

【北海道大戦2021】タイトル画面の作成

ロードボタンは何も実装していないので、何も置きませんが、

新規ゲームを選択すると、フェードイン、フェードアウトがかかって前回まで作成した画面に遷移します。

    class TitleScene : asd.Scene
    {
        private asd.Layer2D layer = null;
        private asd.TextureObject2D _newgame = null;
        private asd.TextureObject2D _load = null;

        private asd.Texture2D newgame1Image = asd.Engine.Graphics.CreateTexture2D("newgame1.png");
        private asd.Texture2D newgame2Image = asd.Engine.Graphics.CreateTexture2D("newgame2.png");
        private asd.Texture2D load1Image = asd.Engine.Graphics.CreateTexture2D("load1.png");
        private asd.Texture2D load2Image = asd.Engine.Graphics.CreateTexture2D("load2.png");

        private const int buttonWidth = 330;
        private const int buttonHeight = 80;

        public TitleScene()
        {
        }

        protected override void OnRegistered()
        {
            layer = new asd.Layer2D();
            AddLayer(layer);

            // 下地
            var background = new asd.GeometryObject2D();
            layer.AddObject(background);
            var bgRect = new asd.RectangleShape();
            bgRect.DrawingArea = new asd.RectF(0, 0, 1900, 1000);
            background.Shape = bgRect;

            // 北海道の背景
            var hokkaido = new asd.TextureObject2D();
            hokkaido.Texture = asd.Engine.Graphics.CreateTexture2D("101.png");
            hokkaido.Scale = new asd.Vector2DF(1.5f, 1.5f);
            layer.AddObject(hokkaido);

            // タイトル
            var title = new asd.TextureObject2D();
            title.Texture = asd.Engine.Graphics.CreateTexture2D("title.png");
            title.Position = new asd.Vector2DF(250, 200);
            layer.AddObject(title);

            // 新規ゲームボタン
            _newgame = new asd.TextureObject2D();
            _newgame.Texture = newgame1Image;
            _newgame.Position = new asd.Vector2DF(150, 450);
            layer.AddObject(_newgame);

            // ロードボタン
            _load = new asd.TextureObject2D();
            _load.Texture = load1Image;
            _load.Position = new asd.Vector2DF(500, 450);
            layer.AddObject(_load);
        }

        protected override void OnUpdated()
        {
            asd.Vector2DF pos = asd.Engine.Mouse.Position;

            if(isOnMouse(pos, _newgame))
            {
                _newgame.Texture = newgame2Image;
            }
            else
            {
                _newgame.Texture = newgame1Image;
            }

            if (isOnMouse(pos, _load))
            {
                _load.Texture = load2Image;
            }
            else
            {
                _load.Texture = load1Image;
            }

            if (asd.Engine.Mouse.LeftButton.ButtonState == asd.ButtonState.Push)
            {
                if (isOnMouse(pos, _newgame))
                {
                    var scene = new MainScene();
                    asd.Engine.ChangeSceneWithTransition(scene, new asd.TransitionFade(1.5f, 1.5f));
                }
            }
        }

        private bool isOnMouse(asd.Vector2DF pos, asd.TextureObject2D button)
        {
            if (pos.X > button.Position.X && pos.X < button.Position.X + buttonWidth
                && pos.Y > button.Position.Y && pos.Y < button.Position.Y + buttonHeight)
            {
                return true;
            }
            return false;
        }
    }

具麺 汁無し担々麺風

こないだツルハドラッグのワゴンセールで見つけて買って、茹でた冷凍うどんにかけて食べてみたのですが、

これがなかなか美味しかった。

具麺シリーズは何種類か合って、

https://www.kikkoman.co.jp/kikkoman/gumen/index.html

味を変えれば冷凍うどんがいくらでも食べられるということです。

冷凍うどんの美味しい食べ方を研究してきたオイラにとってはもってこいの食材なのですが。

でも、ワゴンセールと言うことは、品物入れ替えが行われたことなので、ツルハドラッグでは手に入らなくなるのだろう。

と言うことは通販で買うしか無いのか。

通販は、北海道の送料が思った以上にかかるので、大量買いしないと明らかに損なので・・・

うむ、困った。

タレを自分で作ろうか?

自分、ぼっちですが何か?