こんにちは。

 

今日は好きな漫画の話でもしようかなと思っています。

 

この記事を読んでくださっているあなたは、漫画とかお読みになりますかね?

 

私は少年ジャンプ系の漫画を昔はよく読んでいました。

テニスの王子様とか、読んでテニススクールに通ったりした時期もあったり、結構漫画の世界に虜になることが多いんですよね。

最近は「少年ジャンプ+」で定期的に読んでるくらいです。

 

少年ジャンプで「SKET DANCE」を書かれた作者さんの漫画で「彼方のアストラ」という漫画があるのですが、ドはまりしてましたね。

ちょっと前にアニメ化もしてて、アニメも録画して何周も見返したりしてました。

 

最近だと、「タコピーの原罪」という漫画が話題になっていましたね。

まだ読んでなかったのですが、妻が最終回だった~と言っていたので、せっかくなのでこの機会に最初から読んでみようかな。


Kindleで上巻はもう出ているみたいなので、気になる方はぜひぜひ~

 

 

他にもおすすめの漫画とかありましたら、コメント欄とかで教えてくださると嬉しいです。

 

ではでは~ノシ

 

 

 

 

 

 

こんにちは。

 

解凍済みのひき肉の賞味期限がギリギリだったので、ミートソースを作りました。

 

大量のひき肉を炒めて、塩コショウとすき焼きのたれ少量で炒めて、トマト缶とコンソメ入れて煮詰めただけの簡単ミートソースです。

 

パスタも一緒に茹でて食べたけど、普通に美味しかったですよ。

 

え、写真は無いのかって?

 

...まあ、撮る前にお腹空きすぎて勢いで食べちゃいましたよね()

 

今日はちょろっとした内容ですが、まあ更新する癖も付けないとなので何卒...

 

では、今日はこの辺でノシ

 

こんにちは。

 

ここ数日、冬に戻ったのかと思うくらいの冷え込みでしたね。

昨日は眠すぎたのと節電目的でブログ更新もできなかったです。

 

今日は、UnityでUI周りの実装をする時に使う設計における、汎用的なものができないかな~というお話です。

 

とは言っても、現在業務で携わっているプロジェクトでの設計が結構使いやすいので、その設計を基に考えています。

3~4回くらいに分けて、紹介しようかなと思っています。

 

いつか、Youtubeとかに実際に設計して、ゲームを作る過程とかもアップするかもです。

アーキテクチャ 

一応、MVC(Model - View - Controller)での設計になります。

完全に理解しているわけではないので、合っているかは不明()

 

基本的な設計方針~レイヤー分け~ 

まず、最強の設計を考える上で重要だと思っているのは、汎用性です。

汎用的に使える設計であれば、クラス図を作る時にもその設計からクラス名だけ変更すれば、実装ができる!となるはずです。

 

ということで、汎用的に使える設計を考える上で、最初に各クラスが属するレイヤーを定義してあげる必要があると思います。

レイヤーの役割を意識することで、そのレイヤーに属するクラスが持つ役割も明確になっていくという考えです。

 

使用するレイヤーと役割は以下の通りです。

・ Modelレイヤー : 内部で扱うデータの加工や、ビジネスロジックを担う。Controller と View のことは何も知らない。

・ Viewレイヤー : 表示データの作成や、UI表示を担う。Controller と Model のことは何も知らない。

・ Controllerレイヤー : Model と View を繋ぐ役割を担う。Modelから受け取った加工済みの内部データをViewに渡すとか、Viewから依頼を受けてModelにデータを受け取りに行ったりとかする。

 

MVCに属さないレイヤーとして、Dataレイヤーがあります。

Dataレイヤーはさらに以下に分類されます。

・ VOレイヤー : 不変データ。DBに保存している形式だったり、

・ Domainレイヤー : 可変データ。VOから変換して内部で扱うデータとして保持します。VOに変換してDBに保存することもあります。

・ ViewDataレイヤー : 可変データ。Domainから変換してViewで扱うデータになります。Domainを持たずに生成する場合もあります。

 

終わりに 

あまり長くなりすぎても読みにくいと思うので、今回はレイヤー分けまでのご紹介でした。

もし、この記事を読まれた方は、レイヤー分けから、ご自身で設計を考えたらどのような設計になるか、少し試してみるのも面白いかもしれません。

 

では、また次回の記事も読んでいただけたら幸いですノシ

 

 

 

あとがき

雷電将軍の強化素材である鍔集めがしんどい

こんにちは。

最近、原神にハマってきている名もなきエンジニアでございます。

 

始めて3か月弱くらいで、ようやく稲妻の探索が進んできたくらいの、のんびりプレイ中です。

 

推しVtuberグループに所属している季咲あんこさんが推してるキャラらしいけど、使ってみるとめちゃくちゃ強かったです。

 

何が強いって、元素スキル使った後、勝手に雷元素の攻撃を追加で何回も与えてくれるところなんですよ。

最近はもっぱら、「雷電将軍」「行秋」「香菱」「鍾離」の4人でゴリゴリに探索してます。

(漢字が変換されなくてちょっと書くの大変...)

ちなみにベネットを入れずに鍾離を入れているのは、まだ敵の攻撃が痛くてシールドが欲しいからです。

 

まだ冒険ランクも37なので、聖遺物とかも厳選できる段階に到達していないのに、普段の探索くらいなら余裕に感じるのは

やっぱりキャラ自体が強いからなんだろうなって。

 

はやく聖遺物厳選の沼に浸かりたいので、頑張ってストーリーも進めないと...

あと、雷電将軍の強化に使う柄がとにかく足りないので、それも集めないとです。

 

では、今回はこの辺でノシ

こんにちは。

今日も今日とて、自由気ままに書いていきたいと思います。

 

※以下の記事の続きの内容なので、まだ閲覧されていない方は先に以下の記事を読んでいただけると、

多少理解が進むかなと思います。

 

というわけで、今回は実際に用意してみて、特に便利だなと思った拡張メソッドの話です。

 

IEnumerable<T>.Each 

あるクラスの配列の各要素に対して、同じ処理を行いたい場合に使うforeachを拡張メソッドとして用意したものになります。

======

// hogeArray.Each(hoge => hoge.fuga()); みたいに使う。ワンライナーで書ける場合も多くなるので可読性も上がる(気がする)

public static void Each<T> (this IEnumerable<T> self, Action<T> callback)

{

  foreach (var value in self)

  {

    callback?.Invoke(value);

  }

}

// indexが欲しい場合でも可能

public static void Each<T>(this IEnumerable<T> self, Action<int, T> callback)

{

  var index = 0;

  foreach (var value in self)

  {

    callback?.Invoke(index, value);

    index++;

  }

}

======

 

UnityEngine系 

Unity標準のクラスに対して処理ができる拡張メソッドも便利だと感じてます。

======

// hoge.SetText("ほげ"); fuga.SetImage(fugaSprite); piyo.SetColor(piyoColor); など

public static void SetText(this Text self, string value) => self.text = value;

public static void SetImage(this Image self, Sprite value) => self.sprite = value;

public static void SetColor(this Graphic self, Color value) => self.color = value;

// 特にSetColorに関して、TextやImageなどがGraphicを継承しているので、1つ用意しておくだけでどれでも使えて便利

======

 

終わりに 

こんな感じの拡張メソッドを用意しておくと、どんどんコードが可読性に富んでいくので、おすすめです。

仕事では非推奨ですが、英語が苦手な人は拡張メソッドをローマ字で用意するとかしたら、後から見やすくなったりするかも?(しなさそう)

 

あと拡張メソッド内でNullチェックとかしておくと、メインの実装時にNullチェック漏れを防げるので、そういった点も有能です。

どんな処理を拡張メソッドにした方が良いかは、実装者次第なところがありますが、少なくとも汎用的に使用して、

長ったらしい記述をしたくないとかなら用意する感じが良いのかなと思います。

 

では、今回はこの辺でノシ

こんにちは。

 

早速、ゲーム制作の備忘録的な記事も書いてみます。

 

今回はタイトルにもあるように「拡張メソッドを用意したらゲーム制作が楽になった」話をしていきます。

 

拡張メソッドってなんぞや 

まず、拡張メソッドがなんなのか分からないと便利さを書いても分からないと思うので、簡単に紹介します。

 

拡張メソッドとは、自分で用意した特定のクラスに対する処理を、メソッド呼び出しの形式で実行できるようにするメソッドのことです。

 

...まだ分かった(分からん)という状態だと思うので、例を出してみます。

 

string.IsNullOrEmpty()を毎回書くの面倒だよね?(圧) 

たとえば、以下みたいな文字列データの有無を判定する処理があったとします。

======

if (string.IsNullOrEmpty(hoge))

{

  // なにかする

}

======

1回書くだけならまだ良いんですが、何回もstring.IsNullOrEmptyって長く書くの面倒ですよね?

少なくとも、私はこの記事中に2回書くのも嫌だなと思いながら書いてます。

 

これを、もしも以下みたいに書けたら便利だと思いませんか?

======

if (hoge.IsEmpty())

{

  // なにかする

}

======
はい、この記述ができるようにするのが拡張メソッドです。

 

どう書くのか 

書き方は以下みたいな感じです。

======

// hoge.IsEmpty() で呼び出され、self には hoge が渡されます

public static bool IsEmpty(this string self) => string.IsNullOrEmpty(self);

======

 

終わりに 

文字で見るだけだと、あまりピンと来ないかもしれませんが、実際に用意してみると圧倒的に楽になります。

また、今回はstring.IsNullOrEmptyの書き換え紹介だけですが、個人的によく使うものは今後も少しずつ紹介しようと思ってます。

 

では、この辺でノシ

はじめまして。

 

どこかのゲーム会社でエンジニアをやっている一般人です。

主にUnityを使ってアプリゲームの開発やら運営やらやってます。

 

最近はVtuberにはまっていて、特に774incって運営のグループが好きです。

みんなかわいくて話も面白いから、配信とかアーカイブとか見てたらあっという間に時間が解けます...

 

ブログをはじめようと思ったきっかけは、自分でゲームを作りたいな~ってぼんやり考えたときに、

ただ作るよりも備忘録とか、技術書みたいなのを残した方が勉強になりそうだなと思ったからです。

 

とにかくコツコツ続けてくことを目標に、いろいろ残せたらなと思ってます。

 

ではでは~ノシ