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

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

M1MaxでUnityはまだもっさり!?かもしれぬ話

メインPCをAppleシリコン搭載の最新PCであるMacBookPro16に置き換えました

Unityを使ってみた感想です。

定量的なレビューじゃなくて、感想です。


比較対象は2021年に組み立てた自作PC(30万円くらい)

比較PC

Macスペック

CPU: M1Max 10コアCPU

GPU: 32コアのGPU

メモリ: 最大64GBのユニファイドメモリ

価格は50万円ほど。価格なら間違いなくこちらが勝ってる!

組んだデスクトップPC

CPU: 第三世代 Ryzen9 3950
GPU: Radeon RX6700XT
メモリ: DDR4 64GBメモリ

本体で30万円ほど
ディスプレイやキーボードを含めたら40万円ほど。
それでもM1Maxの方が高いです。

Unityスペック

UnityのAppleシリコン対応版の最新は、記事作成時点で
2021.2.16f1

結果

問題点

Unity Visual Effect Graph を使おうとすると
M1の方はビジュアルエディタがちょっともっさりしてる

エフェクトのプレビューがカクついたり

安定性や、重い処理はやっぱりデクストップPCの方が快適ですね。

本格的にやるときはデスクトップで、技術検証とは軽く作るときはM1Maxで
みたいな使い方になりそう

通常の3D作成

特に問題なし!!

どっちも速い。特に不便を感じない!

iOSへのビルド

問題なくできる!!

Xcodeのビルドスピードもめっちゃ速い!! M1Max速い!!

デスクトップPCではXcodeでのiOSアプリへの最終ビルドはできないので
これは助かる



と言うわけで、iOSへビルドするならM1 Max最適かなと。

PC向けの高画質なものを作るなら、Windowsの方が部がある感じかと思われます。

QNAPのWEBサーバーにSSL証明書を設定する方法

ゆえ合って、SSL証明書が必要になりました。

QNAPで動いているQTS(QNAPの独自OS)はLinuxの独自拡張OSのようで
SSHログインしてLinuxのように操作できます。

以下、設定方法です。

SSHサービスを起動

まずは「ネットワークサービスファイルシステム」から
SSH」をONにして

f:id:hollywis:20200220142928j:plain
SSH

ターミナルからSSHでログインします。

apacheSSL証明書の設定を実施

設定ファイルはここにあります

more /etc/config/apache/extra/apache-ssl.conf

記述中のこのあたりの部分を変更していく感じです。

SSLCertificateFile "/etc/stunnel/stunnel.pem"
#SSLCertificateKeyFile "/etc/config/apache/server.key"
#SSLCertificateChainFile "/etc/config/apache/server-ca.crt"
#SSLCACertificatePath "/etc/config/apache/ssl.crt"
#SSLCACertificateFile "/etc/config/apache/ssl.crt/ca-bundle.crt"
#SSLCARevocationPath "/etc/config/apache/ssl.crl"
#SSLCARevocationFile "/etc/config/apache/ssl.crl/ca-bundle.crl"

必要なファイルを
/etc/config/apache/ 以下に設置します

必要なファイルは以下の3つです。
ALPAH SSLとか安くてオススメです。
(Let's Encriptでもいいけど3か月ごとに更新するのがちょっとリスキー)

  • 秘密鍵ファイル SSLCertificateKeyFile /etc/config/apache/server.key
  • 中間CA証明書ファイル SSLCertificateChainFile /etc/config/apache/server-ca.crt"

apache-ssl.confのSSLの設定を以下のように修正

#SSLCertificateFile "/etc/stunnel/stunnel.pem"
SSLCertificateFile "/etc/config/apache/web.crt"                                             
SSLCertificateKeyFile "/etc/config/apache/server.key"                                        
SSLCertificateChainFile "/etc/config/apache/server-ca.crt"                                   
#SSLCACertificatePath "/etc/config/apache/ssl.crt"
#SSLCACertificateFile "/etc/config/apache/ssl.crt/ca-bundle.crt"
#SSLCARevocationPath "/etc/config/apache/ssl.crl"
#SSLCARevocationFile "/etc/config/apache/ssl.crl/ca-bundle.crl"

httpd-ssl-vhosts-user.confも同じようにSSLの設定を以下のように追加

既存の
SSLCertificateFile "/etc/stunnel/stunnel.pem"は消しちゃいます

SSLCertificateFile "/etc/config/apache/web.crt"                                             
SSLCertificateKeyFile "/etc/config/apache/server.key"                                        
SSLCertificateChainFile "/etc/config/apache/server-ca.crt"                                   

そろそろ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をなんとなく使ってたのですが

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

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

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


ではまた