SHOYAN BLOG

I am a pragmatic programmer.

手軽にスプラトゥーンをYouTubeで配信する

私はYouTubeやOPENREC.tvでよくスプラトゥーンの配信を視聴しているのですが、みているだけでなく自分もやってみたいと思ったのでYouTubeで配信をはじめてみました。この記事では、YouTubeでゲーム動画を配信する方法を紹介します。

配信の手順

配信の手順としては次の通りです。

  1. キャプチャボードを使ってゲームの動画と音声を外付けの記録媒体に保存
  2. 記録媒体に保存した動画をPCの編集ソフトを使って編集する(アフレコをしたり、不要な部分をカットしたり、音量の調整をする)
  3. 編集した動画をYouTubeにアップロードする

配信に必要な機材

  • キャプチャボード
    • ゲームの動画と音声をキャプチャするのに必要です
  • 記録媒体
    • USBメモリや外付けHDDなど。PCに保存する場合は不要です
  • PC
    • 動画の編集に必要です。私はMacBook Air(メモリは4GB)を使っています
  • マイク
    • 実況を録音するためのマイクです

キャプチャボードを用意する

ゲームの動画と音声を録画するにはキャプチャボードが必要です。キャプチャボードには様々な種類があり、どれを使ったらいいのかよくわからなくなると思います(私がそうでした)。私のおすすめのキャプチャボードはI-O DATA HDMI キャプチャーボード GV-HDRECです。

このキャプチャボードは1万円程度と手頃な値段で操作方法も簡単です。最初の1台としておすすめできます。ただし、PCとの接続はできないので、リアルタイム配信には使えません。

記録媒体を用意する

私は32GBのUSBメモリを使っています。スマートフォンに接続できるタイプがおすすめです。録画した動画をスマートフォンで観たり、不要な動画を削除したりできます。

32GBで2時間程度の録画ができます(記録形式によって時間は変わります)。32GBだとこまめにデータを消す必要があるので、もう少し大きな容量がよいかもしれません。

動画の編集

画像の編集はiMovieを使っています。簡単な編集であればiMovieで十分です。YouTubeへのアップロード機能もついており、この機能を使ってYouTubeにアップロードしています。iMovieの操作方法についてはドキュメントをご覧ください。

アフレコに使うマイクはアップルの純正イヤホンのマイクを使ってます。

おわりに

このような感じで、特に難しいことをせずに動画配信ができてしまいます。今後もスプラトゥーンの動画を配信していくので、ぜひチャンネル登録お願いします!

シェルスクリプトで別プロセスの終了ステータスを取得する

シェルスクリプトで別プロセスの終了ステータスを取得するTipを紹介します。

ユースケース

時間のかかる処理などを並列で行い、その実行結果(終了ステータス)を取得したい。

サンプルコード

Bashのサンプルコードです。スクリプトに解説を記入しています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/bash

command1() {
  echo "executing commnad1"
  sleep 3
}

command2() {
  echo "executing commnad2"
  sleep 3
  # エラーとして終了させる
  exit 1
}

echo "start"

# バックグラウンドで実行
command1 &
# $!で直前に実行されたコマンドのプロセスIDを取得し、変数に保存している
pid1=$!

command2 &
pid2=$!

# waitは指定されたプロセスIDの処理が終わるまで待つ
wait $pid1

# $?でwaitで指定しているプロセスの終了ステータスを取得することができる
if [ $? != 0 ]; then
  echo "command1 error"
else
  echo "commnad1 success"
fi

wait $pid2
if [ $? != 0 ]; then
  echo "command2 error"
else
  echo "command2 success"
fi

echo "end"

gistにもコードをアップしています。

RubyでのWebアプリケーション開発はSinatraから入りRailsに行く

私はソフトウェアエンジニアなのですが、プログラミング講師としても生徒さんにRubyを教えています。RubyでWebアプリケーションを作る場合、まず候補になるフレームワークはRuby on Railsですが、Railsは初学者には難しいと思います。プログラミング初学者にRailsを教えるということは、車の教習所でいきなりスポーツカーを運転させるようなものです。入門者には入門者に適した車があるのと同様にプログラミングにもそのようなものがあります。

では、最初は何がいいかというと、Sinatraがよいと思います。そういうわけで、Sinatraを使ったWebアプリケーションのサンプルを探してみたのですが、よいものが見つかりませんでした。ないなら作ってしまえというわけで作りました。

今回作成したのはシンプルなメモアプリケーションでフォームに入力した値をメモとして保存することができます。作成したメモの一覧表示、詳細表示、編集機能、削除機能を実装しています。基本的なCRUD操作を備えており、RESTについても学ぶことができるようになっています。

わかりやすいようにディレクトリをわけています。initialディレクトリは最初からフルスクラッチで作る場合のディレクトリです。step1はメモの作成とメモの表示機能を実装しています。step2はstep1の機能にメモの削除とメモの編集機能を追加しています。

実装にあたっては、できるだけRubyの標準ライブラリを使うようにしました。理由は長い年月において最も安定的に使えるのはRubyの標準ライブラリであることからです。サードパーティのライブラリは便利ですが、Rubyのバージョンアップによる互換性の問題などを含んでいます。将来的にも安定して動作させることを考慮すると標準ライブラリで実現できる機能であれば標準ライブラリを選択するのは良い選択肢だと思います。

また、データベース(正確にはRDBMS)はややこしいので使っていません。もう少し丁寧に説明すると、今回のアプリケーションはプログラミング初学者の学習に適しているアプリケーションをシンプルな実装(環境も含めて)で作るということを目的として作ったので、その点でRDBMSは適していません。では、どうやってメモを永続的に保持するのかというと、ファイルとして保持しています。この機能の実装には、Rubyの標準ライブラリであるpstoreを利用しました。pstoreとはオブジェクトをそのままファイルとして保存するライブラリです。メモアプリケーションの機能を実現するなら、これで十分なわけです。

Webアプリケーションはリクエストとパラメーター(必要であれば)をアプリケーションサーバーに送信し、ルーティング設定に従ってそのリクエストを処理します。そして、レスポンスを返します。この流れを理解することがはじめの1歩です。この流れが理解できていない状態でRailsを使うのは早すぎるように思いますし、データベースの用意やらマイグレーションやらは確実に最初の壁となってプログラミング初学者に立ちはだかるでしょう。

そのようなややこしいことは置いておいて、まずは小さな動くアプリケーションを作りましょう。Sinatraであればターミナルに数コマンドを打つだけでアプリケーションを起動できます。自分で全てのコードを書いても数時間程度で書くことができます。コードのほとんどは標準のRubyのライブラリを使用しているため、とてもシンプルです。

ここまではRailsについて散々けなしていますが、誤解のないように断っておくと、本格的なWebアプリケーションを作るのであればRailsがいいです。習得に数ヶ月はかかるでしょうが、多くの機能を少ないコードで実装できてしまうRailsの生産性の高さは、それだけの時間をかける価値があります。しかし、プログラミング初学者がいきなりRailsから入るのは難しいのではと思います。RubyでのWebアプリケーション開発は、まずはSinatraから入りそこからRailsに行くのがよいというのが私の考えです。

好きなことをひたすら追いかければよい

この記事は前回の続きです。前回の記事は「計画はいらない」です。

「好きなことをひたすら追いかければよい」理由は、そのほうがうまくいく可能性が高いからです。

世の中には好きなことを極めることで、それが結果的に仕事になっている人がいます。例えばYoutuberのHIKAKINさんはその1人です。HIKAKINさんはヒューマンビートボックスを極め、それを自身の動画投稿に取り入れることにより一躍人気者になりました。

人気が出たのは誰もそのようなことをやっておらず、新鮮だったということがあると思います。ヒューマンビートボックスにハマり、動画投稿にハマり、自身の面白いを追求した結果、トップYoutuberになることができたのです。

このように世の中にないものには、計画を立ててそれを遂行するというやり方では到底到達できません。道はただ1つ。ハマってハマって追求するということです。

自身の面白いはとてつもなく大きな可能性を秘めています。今は何も可能性がないように思えるかもしれません。しかし、その面白いにハマり追求することで当初は見えなかった道が見えてくるはずです。

これは山登りに似ています。山の麓からは山しか見えません。山を登っていくうちにどんどん視界が開けて行きます。上から見ると、今まで見えなかった道が見えることでしょう。遠いと思っていた頂上も実際に歩いてみると、案外登頂できるものです。

実際にやってみると想像していたものと違うということもあることでしょう。その場合はさっとさとやめればいいのです。思い立ったらすぐやって、さっさと飽きて次に行く。飽きるということにネガティブなイメージを抱く人もいるでしょうが、飽きるということは経験し、そこからなにかしら学んだということです。どんどん飽きて、次の新しい経験を積めばよいのです。そのほうがたくさん学ぶことができます。飽きた数こそがあなたが成長した証です。

このように計画を立てずに面白そうなことはどんどんやる。飽きたらまた別の面白いことをやる。そうやって経験を積み、学んでいくことで、結果的にその経験が組み合わさって面白いことができるようになると思うのです。

計画はいらない

2018年もあと3ヶ月で終わろうとしています。少し早いですが、2018年を振り返ってみると、良いことも良くないことも含めて様々なことがありました。結果的に近年で最も濃い1年になりました。

私自身は今年を特別な1年にしようなどとは微塵も考えていませんでした。また、何かを達成しようと詳細な計画をたてたりもしていません。しかし、結果的には今まで経験したことのないことをいくつか経験することができました。

ここで言いたいことは「計画していないけどうまくいった」ということです。

私はこのような経験を積むにつれて、計画を立てるのはあまり意味のないことなのではないか、と考えるようになりました。明確な計画を立て地道に進むというのは一見素晴らしいように思えます。しかし、実際は計画通りにいかないことがほとんどです。もし計画通りにいけば、みんな子供の頃に夢見たスポーツ選手や芸能人になっていることでしょう。

私たちは経験則で人生とは計画通りにいかないことを知っています。しかし、計画を立てようとしがちです。そして、年の暮れには「計画が達成できなかった。自分は無能な人間だ」と自分を蔑みます。そんなことに何の価値があるのでしょうか。ほとんどが失敗する計画をなぜ立てるのでしょうか。

いい加減、そのようなことはやめたほうがいいのではないかと思うわけです。私は「好きなことをひたすら追いかければよい」と思います。

理由についてはまた書いていきたいと思います。

» 好きなことをひたすら追いかければよい