ゴールデンウィークに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が発表され、ユンに有利なシステム(赤セビ)やキャラ自体の強化も追加されました。ユンは再び強キャラの一角に戻ったのですが、当時は大学受験の時期と重なってしまい、ほとんどプレイできませんでした。 受験が終わった後も、大学生活や社会人生活がそれなりに忙しく、気づけばストリートファイターからはかなり離れていました。 他のゲームはちょくちょく遊んでいたものの、ストリートファイターを本格的...

ゼロから始めるLeetCode Day65「560. Subarray Sum Equals K

概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

Leetcode

Python3で解いています。

ゼロから始めるLeetCode 目次

前回
ゼロから始めるLeetCode Day64「287. Find the Duplicate Number」

次回
ゼロから始めるLeetCode Day66「438. Find All Anagrams in a String」

Twitterやってます。

問題

560. Subarray Sum Equals K
難易度はMedium。
Top 100 Liked Questionsからの抜粋です。

整数の配列と整数 k が与えられたとき,和が k に等しい連続部分配列の総数を求めよ、という問題です。

Example 1:
Input:nums = [1,1,1], k = 2
Output: 2

Constraints:

The length of the array is in range [1, 20,000].
The range of numbers in the array is [-1000, 1000] and the range of the integer k is [-1e7, 1e7].

解法

import collections

class Solution:
    def subarraySum(self, nums: List[int], k: int) -> int:
        dic = defaultdict(int)
        dic[0] = 1
        count = calc = 0
        for n in nums:
            calc += n
            dic[calc],count = dic[calc] + 1,count + dic[calc-k],
        return count
# Runtime: 144 ms, faster than 44.41% of Python3 online submissions for Subarray Sum Equals K.
# Memory Usage: 17.9 MB, less than 10.96% of Python3 online submissions for Subarray Sum Equals K.

defaultdictを使って書きました。

制約についてはそこまで意識せず、ひとまず解くにはどうやったら良いかを考えました。
calcで累積和を保持し、辞書を使ってkeyの部分で値を保持し、valueの部分で連続で同値が出現した回数を保存し、そして和に遭遇した回数も差し引いたものdic[calc-k]で保持することにより、countに要求に沿った値が加算されていく、というものです。

ヒントをSolutionからもらって書きましたがすごくしっくりきますね。

そういえば専門的なアルゴリズムの講義を受けたことがないのですが、思えば他の人がどうやってアルゴリズムを書いているのかをよく知らないんですよね。

僕の考え方は

一旦プログラミングのことを考えずにどうやって書くかをぼんやり考える
↓
良さそうな考え方がつかめたら適当に紙とかに書いてちゃんと正しいフローになっているかを考える
↓
Pythonでそのフローを実現するために良さげなライブラリや組み込み関数があるか調べて書く
↓
完成

という流れです。
上手くいかない場合はフローを見直して手直ししたりざっくり新しいパターンを書いたり、といった風にしていて、僕の課題はフローを考えるところにあるのかなぁと思ったりしています。(もちろん典型的なアルゴリズムやデータ構造に関してもまだまだ勉強不足ですが)
高校生の時に真剣に受験数学というものに取り組んでこなかったですし、整数や確率、場合の数などについて聞かれると面食らう場合が多いんですよね。

割とそこについての課題を克服するために数学の問題をコツコツ解いたりしているのですが、やはりやりたいことがあってその過程で学ぶ数学はやってて楽しいものがありますね。
学生時代は数学で何かをやりたいと思っていなかったので、新鮮な気持ちで取り組めています。

では今回はここまで、お疲れ様でした。

Comments