ばかおもちゃ本店:Youtube twitter:@sashimizakana Amazon.co.jpアソシエイト

2017年9月27日水曜日

ゲーム実況と録音機材

子供のために勢い余ってゲーム実況を投稿し始めてから、じきに二週間。一日も休まず動画を投稿し続けている。というか真面目にやればもちろん大変なことはあるのだろうけど、自分くらいに力を抜いている限りゲーム実況撮るの非常に簡単である。もともとゲームなんてほぼ毎日やるので、それを撮影して適当なこと喋ってるだけだ。
もちろん何かやるのであれば、より良くなっていきたいというのが私の願いであり、楽しみであるので、ちょびちょびではあるが録音環境や動画作りを工夫し始めている。
コンセプトはゆるく、とにかくめちゃめちゃ楽に、である。

最初にどうにかしなければと思ったのがゲームの録音環境で、それまでAmazonで買ったどこのものか知れないコンデンサマイクをbehringerのミキサーに挿して使っていたが、これはゲインを上げるとホワイトノイズがひどかった。大河のほとり、みたいな音がしていた。テレビの砂嵐放送中であった。
ノイズを乗せないためにごく小さな音で、それなりに声を張って、動画撮影後にAudacityでノイズ除去をして音量を上げていた。これがせいぜい十分程度のこととはいえ面倒くさい。動画を撮って、動画から音声だけ出力して、ノイズ除去して、音量を適正にして、動画に戻す、である。つらい。

ただオーディオに関して何の知識もないので、どこがまずいのかもよくわからず、まずはミキサーをYAMAHAのAG03にしてみた。これは格好いいしbehringerのミキサーよりわかりやすくてよかったし、ついでにつないでるモニター用のヘッドホンの音質がバキッと向上して低音が良い感じになったなどの利点は有ったが、ホワイトノイズはさほど軽減しなかった。



じゃあやっぱりマイクか、ということで割と廉価ながら評判の良いマランツプロのMPM-1000というマイクを買った。そしたら、バキッとホワイトノイズが止まった。もちろんかなりゲインを上げれば、なんとなく環境音のようなものは聞こえるが、それまでの「ドザーッ」という音から「ゴワー」みたいな納得いく感じの音になった。わかりにくいと思うけど、とにかくノイズ除去使わなくても問題ない程度の音になった。ゴワー。



そんなわけで、もはや動画撮って、頭と最後切るだけで出せるようになった。

それから動画のサムネイルも、それまでいちいち毎回手書きでタイトルを書いていたのだけど、外国のゲーム実況のサムネイルで、自キャラっぽいものを毎回ゲームごとにアレンジしてはめ込んで、パート数のみ書いてるやつを見つけて、マネすることにした。



それでこんな感じになった。画面の真ん中も見えるし、なんせ楽だしお気に入りである。
最初の方で作った奴が統一感がないので、ゆくゆくこっちによせて直したい。

実況そのものの喋り方が、もっとも大事なのだろうなと思いつつ難しい部分である。
子供が見ているので、自分も自分の実況をなんとなく見ることがあるが、モシャモシャ喋っていたり、早口すぎたり、説明が多すぎたり、おおよそ今までの人生で指摘されてきたあれこれを確認出来て、なるほどなぁという感じである。
それから、子供に喋るのだから、できれば優しく、かつできるだけ敬語などになりすぎず親身な感じで喋りたいと思っているのだけど、これが最も難しい。本当に子供が横に立っていれば別に意識せずにそのようになっているはずだが、一人きりでそれをやるのは全く慣れず、動画内で敬語なのかタメ口なのか分からない微妙な語尾になっている部分があるが、そんなところで右往左往しているときである。だって息子以外も見てる人居ないわけではないし、失礼すぎないか俺、とか葛藤が色々ある。
最近はやや開き直って丁寧語で喋っているが、子供に違和感があると思われてもヤなので、なんとか技術としての失礼にならない感じのタメ口みたいなものを習得していきたいなと思う。

それから、実際にやってみると思うが、もっと動画を見ている人に対して話しかけるような感じの方が良いのかなと思ったりもする。ゲームだけやっている自分が独り言を言い続けていると、なんとなく取り付く島がない感じがあり、そう思って見てみると実況が上手な人は、まるで見ているこちらがその部屋にいるみたいに親しげに話していたりして、こういうのも技術であるなあと感心することしきりである。

この辺は、なんとなく仕事のプレゼンとかにだって役に立ちそうなことではあるので、ちょっとずつ上手くなっていきたいなと思う。まあプレゼンとかしないけど。

目標としては、とりあえず50本くらい動画を上げてみようかと思う。上述のとおり、動画を撮るのは本当に楽なので、やろうと思えばどれだけだってやれそうだし、子供が飽きない限りは辞め時というものがないのだけど、ひとまず最初の目標としては50本上げる。それで喋るのがちょっとは上手になったかとか、何か別の楽しさがあったかとか、そういうことを考えていけばよいかと思う。

最後に。
ごく少数でも、いつも見てくれている人が居るみたいで、本当に励みになるなぁと思っている。これは普通の工作動画でもそうだけど、誰かはわからないし、声が聞こえてくるわけでもないのだけど、そこに誰かが確かに居る、ということがいつも自分の糧になっている。私は中学生の頃から、日記を書いたり、詩を書いたり、小説を書いたり、絵を描いたり、プログラムを書いたり、動画を作ったり、そのときどきで好きなことを20年近くWeb上に撒き散らしてきて、良いとき悪いとき色々あったけど、ずっと続けてきたのは、やらずにはいられないとかいう格好いいことじゃなく、誰かに褒めてもらえるからというほど積極的なことでもなく、静かに静かに、ただネットの向こうには自分の作品をなんとなく気に入って見てくれる誰かがきっと居るという希望からだと思う。
こんなに嬉しいことはない。



YAMAHA ウェブキャスティングミキサー 3チャンネル AG03
ヤマハ(YAMAHA) (2015-05-31)
売り上げランキング: 194


マランツプロ コンデンサーマイクロホン ウィンドスクリーン・スタンド・XLRケーブル付属 MPM-1000
マランツプロ (Marantz Professional) (2016-07-13)
売り上げランキング: 1,043

2017年9月15日金曜日

Cook, Serve, Delicious! 2!! が発売されたのでゲーム実況を始めた

食べ物ゲームが好きだ。ゲーム内に食べ物がモチーフになってるだけでも嬉しいけど、食べ物を作るゲームならもっと良い。いくつか好きなゲームはあるけど、中でもCook serve deliciousは今までの食べ物ゲーでも一番くらいに好きなゲームだ。
ゲームのUIなんかは俺の料理に強く影響を受けている感じがあるけど、中身は全く別の楽しさを作り出していて、とってもいいゲームだ。その2が何度かの発売延期を経て、ついに出た。ものすごくグラフィックも、ゲーム性も向上した感じで出た。やったあ!

ところで私にはゲームの大好きな幼稚園児の息子がいる。
彼はだいたい一日中ゲームのことを考えて、ゲームのことを話していて、ゲームをやるのも見るのも大好きだ。そして、私がちょこちょこ(世の一般的な大人と比べるとドカドカ)ゲームを買っているのを見ては、そのゲームをやっているところを見たいとせがむ。
しかし残念なことに私がゲームをやるのは、子供を寝かしつけて、皿を洗って、日記とか書いたあとの深夜である。ちなみに深夜まで起きているので、土日はほとんど寝ているし、やはりゲームは深夜にやる。

そういうわけで、以前にもダークソウル3のクリア寸前だと話したところ絶対に見たいと言うので、ゲーム実況風に撮影しておいてやったところ、結構好評だということがあった。で、今回CSD2が発売されたと言ったところ、同じく実況を撮ってくれと頼まれた。個人的にも、前回の実況を撮るというのは、楽しかったという思いがある。また、私は幼稚園児の息子にもましてゲームが大好きなまま三十年以上を生きてきたので、みんなにオススメしたいゲームなどは色々ある。そんなわけで、ゲーム実況チャンネルを作ってみた。

https://www.youtube.com/channel/UCA7yJL7yAjw0vozazBU6PxQ

とりあえず、幼稚園児の彼が父の動画を喜んでくれるうちは、ぽつぽつ投稿してみようかなと思う。彼に冷淡な態度とか取られ始めたらショックを受けるのでやめそう。そんなわけで第一弾のCSD2の動画がコレ。


いつもは動画では敬語で喋っているのだけど、これは自分の子供に向けてのつもりで喋っているので、意識して普段どおりの喋り方をしようとしている(ところどころ変な感じになってるけど)。子供が楽しんでくれると本当に嬉しいなあと思う。

2017年9月10日日曜日

メモみたいなの簡単に書けるやつ作った

https://text.denkizakana.com/-KtUhw7xy490OvjuXAYS

詳細は上述。

まだプロトタイプみたいなもんだけど、もうMarkdownで書いたりすることは出来る。
firebase hostingは独自ドメインでも一瞬でHTTPS対応にできたりして良い。

2017年9月6日水曜日

jQueryから遠くへ

私がプログラマとして給料をもらい始めた頃にはjQueryなんてものは存在していなかった。Ajaxというのは、何かGoogleとかだけがやっている最新鋭の技術という感じで、prototype.jsが出てやっとみんなやってみっかという感じになりつつあった。当時の私が居たSIerには片手で数えれるより多い行数のJavaScriptを理解出来る人は居なかったらしく、継ぎ足されて数十行くらいになったJavaScriptは、たったそれだけの行数なのにバグの山になっていて、本来出すべきタイミングでフォームを出せなかったりしていた。
私はそれを全部書き直して、半分くらいのサイズにして直したりした。

それからほどなく私は退職して、お別れ会のときに言われた。

「あのJavaScript君にしかわかんないから、助けに来てね」

私は答えた。

「ははは(死ね)」

うちが取り立てて酷いか、というと、まあそうなのだけど、地方の零細SIerなんてものはどこだって取り立てて酷かった。少なくとも私のような学歴も経験もないような人間をさほど試験もなく取るような会社は酷かった。そういう意味では身の丈にあった会社だった。私はクソゴミだったので、クソゴミのような会社に入り、ひととおり仕事を経験して、もうちょい給料をもらって良いクソゴミだということを確認できたので辞めた。

それからあちらこちらへと流れて、そのうちにjQueryというものが出た。画期的だった。ややっこしいDOMツリーの検索を理解しなくとも、誰にだって要素を取り出すことが出来たし、追加することが出来た。なんだ簡単じゃんJavaScript。そう誰もが思った。JavaScriptのことで助けに来てくれというような連絡はついに来なかった。もっとも、それはただの社交辞令だったし、そうでなくとも電話に出るつもりすらなかった。

みんなjQueryで色々書いていた。何万行ものjQueryを書いた。書いたやつは誰も彼も保守などせずに遠くへ消えていった。私もそうだった。死ぬほど沢山の、canvasにスクラッチで様々なグラフを書くようなコードを書きまくって、リーマンショックに伴って契約更新が流れて、去った。
保守性? 誰が気にする。JavaScriptだぞ? Excelの関数なんかと同じだ。トイレットペーパーを取り出しやすくするために三角形に折るような程度の利便性のためのプログラミング言語だ。誰も真剣に理解なんかしちゃいないが、何の問題が有るっていうんだ。
そうして、そのほとんどが保守不可能なゴミになっていった。

問題だったのは、JavaScriptが受け持つ部分が、ほとんど誰も気づかないうちに、あまりに広がりすぎていたことだ。フォームに数字しか入れられなくしたい? OK。フォームの状態に応じて「その他」のテキストエリアを出したい? OK。そのテキストエリアが表示されたときは入力を必須にしたい? OK。結果を非同期に受け取って、エラーを埋め込みたい? まあOK……。確認画面もそのままJavaScriptで描画する? 結果画面のリストもそのままページ遷移せずに出したい? 定期的に他人の追加した項目をリストに追加したい? それらをちゃんとページ遷移みたいにブラウザバックできるようにして、状態を常に最新に保ちたい? いや、ちょっと待った!

私は必死に、非表示のiframe内のページを遷移させて、ブラウザの戻るや進むがちゃんと働くようなコードを書いた。リストを非同期に読んだり、追加したり、列の表示非表示を切り替えたり、フィルタしたり、ページの速度を稼ぐためにdivの寸法を独自に計算して表に見えるように書いたりした。大量すぎる描画にブロックされないように、スクロール位置を計算して、表示されている部分だけが描画されるようなコードを書いた。jQueryでそれらを書いた。書き続けた。それらは膨大で、あきらかに書いた自分にすら著しく読みづらかった。

私には猛烈に嫌な予感がし始めていた。
きっと誰にも嫌な予感がし始めていた。
誰がこれを読み、誰がこれを直すのか?

海の向こうでは、私のような愚かなプログラマよりはるかに賢く真面目な人たちが、こういう状態に陥らないようにするためにフレームワークを書き始めていた。それがAngularであり、Reactであり、Vueであり、山のようなあれこれだった。

その先には、また別の問題があり、その解決策は今もよくわからないが、ともかく私はjQueryと別れて、なんとか持ちこたえた。たった一項目のデータを追加するために大量のjQueryのコードを読んだりするような羽目にはもうならないだろう。

そうして、私は今日も定時に帰る。

2017年9月5日火曜日

Vuex+firebaseで適当にやる

Firebase+Vuexのライブラリあって1,2度使ってみたんだけど、そのライブラリの構造に合わせることの利点がよくわからず、自分で作るにしてもそんなに手間もない。そんなわけで、適当にStore内で呼び出して使っちゃった方が楽だしわかりやすい。
特にリアルタイムで反映するとか考えず、単純なAPI呼び出しみたいに使う場合(実際REST APIもあるんだけど)、

data.once('value',snapshots=>commit('load',snapshots.val()))

みたいな感じで呼べば一回だけバコッとデータ抜けるので良い。
リアルタイムでデータ反映させたい場合はその限りじゃないけど(とはいえその場合も、一回のアクションから継続的にミューテーション呼んでればいいだけだけど)、そもそも一人で使う家庭用システムとして使ってるので、あまり重要ではない。

2017年9月3日日曜日

日記システムを全部書き直した話

前に書いたかなと思うけど、日記をつけるようにしている。備忘録の目的で、どこに行き、何を食べ、どんなことがあったかだけを淡々と書いている。ちょうど次男が生まれる直前から書き始めて、一年を超えて書き続けているがなかなか良い。読み直してみると、完全に忘れていたことも、そういえばあったなと思える。妻と話しながら読み返していたりすると、盛り上がるのでお得感が有る。生きてた感が増す。

日記は自分で書いた単純なシステムに残している。S3のホスティングでスタティックなファイルを配布して、firebaseをバックエンドにしてあるので、月額数円でちょっとやそっとでは落ちない+消えないものになっている。認証はfirebaseからGoogleのアカウントを連携させて、DBの書き込み+読み込み権限を完全に特定のアカウントID(自分のID)のみに与えてある。これも自分で作るより頑強だ。
もちろん配布しているドメインを発見されるとフロントエンドのコードを読まれたりするし、Googleアカウントでユーザー利用登録はできるが、特に何の問題もない。こちらに一方的にGoogleアカウントを知られるだけで、権限は何も与えられない。

で、割とお気に入りのシステムなのだけど、あまりデザインとか使い勝手の面で良くないなと感じていた。もともとfirebaseとvueの練習のつもりで作ったものなので、微妙にシステムのまとまりが悪い。また直そうにも厄介なことに、以前壊したPC上だけに保存していたものなので、minifyした本番用のコードしかない。そんなわけで、面倒くさいので頭からすべて書き直すことにした。ついでに今後は無くさないようにGithubにまるごと上げた。


デサインの変更点は、以前は左カラムに一ヶ月分の日付、右側に一日分の内容というだけのものだったのを、一ヶ月分の内容を表示するページと、一日分を編集するページとに分離した。前までは確認が一日ずつだったので、読み返すのは日付がわかっていないと不便だったが、これで読み物としての使いやすさが上がった。
別に月間ページにそのまま編集機能をつけても良かった気もしたが、今後日付ごとにちょっとした支出メモみたいなもんとかつけるかなと思って分けた。
また機能としてMarkdownを使えるようにして、ついでにYoutubeの埋め込みとか出来る拡張も入れた。動画作った日の日記にちゃんと制作物を貼れるので良い感じになった。