【レビュー】東京マルイ ステアーHC レビュー

過去記事で何度か触れていましたが、改めてステアーHC単体でレビューしていきます。

wrongwrong163377.hatenablog.com
wrongwrong163377.hatenablog.com
wrongwrong163377.hatenablog.com

記事内で提示するデータに関する注釈は以下の通りです

  • マルイ純正ミニSバッテリーを使うものと仮定し、その重量は181gとして計算する
  • 参照させていただいたデータについて、出典は記事末尾にまとめる

他銃との比較

結論から言うと、実用性だけ考えてハイサイクルカスタムを買うならH&K MP5A5 HCをオススメします。
理由は、素の状態で弾速・マガジン装弾数・重量のバランスが一番良く、実用面でも不便が少ないからです。

以下、スペック面と実用面の両面から、H&K MP5A5 HCとの比較を通してレビューしていきます。

スペック面

まずはステアーHCとH&K MP5A5 HCをスペック面から比較します。
両者の主だったスペックは以下のとおりです、ただしH&K MP5A5 HCはストックを何段階かで調整できます。

ステアーHC H&K MP5A5 HC
平均弾速(m/s) 85.13 81.88
装弾数 330 400
弾以外の重量(g) 2,861 1,800
全長(mm) 610 660(ストックの最大展開時)

こうして見ると分かる通り、ステアーHCは弾速以外のスペックで劣ってしまっています。
また、その弾速についても誤差レベルと言って良いでしょう。

実用面

実用面では、以下3点で比較を行います。

  • 装弾数
  • 重量
  • AIMしやすさ
装弾数

装弾数に関してはプレイスタイル・フィールドによって活きたり活きなかったりしますが、沢山撃つフィールドでは両者の70発の差は結構大きいです。
また、弾をあまり撃たないフィールドでも、補給の手間が減るのは楽です。

重量

重量に関しても、ステアーHCが重いというわけではありませんが、やはりH&K MP5A5 HCの方が軽いです。
場合によっては丸一日エアガンを持って走り回ることになる訳で、1Kgの差は大きいです。

AIMしやすさ

ここが一番大きな差です。
ステアーHCはマスクをした状態だとAIMしにくいです。

この点について、マック堺さんの動画(比較対象がH&K G3 SAS HCに変わりますが、結論は変わらないのでこちらを使わせて頂きます)からキャプチャして解説します。
www.youtube.com

画像は17秒付近(左)と23秒付近(右)です。見て分かる通り、ステアーHCの方がより多くの頬肉が乗っています。

f:id:wrongwrongwrongwrong163377:20190808224906p:plainf:id:wrongwrongwrongwrong163377:20190808224829p:plain

普通の状態で覗くのであればこれでもAIMに十分かもしれませんが、硬いマスクをして覗こうと思うと大分無理やり覗かなければなりません。
ドットサイトを使うのであれば、マウントベースで嵩上げすることで多少マシになりますが、銃身とスコープが離れることを考えるとやはり狙いやすいのはH&K MP5A5 HCの方だと思います。

本体に関して

ここからは単体でのレビューです。

他の方のレビューでも見かけましたが、ステアーHCはVグリップの付いているあたりがガタつきます。
また、まだ2戦しか使えていませんが、アッパーのレール部分も若干歪んでいました。
以上の通り、剛性には若干難が有るのかなと思います。

まだ特に問題が出たわけではありませんが、若干不安感は有ります。

まとめ

「ステアーHCを買うメリット有るの?」と聞かれると、「正直他のやつ買ったほうがいいよ」と言うと思います。

とは言えスタイルの独特さ(特に他人と銃がかぶる確率は低そう)は魅力的なので、「どうしてもこれがいい!」という人にはかなりオススメできます(本音を言うとHCならFA-MASが欲しかったマン)。
ボロクソ書いた自覚は有りますが、自分はこの銃を結構気に入っていますし、フィールドでも割とまともに戦っていける程度には使えています。

まとめるとロマン銃ということですね(アレ、結局擁護できてない感が)。

【自作PC】購入用メモ【順次更新】

組む時期

増税直前ということで9月頃を予定しています。

メインパーツ

個人的な優先度順で書きます。

ケース

まだ決めきっていませんが、A4-SFXを選ぼうと思っています。
理由は、今回の自作で求めるのが最もコンパクトなケースであることだからです。

kakaku.com

個人的にはSilver StoneのSG-13の後継とかを何年も期待してるんですが、残念ながらそのような製品は話題にすら上がらず……。

一応その他候補ケースはこちらにまとめてあります。 wrongwrong163377.hatenablog.com

CPUクーラー

CPUクーラーはCryorig C7Gにするつもりです。
小型ながら圧倒的な冷却力、メモリに制限が無いロープロファイルヒートシンクならこれが一番優秀だと思ってます。
未発売で組みたい時期に間に合ってくれるかが不明なことと、CPUを冷やしきれるかが問題……。

まだ内容が入っていませんが、一応公式サイトも既に有るみたいですね。

www.cryorig.com

A4-SFXにはほぼ専用な簡易水冷クーラーも有るんですが、個人的に簡易水冷はもう飽きたので今度は空冷にするつもりです。

CPU

Ryzen 9も考えましたが、スペックを大きく求める場面がゲーム用途かつ流石にそこまでパワーは必要無いだろうということでRyzen 7 3800Xにしようと思います。
今使っているのがIntel Core i7 6700なので、それにしたってものすごいパワーアップなんですが。
ただ、仮にC7Gで3800Xが冷やしきれないということであれば、その時は3700Xまで落とすかもしれません……。

kakaku.com

メモリ

G.Skill Trident Z Neoシリーズから選ぶつもりです。
本音を言うとDDR4 3600 C14とかいう超スペックなやつを選びたいんですが、16 x 2キットは今の所発表されてないみたいなんで、16 x 2キット中一番良スペックなものを選ぶつもりです。

blog.livedoor.jp

グラフィックボード

まだ出ていないですが、CPUに合わせてRadeon 5000シリーズの上位機種を考えています。
ただ、まだまだ情報が出揃っていないことも有るので、もしかするとRTX 2080Tiとかにせざるを得ないかもしれませんね。
Radeon 5000シリーズはPCIe 4.0に対応しているものの、現状のGPUの性能ではPCIe帯域がボトルネックになることは少なかったはずなので、実際はそこまで重視しなくてもいいのかなとは思っています。

ただ、2スロット高性能グラボって今本当に少ないんですね……。
見た感じINNO3DGEFORCE RTX 2080 TI GAMING OC X3が一番良さそうな位で、「マザボも作ってるメーカーのものは大概2スロ = そこまで冷却力有るモデル無し」になってしまっているのが残念です。
自分が自作に触れた頃はGigabyteが2スロ3連ファンって印象が強かったんですが、、、。

マザーボード

グラフィックボードに合わせて選ぶか、合わせてもいいことが無さそうなら良さげなのをそのまま選ぶつもりです。
なのでGPUを決めるまで保留します。

一応ASUSのROG Crosshair VIII Impactが気になってはいるんですが、A4-SFXだとサイズ的に積めないだろうなあという辛さが……。

www.asus.com

電源

小型ケースなこともあり、SF750 Platinumが安定かなと思います。

kakaku.com www.tomshardware.com

SSD

使い回しで960 PRO M.2 MZ-V6P1T0B/ITです。

kakaku.com

その他パーツ

オプショナルなパーツ類です。

ケースファン

A4-SFXでは底部に92ミリ角ファンを積めるので、厚い方はNF-B9 redux-1600を入れようかなと思っています。
正直これを選ぶ理由もそこまで無いんですが、Noctua製だし色も悪くないと来ればこれが安定かな、と。

薄い方は何を入れようかな……。

kakaku.com

CPUクーラーファン

C7Gを光らせる用です。
A4-SFXで光らせる必要性は薄いと思っていますが、光がいい感じに抜けるようであれば積んでもいいかなと思っています。

www.links.co.jp

【SpringBoot】内部エラー周りの話

内部エラー周りの設計について自分の経験から得た知見をまとめます(なのでセオリーとかアンチパターンとか有れば教えていただけるとありがたいです)。
内部エラーとは基本的に自分で書いてThrowするようなエラーを想定しています。

エラーハンドリングに関してはサンプル記事が溢れているので省略します。

例外クラスの作り方

サーバーとフロント側で「エラー内容/HTTPステータスコードによって大体の挙動を統一する」ことができるため、基本的に返却するHTTPステータスコードに合わせて例外クラスを作ればよいと思います。
内部エラーコードを設定することも考えられますが、アプリケーション規模が小さいうちはそこまでしなくてもHTTPステータスコードに合わせておけば大体の場合に対応できるので、個人的にはYAGNIかなと思っています。

自分のやっているプロジェクトでは以下のような例外クラスを設定していました(抜粋です)。

ステータスコード 例外クラス名 エラー内容 フロントでの対応
400 InvalidFormException フォームの入力エラー 項目ごとにエラー表示
409 ResourceConflictException リソース更新のコンフリクト データの再取得を促すアラートを表示
500 ${プロジェクト名}Exception その他内部的なエラー エラーページの表示

継承元に関してはExceptionではなくRuntimeException系のものを設定した方が後々楽だと思います(ラムダ式内で内部エラーを投げる時に困る場合などが有るため)。

その他Tips的な内容

スタックトレースのフィルタリング

全て1つのプロジェクトで完結している場合、内部エラーは発生箇所がパッケージ内に有ることが確実になるため、それ以外のスタックトレースは基本的に不要となります。
そこで自分はフィルタリング関数を用意して宣言時にスタックトレースを設定し直していました。

フィルタリング関数

static StackTraceElement[] filteringStackTrace(StackTraceElement[] elements) {
    return Arrays.stream(elements)
            .filter(it -> it.getClassName().startsWith("${プロジェクトルートのパッケージ名の文字列}"))
            .toArray(StackTraceElement[]::new);
}

使い方

public class ResourceConflictException extends RuntimeException {
    public ResourceConflictException(String msg) {
        super(msg);

        // スタックトレースはフィルタリングして設定
        setStackTrace(FilteringStackTrace.filteringStackTrace(getStackTrace()));
    }
}

例外処理の結果でJSONを返す場合にJSON以外を返すControllerでproducesを設定してはならない

producesで指定したのと違う内容を返却しようとすることになるため、HttpMediaTypeNotAcceptableExceptioとしてエラーになります。
具体的には以下の記事にまとめてあります。

【Maven】OWASP Dependency CheckでsuppressionFileを指定した際に「要素'suppressions'の宣言が見つかりません。」とエラーになる問題への対処

問題

以下のようにSuppressionFileとpomを用意して抑制設定を行いました。

<?xml version="1.0" encoding="UTF-8"?>
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
  <!-- 省略 -->
</suppressions>
<!-- 省略 -->

<plugin>
    <groupId>org.owasp</groupId>
    <artifactId>dependency-check-maven</artifactId>
    <version>5.0.0</version>
    <configuration>
        <failBuildOnCVSS>8</failBuildOnCVSS>
        <suppressionFiles>
            <suppressionFile>owasp-dependency-check-suppressions.xml</suppressionFile>
        </suppressionFiles>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>

<!-- 省略 -->

すると以下のようなエラーになりました。

  • エラー内容(抜粋)
[WARNING] Unable to parse suppression xml file 'owasp-dependency-check-suppressions.xml'
[WARNING] org.owasp.dependencycheck.xml.suppression.SuppressionParseException: org.xml.sax.SAXException: Line=2, Column=99: cvc-elt.1.a: 要素'suppressions'の宣言が見つかりません。
[ERROR] Exception occurred initializing Vulnerability Suppression Analyzer.

対処

xmlnsに指定しているdependency-suppressionのバージョンを1.2に落とせば通りました。
原因は一旦調べていません。

<?xml version="1.0" encoding="UTF-8"?>
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.2.xsd">
  <!-- 省略 -->
</suppressions>

【Vue.js】オブジェクトの内容を変更しているのにcomputedが変化しない状況への対処

状況

dataに用意したオブジェクトの内容を変更しているのにcomputedが変化しなくて困っていました。

対処

前提

dataに宣言する時点でプロパティを宣言しておけばVueが更新を追ってくれるので、基本はプロパティを宣言しておいた方がいいらしいです。

// ダメなやり方
data() {
  return {
    hogeObject: {}
  }
}

// いいやり方
data() {
  return {
    hogeObject: {
      fugaKey: null
    }
  }
}

今回の場合

初めからプロパティを宣言できない場合、$setを使うとできます。

// 改善前
this.hogeObject[fugaKey] = piyoValue

// 改善後
this.$set(this.hogeObject, fugaKey, piyoValue)

参考にさせていただいたサイト

【自作PC】全高47mm以上66mm以下でTDP100W以上のトップフローロープロファイルCPUクーラー比較

自作用の調査まとめです(なので完璧な網羅性は期待しないでください、、、久々の自作で練度が落ちてるのです。。。)。
単位はmmまたはWに統一しています。

CPUクーラーの性能はメーカー発表のものなので必ずしも正確に比較できるとは限りません。正確性を求めるなら個々のクーラーの比較レビューを地道に漁っていくしか無いと思います。
というかファン変更とか考えるとCPUクーラーの性能って本当に変動しちゃうので比較は難しいです。
日本で手に入らなかったり現状手に入らなかったりするものも載せてるかもしれません。

選抜基準はCryorig C7(47mm)以上、66mm(GHOST S1 MkIIに搭載可能な最大サイズ)以下です。また、同一シリーズで性能が低いものは基本載せていません。

名前 高さ ファン厚 TDP 備考
C7 Cu 47 15 115
C7G 47 15 125 92mm or 120mm径の25mm厚ファンに付け替え可
AXP-100 Full Copper 62 14 180 寸法的にヒートシンク付きメモリはほぼ装着不可
Black Ridge 47 0 95 下にファンを付けるタイプ
上に140mmファンを盛れるので掲載
最大メモリ高33mm
Gabriel 60 20 100
SHADOW ROCK LP 75 25 130 15mmファンなら66mmを切るため掲載
NH-L9x65 65 14 TDPは100程度?
NH-L9x65 SE-AM4 65 14 AM4ソケット向け
SLIMHERO 59 15.8 136

感想

TDPで比較しようと思うとやっぱり厳しいんだなと再確認しました(方々のレビューを見ると多分入れ替わってそうなのがチラホラ……)。
メモリ制約無しで一番期待できそうなのはC7Gですかねーやっぱ。とりあえずC7Gの性能に期待してます。

参考にさせて頂いたサイト

【自作PC】容積12L未満でフルサイズGPUが積める小型PCケース比較 2019【Mini-ITX】

自作用の調査まとめです(なので完璧な網羅性は期待しないでください、、、久々の自作で練度が落ちてるのです。。。)。
単位はmmまたはLに統一しています。
日本で手に入らなかったり現状手に入らなかったりするものも載せてるかもしれません。
選抜基準はフルサイズGPUが載ることと容量が12L未満であることです。

名前 W H D CPUクーラー高 GPU L GPU H カードスロット 容積 備考
Velka 5 109 303 174 48 296 142 2 5.7 縦置き
SFX電源推奨?
A4 SFX V4 112 200 317 48 295 144 2 7.2 積める中ではC7Gが一番冷えると思われる
SM550 139 208 335 55 300 133 2 9.7 GPU高はケーブルレイアウトによって157mmまで伸びる
ウィンドウ選択可
SM560 159 208 335 55 305 133 3 11
GHOST S1 MkII 140 188 322 66 305 ? 2 8.1 高さ132mm位のGPUは乗る
ウィンドウ選択可
GHOST S1 MkII Small Hat 140 204 322 66 305 ? 2 9.2 上に薄型ファンを積める
GHOST S1 MkII Medium Hat 140 214 322 66 305 ? 2 9.6 上に25mmファンを積める
GHOST S1 MkII Large Hat 140 245 322 66 305 ? 2 11.0 上に240mmラジェーターを積める
A50 140 210 330 66 300 134 2.5 9.7 アクリルサイドパネル
SG13 222 181 285 71 266 129 2 11.5 140mmラジェーターを積める
CPUクーラー高はSFX電源かつアダプダ前提で10mm盛った

感想

どれもCPUの冷却やばそう(小並感)。

CPUの水冷をやるつもりは無いのでクーラー選ぶのが結構きっついですね。 一応最低サイズでもCryorig C7Gが(発売されれば)積めるので、定格ならRyzen 9 3950X(TDP105W)も積めなくはないんですが、エアフローの悪さを考えればもう少し大きいクーラーを積みたい感も有ります。

個人的に驚きだったのが、Ncase M1の体積が12.6Lで載せられなかったことです。

参考にさせて頂いたサイト