はりうすブログ (のすけのメモ)

湘南にある小さな会社 代表 ”のすけ”のブログです

そろそろSandyBridgeおじさん卒業。VRがしたくて新しい自作PCを組んだ話

f:id:hollywis:20211016071205j:plain

こんにちは、のすけです。

===
去年書いて眠ってたので出しときます。
この記事で作成したPCはもう1年稼働中。いい感じです。
ただ最近はVRはしてませんorz
===


PCの温度管理は大切!なんて記事を8年前?に書いて、今でも結構みられているのですが。

その時のPCが2010年に制作したCore i7 2600K(SandyBridge)を積んだ

hollywis.hatenablog.com

これです。


今話題?のVRが無性に気になってしまい。

こちらの11年前のPCに思い切って GTX 1660 Superを買って

強引にくっ付けて、さらに

VIVEのCOSMOS Eliteなんてのを買って、動くか試しました。


で、結果。


なんと、、、


動いたw


2010年のPCで動くんかいぃ!!

すげえな2600K。全然カクツキも感じない。





ただ、一つ問題が。。。


どうやらSandyBridgeってUSB3.0に正式対応してないらしくて


ただ、たまたまマザボUSB3.0を搭載していたから奇跡的にCOSMOS Eliteがうごたわけなんだけど


起動が5回に1回動けばいい方で、結構な割合で起動しないことが多かったんだよね。


原因としては頭につけるガチャピンみたいなヘッドマウントディスプレイと

PCを接続するUSB3.0の相性が悪いようだった。





ということで、11年ぶりに思い切ってPCを一新することにした。




構成はこうだ!

[構成概要]

CPU: Ryzen9 3950x 16コア32スレッド
メモリ: TEAM DDR4 3200Mhz PC4-25600 32GBx2枚
SSD: CFD販売 SSD 1TB 内蔵 M.2-2280(MVMe) 接続 PCIe Gen4x4
マザボ: MSI MPG B550 GAMING CARBON WIFI マザーボード ATX
電源: Thermaltake TOUGHPOWER GRAND RGB -850W
CPUクーラー: Corsair H115i PRO RGB 水冷CPUクーラー [Intel/AMD両対応] FN1150 CW-9060032-WW
グラボ:GIGABYTEガバイトRadeon RX 6700 XT EAGLE 12G

合計30万円くらい。

[構成所感]

CPU

まずCPUが一気に16コアにグレードアップ!!

すでに5950Xも発売されてて、こっちを買いたかったんだけど、¥65,890で圧倒的に3950xが安かった。
5950Xは10万超えててちょっと。。

3950xでも十分に速い。全てのコアを使い切ったことが今まで一度もナイ。


メモリ

よくわからないけど、Unity開発もするから潤沢に64GBにした。これで困ったことは一度もない!


SSD

Gen4速すぎ。Read4,950MB/sだってさ。

正直まだよくわかっていない。

別にGen3でも良かったかも。


電源

ゲーミングPCらしいカラフルなライトアップで綺麗。

動作も安定してて素晴らしい。


グラボ Radeon RX 6700 XT EAGLE 12G

メーカーは実はこれじゃなくてギガバイトのやつ。

一番悩んだのがグラボ。

ちょうど、マイニングブームでほとんどグラボが手に入らず、合っても値段がおかしなことになっている。

そこで、ちょうど発表された6700XTを即買いしてみた。

値段は9万円ほどと、めっちゃ高い。

動かしてみて

そんで、WQHDのディスプレイで、アサシンクリードオデッセイの設定高めでやってみたら

カクツク、カクツク。

f:id:hollywis:20211016071053j:plain

普通設定でも、問題なく動くんだけどGPU使用率は100%で張り付く感じ。


うーん。最近のゲームってGPUバカ喰いなのね。

ゲームをバンバンするなら正直性能が足りないかも。


でもVRに使う分には申し分なかったです。

f:id:hollywis:20211016070234j:plain

VRゲーム史上、クオリティが最高と言われている『Half-Life: Alyx』やってみた

f:id:hollywis:20211016071715j:plain


すごい臨場感。

このグローブでなんでも掴める。それだけで楽しい。

進化を感じる。


というわけで、SandyBridgeおじさん卒業

StripeのSubscriptionのhookについて

f:id:hollywis:20220303120557p:plain
こんにちは、のすけです。

クレジットカード決済プラットフォームStripeの新しいバージョン。と言っても数年前のアップデートですが

によって、機能がいろいろ拡充されてますよね。

ただ機能が多過ぎてドキュメントを読んで仕様を理解するのも一苦労。


その中で、便利なサブスクの機能なのですが

かなり柔軟に料金設定ができるのですが、既存のシステムにもサブスクの管理がある場合
重複して管理しなくてはならなくなります。

例えば他の決済プラットフォームも併用している場合には、仕方なく、自社システムにも
サブスク管理の仕組みを作って、Stripeのサブスクといい感じに連動させる必要があるかと思います。


それで、サブスクの入会、退会はどうやって検出したらいいの?

という問題にぶち当たるのですが。

そこはStripe、イベントをhookする仕組みが用意されています。

着信する Webhook を使用してリアルタイムで更新を取得する | Stripe のドキュメント

ただ、いっぱいイベントあるんですよね。。

サブスクの登録、キャンセルはどのhookを使えば、、、

'customer.subscription.created'を使ってみる

サブスクが登録された時、このイベントが走ります
ですのでこちらをhookするのが正攻法かと思います。


ただ、自社のサブスク管理システムとの連携の際に、
契約されたサブスクがどのサブスクかを識別するためには、あらかじめ登録時に
metadataに識別のためのプランidなどを仕込んで置く必要があります。


ただ、Stripeの管理画面の商品設定画面ではproduct(商品)やprice(価格)にはメタデータをあらかじめ設定できるのですが


サブスク契約(sub_xxxx)は契約時に作成されるので
事前にメタデータを仕込むことができないっぽです。


なので、やり方としては
登録は例えばコーディング不要のStripe既存のcheckout sessionの仕組みを使う場合
どうすればいいのかと言うと


checkout.session.create時に
subscription_dataというパラメータを設定できるので、そこのmetadataに
自社のサブスクを識別する識別子を設定しています。


これで、例えば'invoice.payment_succeeded'をhookして、渡されたJSONデータをパースすると
どのサブスクか判別できます。

'invoice.payment_succeeded'での検出

Stripeでの支払いの際には(トライアルの¥0決済含む)必ず発行されるイベントに
invoice.payment_succeeded'があります。


こちらをhookすることでサブスクの登録と継続決済の検出ができるのでいいかなと思います。


なぜなら、billing_reasonという項目にサブスクの状態が入っているからです


登録時には"subscription_create"が、継続決済時には"subscription_cycle"が入ってくるので
こちらを識別する方法があります

'customer.subscription.updated'の場合

このイベントは、サブスクリプションが変更されるたびにトリガーされます。
たとえば、クーポンの追加、割引の適用、インボイス項目の追加、プランの変更はすべて、このイベントを発生します。


この変更検知では、サブスクの継続支払いをだけを綺麗にhookできないです。
関係ない設定変更でも検出されてしまうので、何の変更なのかを吟味する必要があります。


個人的には使いづらいので、私はこちらは継続決済の検出には使ってません。

'customer.subscription.deleted'

これは普通にサブスクがキャンセルになったら発動します。


適切に検出してキャンセル手続きをしましょう。

番外:無料トライアル期間の設定

サブスクの無料トライアル期間はStripe管理画面からはできません。
登録しようとすると、レガシー機能で非推奨ですなんて出て、実際反映されません。


なのでAPI経由で設定が必要です。


これもStripe既存のcheckout sessionの仕組みを使う場合
どうすればいいのかと言うと

checkout.session.create時に
subscription_dataというパラメータを設定できるので、そこのtrial_period_daysというのがあるので

そこに日数を設定してやればOKのようです

【Unity道場6】プレイヤーを動かすPlayerコントローラーの作成

回答例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
  public float speed = 3f;  //移動スピード

  // Start is called before the first frame update
  void Start()
  {

  }

  // Update is called once per frame
  void Update()
  {
    float x = Input.GetAxis("Horizontal");  //左右方向のキー取得
    float z = Input.GetAxis("Vertical"); //上下方向のキー取得

    float addX = speed * x * Time.deltaTime;
    float addZ = speed * z * Time.deltaTime;

    transform.GetComponent<Rigidbody>().MovePosition(transform.position + new Vector3(addX, 0, addZ));
    transform.LookAt(transform.position + new Vector3(addX, 0, addZ));
  }
}

Simply Pianoやばい。ピアノコードが直感的に覚えられる

なんだか、最近ピアノにハマっている、のすけです。

PCばかり触っていると、揺らぎあるものに無性に引かれるもので

辿り着いたのがピアノ。


小学生の時に3年ほど習ってたんだけど、それ以来。

ピアノは電子のやつで、6万円くらい?でYAMAHAのP125ってやつを買いました。

色々触ったのだけど、これが一番グランドピアノのキータッチに近かったので。迷った末に購入。

ちょっと、キーが重くて指が疲れるけど、後悔はしていない。


最近は、Youtubeとかオンライン学習サイトが充実してて、

ピアノの先生に習いに行かなくても、全然学習できるのね。


Udemyとかで色々買ってみたけど、今、一番ハマっているのがこれ
f:id:hollywis:20211016054805p:plain

Simply Piano (年間コースで1万円くらい. 安すぎ!)


何がスゴイって、iPadにインストールしたら、あとはピアノとiPadをUSBケーブルで繋ぐと認識して

押したキーを合ってるか審査してくれるんだよね。


あと、カリキュラムが充実してて

子供の頃に習った、クラシックピアノ系もあるし

さらに! ピアノのコードを学習するカリキュラムもあって

実際のPOPSに合わせてコードで伴奏する方法が学べちゃう。




もう3ヶ月くらい毎日やって、もう少してコードのカリキュラムはクリアしちゃうのが、ちょっと物足りないんだけど。

終わったら、どうしようか。


クラシックピアノコースに進むか、もしくはYoutubeのコースでも進むか。

UniRxやってます

最近何も書いてなかったので、雑記を

こんにちは、のすけです。

最近は、これのシングルトンとかobservableパターンを読んで

その後、UniRx勉強してます

Vue.jsなどでobservableをなんとなく使ってたのですが

これを読んで理解が深まりました。

イベントと実処理を分離した実績達成システムを実装したくてたどりついた感じで

ゲームのパターンってなってますが、結構汎用的に、いろんなシステム開発で使える手応えを感じてます。


ではまた

shopifyという凄いECプラットフォーム

こんにちは、のすけです。

ただの雑記なのですが、shopifyというECプラットフォームご存知でしょうか。

最近は、簡単に個人のショップを作れるサービスがいっぱいあって

例えば
・BASE
・STORES
とか便利で利用していました。

数クリックでWEBのECショップが簡単に作れて便利ですよね。

ただ、セール中のモーダルを出してみたりなど、ちょっとした複雑な機能を
追加したりなんかは難しくて

そうなってくると、他のECプラットフォームになってくるわけですが

たとえば
WordPressにECプラグイン(WooCommerceとか)入れる
・ECcubeを使う
何かの選択肢が出てきたりします。

そんな中で、最近?2018年らしいけれど日本語にも対応したshopifyが中々凄いそう

利用間隔はBASEやSTORESのような感じでありながら
カスタマイズ性がWordPressやECcubeのような感じ。

つまり
サーバー不要で数クリックでショップを開けるけて
かつ細かいカスタマイズも色々できる!

APIもあって中々いじりがいがあるようです。
フロント部分はスクラッチで自前で作って、管理画面だけ利用するなんてこともできそうなので
期待が持てます。

海外性ということもあり、海外向けのEC作りたい場合にはかなり重宝しそうです。

ちょっと色々いじっていこうかなと
では!

【Unity道場5】衝突判定をせよ

問題1:衝突判定をせよ

キューブオブジェクトを上から落として、地面にぶつかった時にオブジェクトを削除してください。

回答例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CollisionTest : MonoBehaviour
{

    void OnCollisionEnter(Collision collision)
    {
            Destroy(gameObject);
            Debug.Log("当たったよ!");
    }
}

解説

OnCollisionEnterでイベントを検出して、オブジェクトを削除しています

実行結果

f:id:hollywis:20210215234005g:plain

問題2:衝突先のオブジェクトを削除せよ

問題1を改良します。

キューブオブジェクトを上から落として、地面にぶつかった時に地面オブジェクトの方を削除してください。

回答例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CollisionTest : MonoBehaviour
{
  void OnCollisionEnter(Collision collision)
  {
    Debug.Log("当たったよ!" + collision.gameObject.name);
    Destroy(collision.gameObject);

  }
}

解説

collision.gameObject

これで衝突先にgameObjectを取得できるので、それをDestroyします。

動作

地面に触れた瞬間に衝突して、地面が消えます

f:id:hollywis:20210216000553g:plain