Posts

Showing posts with the label 初心者向け

ゴールデンウィークにTwitchでゲーム配信を始めた話|古いMacBook Pro・PS4・OBSで配信環境を作ってみた

Image
古いMacBook ProでもTwitch配信はできる?PS4・Switch2用にOBS配信環境を作ってみた ゴールデンウィークで時間があったので、以前から少し興味があったTwitchでのゲーム配信を始めてみました。 アカウントは うえはら000 。 主にストリートファイター6や、趣味で遊んでいるゲームを配信しながら、だらだら話すようなスタイルで配信しています。 この記事では、実際にTwitch配信を始めるまでに用意した機材、古いMacBook Proで配信してみた感想、配信を始めて分かったことをまとめます。 これから「家庭用ゲーム機で配信を始めてみたい」「古いMacでも配信できるのか知りたい」という人の参考になれば嬉しいです。 配信を始めたきっかけ もともと格闘ゲームは好きで、ストリートファイター4シリーズをそれなりに遊んでいました。 スーパーストリートファイターIV AE Ver.2012の頃は、家庭用でやり込みつつ、休みの日に新宿のタイトーステーションにも遊びに行っていました。 当時は、AE時代と比べて大幅に弱体化された後のユンを使っていて、一瞬だけグランドマスターに到達したことがあります。 とはいえ、グランドマスターだった期間は本当に一瞬で、実際にはマスター上位からグランドマスターに届くか届かないかくらいの位置にいることが多かったです。 ちなみに、強かった頃のユンはほとんど触っていません。スパ4AEの頃はまだライトゲーマーで、フェイロンを使っていました。 その後、Ver.2012でユン・ヤンが大きく弱体化されたのですが、対戦しているうちに「弱くなったとはいえ、まだかなり強くないか?」と思うようになり、試しに使い始めました。 使ってみると思った以上に自分に合っていたので、そのまま使い続けて、最終的にグランドマスターに届くところまでやり込みました。 その後、ウルトラストリートファイターIVが発表され、ユンに有利なシステム(赤セビ)やキャラ自体の強化も追加されました。ユンは再び強キャラの一角に戻ったのですが、当時は大学受験の時期と重なってしまい、ほとんどプレイできませんでした。 受験が終わった後も、大学生活や社会人生活がそれなりに忙しく、気づけばストリートファイターからはかなり離れていました。 他のゲームはちょくちょく遊んでいたものの、ストリートファイターを本格的...

JavaでStringを生成する時はnew生成をやめようね!!という話。

Image
JavaでStringを生成する時はnew生成をやめようね!!という話。 なぜ書くのか 調査でどういう結論に至ったのか JavaでStringを生成する時はnew生成をやめようね!!という話。 String s = new String ( "0123456789" ) ; という書き方の話。 なぜ書くのか String a1 = "Hoge" ; String型を宣言するときにこういう書き方をしていたが、最初のnewする書き方と何が違うのか気になったので調べてみると違うものとして扱われてたのでメモ。 調査でどういう結論に至ったのか String s = new String ( "0123456789" ) ; という書き方は通常のオブジェクト同様にヒープ領域にインスタンスを作成する。 対して、 String a1 = "Hoge" ; String a2 = "Hoge" ; この書き方は定数として定数プールに保存される。 あえてnew Stringを使う明確な理由がない限り、Stringを変数に設定する場合は、 String str = "Hoge" ; というようにリテラルを直接指定し、 new String は使わないのがセオリーとなる。 そうすればStringオブジェクトを必要最低限で済ませることができ、メモリにもまたパフォーマンス的にもよい結果となる、らしい。 ちなみに文字列を作成した場合、JVMはまず最初に定数プールを見に行き、もし定数プールに同様の文字列が存在する場合には同じ参照を与える。 String型が不変の理由もここら辺にありそう。 それはまた別の記事で調べたいときに書きます。 今回は以上。

SwiftUIのViewModifierについて

Image
初心者向け 開発者定義のViewModifier 初心者向け の記事。 SwiftUIではViewでUIの要素を指定し、ViewModifierで要素のレイアウトを整えていく。 その書き方はそれぞれの要素に対して // // ContentView.swift // Modifier // // Created by kuehar on 2021/07/01. // import SwiftUI struct ContentView : View { var body : some View { Text ( "Hello, world!" ) . padding ( ) } } struct ContentView_Previews : PreviewProvider { static var previews : some View { ContentView ( ) } } プロジェクトを作ったときはこういう形式でコードが生成されるが、このコードの中の .padding() が実際のViewModifer。 Previewで見てみると最初はこんな感じだが、 例えば .padding(bottom) に変えてみると、 少しだけ Hello, World! が上に動いている。非常に分かりづらいが。 こういった形で各要素を修飾することによって要素の内容を変えていく。 開発者定義のViewModifier 同時に、開発者側で定義する再利用可能なViewModifierを作成できる。 開発者でどのビューにも適用できる再利用可能なViewModifierを作成したい場合に用いるもので、いくつかのViewModifierを組み合わせて新しいViewModifierを作成することができる、というもの。 例えば Apple公式のViewModifier のドキュメントでは以下のようなViewModifierを定義し、使用しています。 // // ContentView.swift // Modifier // // Created b...