より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

どハマりしてしまったローグライク&デッキ構築ゲーム「Slay The Spire」

上記の記事を見て、これは自分に合うのではないかとSlay The SpireのSwitch版を購入したのですがどハマりしてしまいました。

昔はボードゲームをよくやっていたのですが、その中でデッキ構築のドミニオンというゲームがあります。

そのドミニオンに近いゲームです。

ドミニオンが出た当時はマジック・ザ・ギャザリングみたいだねという感想だったのですが、ドミニオンみたいだねというような言葉がふと思い浮かぶなんて時代は変わり、私も長く生きてしまったのだなあと思います。

マジック・ザ・ギャザリングもデッキ構築要素はありますが、ドミニオンでは呪いのようなお邪魔カードが入ってきます。

ドラフト感あるけど、よくも悪くも呪いカードが阻害して、負傷やめまいといったRPGの要素をうまく表現しているのがSlay The Spireです。

ランダムに出てくるカードを選び取って、理想のデッキの構築を目指して、探索していくのがこのゲームです。

ゲームのコツとしては、防御が重要ということです。ダメージを抑えること。

どうしても強い攻撃カードを集めたくなりますが、攻防のバランスが大事になってきます。

ノーダメージで敵を倒すのが理想です。かといって防御のカードを集めてばかりでも破壊力が出ないため、肝心な時に倒し切れず不利になったりします。

ハマって、一気に1日に2キャラクリアしてしまいました。

みまもりSwitchでゲームのプレイ時間を確認したら、恐ろしいことになってました。

読書感想「どん底から最高の仕事を手に入れるたった1つの習慣」

一人は大学卒業後に大手企業に就職、一人は大学卒業後に自ら起業。そんな二人の話で物語は進みます。

どちらが幸せになれると思いますか、というくだりから始まりますが、だからといって起業した方が幸せになるという話にはなっていません。

どちらかというと大手企業に就職したターくんの方がみどころになります。

夢を持つこと

印象的な発言に溢れている本でした。

  • 「さあ、ミスター・シバタ。まず君が、これから日本をどんな国にしようと考えているのか、聞かせてくれ」
  • 「我々は世界を変えるために、ここに集まっている。君は日本すら変えることができないのか。そんな君と話す時間はない」 「人が幸せになる組織のキーワードはね、『相互支援』。つまり、社員が助け合う組織ってことだよ」 「なんだって、一人から始まるんじゃないか。やる気のない一万人よりも、本気の一人が世界を変えるんだぜ。まずは、ターくんの本気の姿を見せてやれよ!」
  • 「どんなことも前向きに考えようぜ」
  • 「人と会うのは自分の思い込みをなくすためだったんだ」

ImageSharpを使って画像を生成してみる。

ImageSharpは、System.Drawingを使わないクロスプラットフォームの2D描画APIです。

sixlabors.com

www.nuget.org

メリットとしてはクロスプラットフォームであること。

また、System.DrawingはWebサービスや非同期処理には向いていませんので、それに替わる期待のライブラリです。

このチップ画像を用いて、960*480のサイズのマップ画像を生成してみます。

この処理にImageSharpを使って行ってみることにします。

f:id:rimever:20200202204611p:plain
今回使う画像

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Primitives;

namespace ImageSharpAwesome
{
    class Program
    {
        static void Main(string[] args)
        {
            const int chipSize = 16;
            Size size = new Size(60,30);
            using (var image = new Image<Rgba32>(size.Width * chipSize,size.Height * chipSize))
            {
                using (var chipImage = Image.Load<Rgba32>("Resources/field.png"))
                {
                    for (int x = 0; x < size.Width; x++)
                    {
                        for (int y = 0; y < size.Height; y++)
                        {
                            var chipPoint = GetChipPoint(size, x, y);
                            for (int cx = 0; cx < chipSize; cx++)
                            {
                                for (int cy = 0; cy < chipSize; cy++)
                                {
                                    image[x * chipSize + cx, y * chipSize + cy] = chipImage[chipPoint.X * chipSize + cx,
                                        chipPoint.Y * chipSize + cy];
                                }
                            }
                        }
                    }
                    image.Save("create.png");
                }
            }
        }

        private static Point GetChipPoint(Size size, int x, int y)
        {
            Point chipPoint = new Point();
            if (x == 0)
            {
                chipPoint.X = 0;
            }
            else if (x == size.Width - 1)
            {
                chipPoint.X = 2;
            }
            else
            {
                chipPoint.X = 1;
            }

            if (y == 0)
            {
                chipPoint.Y = 0;
            }
            else if (y == size.Height - 1)
            {
                chipPoint.Y = 2;
            }
            else
            {
                chipPoint.Y = 1;
            }

            return chipPoint;
        }
    }
}

f:id:rimever:20200202211612p:plain
一丁あがり

できましたね。

もう少しサンプルコードが充実していると有り難いとはいえ、APIそのものは扱いやすいです。

まだ、ベータ版なので、正式版が待ち遠しいですね。

参考記事

dotnetfoundation.org

ITエンジニアになってダルシムの強さを検証

プロのテスターはゲームのバグを見つけるのもうまい。というのを会社の勉強会で話していました。

アニメ「ハイスコアガール」を見ていたので、学生時代に遊んでいたストリートファイターをITエンジニアとして遊んでみることに。

hi-score-girl.com

アニメでは主人公はガイル、ヒロインはザンギエフが持ちキャラという設定です。

なんとなく、今回、私はストリートファイターダルシムの強さを確かめたくなったのでした。

私とストリートファイター

ゲーセンは行くなと言われてましたし、お金がいくらあっても足りないので、主に家庭ゲーム機で遊ぶのがほとんどでした。

友達とストリートファイターZERO2を遊ぶことが多かったのですが、そんなに延々と対戦しなかった方です。

よく使うキャラクターはリュウ

ただし、波動拳昇竜拳の出しわけも出来ず、ほぼガチャプレイで勢いで操作していました。

なんでダルシム

初代ストリートファイターではガイルとダルシムの二強とも言われていました。

www.famitsu.com

ダルシム

そんなに強いのか、と。

なんか、白目だし、ガンジーなのか、ガイコツなのかよくわからんキャラだと。

ダルシムってZERO2いたっけ?と調べたら、使えたのか、というくらい、意識したことは全くありませんでした。

で、早速ダルシムでプレイ

最初はMEDIUMでスタートして、HARD、VERY HARDと進めていきました。

意外と、いける!

f:id:rimever:20200202185756j:plain

ノーコンティニューではありませんが、人生でまともにダルシムを操作したことがないはずなのに、割とあっさりクリアできました。

基本戦術は、

  1. ヨガファイアーか立ち強パンチで遠距離攻撃。
  2. 敵が飛び上がったら、立ち中キックで撃ち落とす。
  3. 敵をピヨらせたら近づいて、強パンチ投げ(ヨガスルー)。ダメージが高く、ダルシムの必殺技とも言える。
  4. 腕を伸ばしてリーチがあるが、実は近い敵には当たらない。ガード方向に入力して、ボタンを押すと近距離攻撃ができる。
  5. 飛び道具の撃ち合いで分が悪い時などは、ジャンプ中キックを織り交ぜる。

といったところです。CPU戦とはいえ、こう来られたら、こうするという筋道が立てやすかったです。

ヨガファイアーで飛ばしたら、立ち中キックです。あとでも述べますが、これを繰り返すだけで、一部のキャラは楽勝です。

f:id:rimever:20200202185607j:plain
伝家の宝刀立ち中キック

波動拳昇竜拳よりお手軽です。私の腕だと必殺技はキー入力ミスの元なので、ダルシムは楽です。

f:id:rimever:20200202185515j:plain
私にとっての必殺技はこのヨガスルー。

各キャラ攻略法

個人的な攻略メモ。CPU戦です。

VSケン

コンピューターの場合、ケンはやたら昇竜拳を出したがります。

昇竜拳 → 中昇竜拳 → 強昇竜拳 と昇竜烈波かいといった具合に。

下手に腕を伸ばして攻撃すると当たり判定を与えてしまい、昇竜拳の餌食になるので注意。

昇竜拳の落ち際をしっかり叩いてダメージを与えます。

VSリュウ

応用問題。

波動拳の撃ち合いではキリがなく、真空波動拳で打ち破られてしまいます。

かと言って、適当に飛び込むと昇竜拳で叩いてきます。

リュウのCPUは、かなり作り込んでいるなと感じます。

波動拳の撃ち合いになったら、途中で飛び込めば大体ダメージになる感じです。

もしくは、スライディングで飛び道具を潜り込んでカウンター。昇竜拳をもらわずに済むのでこちらの方がいいかも。

VSキャミィ

フーリガンコンビネーションで飛び込んでくるのですが、他のキャラにないジャンプ軌道です。

ガード方向にキー入力して攻撃できる近接技で対空を工夫する必要があります。

VS T.ホーク

コンドルダイブで飛び込んでくるため、ただヨガファイアーを撃つともらってしまいやすいです。

それが嫌なので、ジャンプ中キックで攻めたりもします。それはそれで対空技で撃ち落とされることもありますが。

VSバイソン

四天王の一人なのですが、楽勝です。

エドモンド本田同様に突進技をもつ相手のセオリーとして、ヨガファイアー連発して、飛び込んできたら立ち中キック。

これを繰り返していれば、バイソンを近づけさせずに倒してしまえます。

f:id:rimever:20200202185427j:plain
Perfect!

VSバルログ

ダルシムはスピードのあるキャラを苦手にしていますが、それだけではなくバルログはリーチも長いです。

リーチで負けた気分にさせてくるのはバルログだけです。

網に捕まったら、飛び込んでくるので、しっかり対空する必要があります。

いつもの立ち中キックではダメで、ガード方向にキー+中パンチで対空技が出せるので、これを利用して確実に撃ち落とします。

撃ち落としたら、立ち強パンチで追い討ちを狙います。

VSサガット

帝王というだけあって、タイガーショット、グランドタイガーショットタイガーアッパーカットと揃っています。

タイガーショットの撃ち合いだと、グランドタイガーショットがあるため、分が悪いです。

タイガーショットに対して、立ち強パンチを合わせられると痛快です。

ただ離れて立ったまま攻撃するよりは、ジャンプしてキックを織り交ぜると良さそうです。

VSベガ

難度が上がるにつれ、手強くなってきます。

空を自在に飛び上がって攻めてくるため、立ち中キックで撃ち落とせない軌道もあり、なかなか捕まえにくいです。

戦闘機みたいな動きをしてきますよね。

ヘッドプレス・サイコクラッシャー・ダブルニープレスといった多彩な技を織り交ぜてきます。

HARDESTになると、相当な苦戦を強いられることになります。

これまでのヨガファイアーと立ち中キック戦術が全く通じません。

自力でなんとかするしかないです。

サイコクラッシャーはガードして投げに持っていきたいところ。

立ち強パンチを織り交ぜるなどしてなんとか勝てました。

このままでは勝ったつもりがしないため、バーサスモードでベガを狙い撃ちして再戦を繰り返した結果。

ジャンプ中キックを出すとベガが追いかけて普通にもらってくれることが多いです。

対空時間の長いジャンプでこれを繰り返して、空中を彷徨います。

これがぺちっという貧弱な打撃音がしないのですが面白いようにもらってくれます。

あとは、サイコクラッシャーをガードしてからの投げを狙います。

ダルシムはヘッドプレス、特にデビルリバースに対して有効打がないため、ベガが飛んでくるのを待っているのは賢明ではないです。

ガブラストとか出せたらもう少し楽になるかもしれませんが。コマンド入力が難しいです。

ベガは暴れると手の施しようがないのですが、対空技が見当たらないので、ドリルキックで攻め込むのも良さそう。

まだまだダルシムの奥深さはあるなと感じたのでした。

結論

最終的には、ダルシムを使えば最も難易度の高いHARDESTもクリアできてしまいました。

それが、たった1日の日曜日の出来事です。

スーパーコンボもヨガブラストも、ヨガフレイムもヨガテレポートも一度も出すことなく勝ててしまいました。

コマンド入力スキルを要求しませんし、離れた距離で戦えるので、相手の動きを見て、確実なダメージを与えていけます。

ITエンジニアの観点からはなーんにもダルシムの強さについて言及できませんでしたが、この強さは本物です。

f:id:rimever:20200202185653j:plain
ダルシムの強さについて、ある意味悟りを開いたのだった。

仕事がつまらないから読んだ「まんがで変わる! 仕事は楽しいかね?」

物語は、デザイナーを志望しながら派遣社員として働く女性。

ふと入ったカフェで会った老人に、こんなメモを渡されます。

ためしてみる いっぱい

目標を目的にしてはいけない。

昔の夢に固執しなかったからこそ、偉大な功績を残してきた人たちの方がずっと多い。

よく、小学校の卒業アルバムに書いたことを紹介してますけど、あんなの大人になって読み返しても何にもならないのに、なんでメディアは報じるのかさっぱりわからんです。

新しいアイデアとは新しい場所に置かれた古いアイデア

偶然が新しい発明を生み出します。

  • コカコーラは薬屋が頭痛薬を希釈するとうまいことに気づいたことから始まった
  • チョコレートクッキーを作ろうとして、チョコレートを溶かし忘れたので、刻んで入れて熱で溶けると期待して作ったら出来た失敗作
  • ズボンが品薄なので船の帆布を使って作ったらジーンズとなった。

蛍光灯の選び方

定期的に交換する蛍光灯ですが、この歳になってもよくわからないから同じの買ってました。

ちゃんと調べてみることにしました。

これが私の自宅の蛍光灯なのですが、FL20SS・ECW/18Hとあります。

  • FLはスタータ形直管。ちなみにスタータ形丸形はFCL。
  • 20は20形
  • SSはガラス菅の太さ

この場合であれば、直管の20形の蛍光灯を選べば良いということですね。

参考記事

dime.jp

http://www.setonaikaikisen.co.jp/aamix/denki.htm

なかなか出来ない事業シナジー「amazon 世界最先端の戦略がわかる」

amazon 世界最先端の戦略がわかる

amazon 世界最先端の戦略がわかる

Amazonのポテンシャルの高さをつくづく突きつけられる本でした。

GAFAの中で、AmazonというとiPhoneAppleや、いかにもテックテックしたテック企業のFacebookGoogleと比べると、あまりイメージとして尖った物がないイメージです。

そりゃ通販で楽天よりはAmazonだけど、というイメージ。

程度ですが、読めば読むほど、全てがAmazonに飲まれていくのではないかというほどのスケールを感じさせられます。

筆者はAmazonを何度かローマ帝国と称していますが、確かにそうでしょう。

ローマ帝国は滅亡しました。滅亡した説はいくつか言われております(個人的にはパンとサーカスで堕落したという解釈だった)が、はっきりしません。

Amazonは滅亡しないのではないかという程の勢いです。ジェフ・ベゾスは企業は持って30年くらいだと言ってます。

Amazonが衰退したら人は理由をいくらでも並べられますが、全盛期の今に衰退する理由を挙げられる人はなかなかいないのではないでしょうか。

楽天Amazon

楽天Amazon、日本だと同じ通販サイトだが、根本的にターゲットが違う。

楽天は出店企業から利用料を取っている。Amazonは消費者に物を売って儲けている。

楽天は売り手がユーザーで、Amazonは買い手がユーザー。

楽天は出店企業から利用料を取り、在庫を抱える必要もない。そのため、展開スピードは早い。

Amazonは逆に物流センターを構えるなどしないとならないので、時間がかかる。

ただし、楽天は大量に仕入れて安く売るようなことが出来ない。送料無料のようなことも簡単に出来ない。

Amazonは自分で倉庫を抱えて売るので安く売ることも出来るし、送料無料も出来る。

楽天も物流センターを増やそうとしているが苦戦している。

ジェフ・ベゾスは、あるとき、Amazonはロジスティック企業と称している。ロジスティックは兵站である。

CCC(キャッシュ・コンバージョン・サイクル)

物を売ってから、お金が入るまでのサイクル。

これが短いほど、資金繰りに苦労しない。

ウォールマートは12日。

Amazonはこれがマイナスである。

Amazonは秘密主義であるため、詳細は不明だが、マーケットプレイスによるのではないかと言われている。

マーケットプレイスの売り上げは一部はAmazonに入るが、ほとんどは顧客に入る。

Amazonに入るのは10%程度ではないかと言われているが、一度は売り上げの全てがAmazonに入る。

手数料を差し引いた分を出店者に支払うまではAmazonが自由にお金を使うことができる。

これにより、キャッシュフロー経営を実現している。

Amazonは利益を出して配当を株主に払うようなことをせず、使えるお金を次の事業に投資してさらなる成長を目指している。

事業のシナジー

小売事業でサーバーインフラを構築。余ったリソースを他社の流通に提供。

これがうまく行ったので、Amazon Web Service、クラウド事業につながった。

作りすぎが、功を奏した結果となっている。

Amazonがあまりに強すぎる結果、小売業からはAWSの利用は敬遠されている。

その形で成長は止まり、Azureが勢いづいている。

AWSだけではなく、 FBA(フィルメント・バイ・アマゾン)というサービスもある。

これはAmazonの倉庫に商品を預ければ出荷・発注・配送まで行ってくれる。

Amazonの中で確立された仕組みを外に提供することでさらなる勢力を伸ばしている。

以前の会社でも事業のシナジーを生み出そうと言われるのですが、これがなかなか出来そうで出来ないです。

結局、本業に集中しようという結論に帰っていきます。

ベースとなるビジネスが小売業という商売の中の商売ということもあるのですが、失敗を恐れず、ひたすら投資をしまくる、そして外に展開するというビジネスのサイクルが上手く行ってるなと思います。

強いプラットフォーマー

強いプラットフォーマーは市場を握ることで、業界のルールを決めることができる。

ピッキングにKIVAというルンバのようなロボットを使うことで人が発送する物をカートに入れて押す必要がない。

KIVAを買収した後、他の利用している企業には更新をさせず、独占してしまった。

日本の出版業界では出版社からではなく、卸しである取次業者から書店は仕入れるしきたりがある。

しかし、Amazonは取次業者からではなく、出版社から仕入れる。

書店との利益率が全然違う。

書店は万引きが多いと潰れる。ECサイトに万引きはない。考えてみれば当たり前だが、当たり前大事なこともある。