カカと僕。

ブラジル代表は久々の来日だった。
ピッチ上には躍動するカカの姿。
この時のカカは選手として最ものっていた。当然のようにブラジルが勝った。

僕は試合が終わってもなんとなくスタジアムに残った。ブラジルの強さに圧倒され余韻に浸っていた。
観客がまばらになった頃ようやく立ち上がった。
スタジアムの道を歩いているとカカがやってきた。僕を見つけると笑顔で手を振ってくれた。

世界的スターと僕が知り合いとはあまり現実的じゃなくて自分でも驚きだ。
いつこのように知り合ったかあまり覚えていないがなんとなく話をするようになった。
今回も少しだけ話をした。
いつもお互いの近況を報告したりする。この日も2人でボーッとスタジアムの芝を見ながら話をした。

「2人で写真を撮らない?」

記念になると思い僕は何の気なしに提案してみた。

「ゴメンそれはダメなんだ」

カカは悲しそうに返事をする。

一般人と写真を撮るのはカカにとってはあまり好ましいことではないのだろう。
カカの写真1枚が高値で売られたりパパラッチのネタになることもある。
断られたことでそのことに気が付き謝った。

「いいんだ。じゃあかわりにこれをあげるよ」

そういってカカは試合で着ていたユニフォームをくれた。長袖で背番号は10。汗で湿っていて少し泥がついていた。

「いいのかい?ありがとう!大切にするよ」

ユニフォームを貰ったのでかわりに僕のTシャツを上げることにした。

その時着ていたスターウォーズのTシャツとカバンに入っていた日本のインディーズバンドのTシャツ。
カカにどっちがいいか聞いてみたらバンドTシャツを選んだ。
カカはとても気に入ってくれたようでまたあの笑顔で礼を言われた。
カカの小さな息子がカカを探しにやってきたので挨拶をして別れた。

部屋にはあの時貰った代表Tシャツがまだある。一生の宝物になるだろう。カカがバンドTシャツを着ているところを想像するとちょっと面白い。

今のブラジル代表にカカはいないけど僕はサッカー選手では1番好きだ。

…という夢を見た。
起きてガッカリした。

スポンサーリンク

PS4を購入して1年経ったのでここまで遊んだソフトを紹介

中古でPS4スリムの1TBを買ったのがちょうど1年程前でした。

そこそこゲームをしたのでこの機会に購入順で紹介したいと思います。

【soonのゲーム趣向】

■好きなシリーズ

・FFシリーズ

・ドラクエシリーズ

・ダンガンロンパシリーズ

・シュタインズゲートシリーズ

■苦手なジャンル

・FPS系

・アクション系

・格ゲー

ウォッチドックス


PS4と一緒にソフトを購入すると割引されるということで本体と一緒に購入した作品です。ハッキングをして物語を進めるというのがプログラマー心をくすぐったので購入しました。ハッキングというので謎解き系なのかな?と思っていたらアクション系(?)だったので「なんか思ってたのと違うな…」という感想でした。結局5~6時間のプレイで売ってしまいました。今思うともう少しやってみてもよかったかなと思いますがとりあえずこのソフトが自分のPS4初体験でした。

 

スターウォーズバトルフロント


実はスターウォーズのファンでして気になっていたソフトでした。Xウイングに乗って空を飛んだり、原作ストーリーに合わせてキャラクターを操作して遊べるのがとても面白そうで買いました。値段も1000円くらいだったが嬉しかったです。

実際やってみてXウイングで空を飛んで戦闘をした時は画面も綺麗だし感動しました。しかし何度やってもレベルが上がらないのでアンロックが出来ず確認してみるとオンライン対戦をしないと駄目だとか…。さらに自分はFPSが苦手なので全然勝てず、ルークを使っても普通の兵士にやられるので原作の世界観が壊れてしまいました(自分が下手くそなために…。)

結局1週間弱遊んだら飽きてしまい、やらなくなって売ってしまいました。

 

ベルセルク無双


この時期、漫画『ベルセルク』にドはまりしており、ゲームが出てるならやるしかないとおうことで購入しました。無双系はPS2で三国無双をしていた時期がありばしばし敵を切り倒す爽快感があったのを覚えています。

で、実際のゲームですが原作のストーリーをなぞりつつ『無双』しながら進めていくのですが、いかんせん単調でした。簡単に説明するなら『三国無双のシステムを簡略化したベルセルクゲーム』みたいな印象で、ベルセルクを題材にしていますが三国無双そのままです。無双系って大体こういう感じなのでしょうか?

こちらも最初は面白くやっていたのですが、3日くらいで飽きてしまい売りました。

ファイナルファンタジー15


PS4はこのゲームをやるために買ったようなものだったのですが、なぜかここにたどり着くまでに寄り道をしてしまいました。

きちんと全クリをして現時点で配信されている追加コンテンツも全て購入しクリアしました。

やってみた感想は、色々言われている通りストーリーの説明不足感が凄いなと思いました。なんでそうなったのかわからないことが多く、後半になるとそれが加速していきます(笑)。個人的にはサブクエストを充実させるより、ルナフレーナ編とか王都編を本編に挟んで欲しかったです(ルナフレーナ編は今後配信予定で、王都編はブラザーフットという映画で補完できます)。

それと男4人旅もいいんですが、やっぱパーティーに女キャラも欲しかったなと思いました。友情がテーマなのである意味妥当なのかもしれませんが…。

あとソフト自体が改修され、久しぶりにやるとチョコボに乗りながらでもアイテムが拾えるようになっていたり遊びやすくなっていました。こういうことが出来るのは今風のゲームだなと感じました。

今後も追加コンテンツが配信予定なのでまだ遊べそうです。

 

ドラゴンクエスト11


ドラクエシリーズも全てプレイしているので今回も購入。結構評判がよかったので期待していたのですが、最近のドラクエだな…という感じでした。全クリ済み。

これは完全に個人の好みになってしまうのですが、最近のドラクエは広大なマップを探索するというより一本道を歩いて次の町に進むみたいな感じになってきてなんか変わったなーと思っていました。思い出補正とは凄いもので、スーパーファミコン時代のドラクエをやりこんでいた者としてはやっぱドット絵がいいなといった感想でした(それを言ったら元も子もないですが)。

ストーリーはドラクエらしく王道な感じで、FF15をプレイした後だったので操作性が凄く優しい印象を受けました。

ちなみにマルティナはカジノで遊べるようになってからラスボスクリアまでバニーガールでした(笑)

 

ニーアオートマタ


PS4のオススメソフトで検索すると大体上位にくるのでとても気になっていたソフト。中古でも5000円くらいするのですが思い切って買いました。全クリ済み。

グラフィックが綺麗だしキャラもストーリーも自分好みで楽しむことが出来ました。アクション系の操作は苦手なのでオートにしてプレイしていました。なので強い敵も楽勝です(笑)

ひとつ不満があるとすれば敵の攻撃がみんな『丸い玉をめっちゃ出してくる』ということでしょうか?グラフィックがとてもリアルなのになんで敵の攻撃は丸い玉なんだ?と困惑した覚えがあります。

前作のニーアレプリカントは遊んでいないので機会があったらやってみたいと思います。

 

モンスターハンターワールド


アクション系は苦手な癖に手を出してしまいました。発売から時間が経って安くなっていたのと、FFコラボが始まるということなのでコラボ装備で遊びたくて買いました。昔PSPで3をやっていた頃があったので久しぶりな感じでした。

結論から言うとすぐ飽きてしまいました…。まぁこうなることはある程度わかっていたのですが、FFコラボがハンターランクを上げないと遊べず、コラボ装備を集めるのにも結構やりこまなくてはいけなくなったので途中で断念しました。

グラフィックは流石に綺麗でモンスターの迫力も凄いです。ただ自分は大剣で敵を倒すのが好きで他の武器を全く使わないためそういうところもすぐ飽きた要因だと思います。

 

1年を振り返ってみて


自分の好きなジャンルでRPGがあるのですが、昔はコマンドを入れて戦っていたのが最近はアクション系の戦闘になりちょっと残念です。またFPS系のソフトも多いので現在はなかなかやりたいゲームがないのが状態です。

せっかく据え置きでじっくり大画面で遊べる環境があるので早いところ次のゲームを探したいところです。

スポンサーリンク

30日でできる!OS自作入門パート9(14日目)

結構長くやっているつもりですが、まだ9回目の投稿なんですね。

というわけで今回のサブタイトルは『高解像度・キー入力』です。

一通りの説明は終わったらしい


ここまで色々と機能を実装してきましたが、ここまででプログラミング言語の知識やアルゴリズムのテクニックの紹介は終わりのようです。これからは今までの知識の組み合わせでOSが作れるとのこと。

なので筆者の気分は「明日から本気だす」状態のようですが、それで終わりだと読者はつまらないだろうということで高解像度とキー入力の機能を実装するようです。

画面のサイズを大きくする


高解像度にするとはなんぞや?ということですが今までの320×200の画面サイズを640×480にするようです。

具体的にはアセンブラの画面モード設定を書き換えます。

BX,0x4101

AX,0x4f02

こう設定されていると画面が大きくなります。

この値を説明すると、昔ビデオカード会社が作ったVESAという協会が共通の設定方法で専用のBIOSを作りました(VBE)。AX=0x4f02とするとVBEを使った画面モード切替となり、BXの値に画面モード番号を設定します。0x101というのが640×480×8bitカラーの設定値で、この値に0x4000を足した値をBXに入れると640×480の画面サイズになります(だから0x4101が設定されている)。

ちなみに実機で試す場合はどんなビデオカードを使っているかによります。たとえばVESAに協力していない会社のビデオカードの場合だとVBEモードに設定できないのでデフォルトの320×200で我慢するしかないようです。

 

キー入力


Aのキーを押すとAを押した時は1Eと表示されはなすと9Eと表示されます。

なんでかよくわかりませんがそれぞれのキーで決まった値が表示されるのでこれを正しく直します。

といってもちょっとこの辺はよくわかりませんでした…。なのでちょっと調べて自分なりに理解してみたいと思います。

 

最後に


ちょっと中だるみっぽくなってきてしまっています。

今回はちょっと息抜きくらいの感じでしたが結構理解が追いついていないです。

次回までにちょっと復習をしたいと思います。

スポンサーリンク

PHPで半角チェックを正規表現を使わず実装

英数字チェックとか半角チェックとか取り込まれるデータが不明な場合よくチェックをすると思います。チェックをすると大体正規表現が出てくると思いますが、正規表現を使わずともチェックする方法があるので紹介します。

仕様

input: 全角文字

もしinputが英数字の場合半角文字にして返却。英数字以外が混じっていたら不正な文字のため『xxxxx』を返却する。

サンプルソース


public function halfCheck()
{
  $fullwidth = "abc12";

  // 全角文字を半角文字に変換
  $changeResult = mb_convert_kana($fullwidth, "a");

  // 半角に変換した文字の長さと幅を変数化
  $strlen = mb_strlen($changeResult, "UTF-8");
  $strwidth = mb_strwidth($changeResult, "UTF-8");

  if($strlen == $strwidth) {

    // 半角の場合
    return $changeResult;

  } else {

    // 全角が混じっている場合
    return "xxxxx";
}

// 実行結果
abc12


 

解説

まず6行目のmb_convert_kanaで全角文字を半角文字へ変換します。この時引数により半角文字へ変換する文字種を指定できます。ちなみに”a”は英数字が対象になります。

次に変換した文字に対し、9行目のmb_strlenで長さの値を、10行目のmb_strwidthで幅の値を取得します。文字コードはしっかり合わせます。

mb_strlenはシングルバイト文字・マルチバイト文字ともに1としてカウント。
mb_strwidthは原則シングルバイト文字=1、マルチバイト文字=2としてカウントします。

例えば『12abあ』という文字があったとします。この場合

$strlenはバイト長を返すので5(5文字のため)

$strwidthは6(『12ab』がそれぞれ1バイト、『あ』が2バイトのため)が返ります。結果不一致のため『12abあ』はelseに入ります。

文字のバイト数を比較することで正規表現を使わなくても上手いこと半角チェックができますね。

PHPは関数がたくさんあって便利ですね。

 

スポンサーリンク

30日でできる!OS自作入門パート8(13日目)

今回のテーマは『タイマ-2』ということで12日目の続きになります。

30日のうち2日もタイマに費やすとは長くないか?と思いましたが、どうやら今後タイマをよく使うらしくそのためしっかり作りたいようです。同じような理由でレイヤーの制御(本書では下じき制御)も頑張っていたそうです。

タイマ2となっていますが、今回はここまで書いたタイマ機能の改良になります。繰り返し出現するコードを共通化してまとめたり、if文の判定を改良したりそういう修正です。

ただ修正して「なんとなく早くなったかなー」では自己満足になってしまうので性能を数値として性能を測定してみます。

性能測定


やり方は簡単でまず修正前のソースでカウントを実行して10秒経ったらどれだけカウントできたか確認するという方法です。修正前と修正後でそれぞれ5回実行して平均を見てみました。筆者は最初エミュレータで実施しましたが5回の中でも結構誤差があったため実機でも試していました。エミュレータでの最大値と最小値の差は10575であったのに対し、実機は177なのでかなり違いました。

結果、修正前の平均は74643595に対し修正後の平均は74619985ということで23610だけ速いということになりました。はい。

さらに改良


さてさらに改良していきます。FIFOバッファを見直したり番兵とよばれるリストの終端を表す仕組みを取り入れたりしました。

バッファや割り込みを改良したことで先ほどの値より1.3~1.7倍ほど数値はよくなりましたが番兵を使ってもあまり変化がなかったことが筆者は不満なようです。確かにこの仕組みを取り入れると無駄がなくなるのでよさそうな感じですがなぜでしょう?ということで今回は終わっております。

終わりに


自分で作ったソースを改良するというのは仕事でプログラミングをしているときも作りながらよく考えますよね。プログラムを改良することに一生懸命になってしまい納期がギリギリになってしまうこともありますがそれだけ楽しい作業だし改良してすっきりしたソースになるととても満足します(自己満足ですが)。

このように開発作業を読んでいるとやはり自分でも作ってみたくなりますね。最後まで読んで自作OSを自分で始めから作ってみたいです。

スポンサーリンク