HTTPの下の方

先日こんなツイートをしました。

思ったより多くの反響をいただいて、その内容を見て「これはあまり良くない質問だったかもな」と思ったので今後封印すると共に「自分だったらこう答える」というのを書いておこうと思いました。

元が面接の話なので、調べないで時間をかけないように書いてるので間違ってたら教えてください!!

POSTとGETの違い

  • どちらもHTTPメソッドでプロトコル的に本質的な違いは無い。
  • リクエストが「GET URL HTTPバージョン」になるか「POST URL HTTPバージョン」になるかの違い。
  • 世の中の実装ではパラメタの受け渡しがGETではURL、POSTではHTTPボディがメイン。
  • ブラウザ実装面ではリロードする時にGETは確認なし、POSTは確認を伴う実装が多い。
  • 検索エンジンbotなどはGETを辿ることがあり、GETで取得できる画面には副作用が無いものを置くのが望ましい。
  • そういえばちゃんとRFC読んだことないのでちゃんと答えるには読んだ方がいいな…。(URLの「?」の後ろがどういう扱いになるべきかを理解していない。POSTで「?」を使うことも実装上は可能。)

Cookieの仕組み

  • ステートレスなHTTPでステートを実装するための仕組み。
  • サーバはHTTPレスポンスヘッダの Set-Cookie でキーと値、送信して欲しいドメイン、有効期限を送信する。
  • ブラウザは Set-Cookie ヘッダを見たらその内容をローカルファイルなどに保存する。
  • ブラウザはHTTPリクエスト時に保存したローカルファイルを検索してドメインで検索して以前に受信したCookieがあればHTTPリクエストヘッダ Cookie として送信する。
  • ローカルに情報が保存され、改竄される可能性があるため秘匿情報を保存する用途では使用しない。

PHPのセッション

  • Cookie同様にステートレスなHTTPでステートを実装するための仕組み。
  • Cookieと違い情報をサーバ側に保存する。
  • サーバは情報を保存したいタイミングでファイルなどに値を保存しそれにキーを割り当て、Cookieでそのキーを送信する。
  • ブラウザ側から見ると通常のCookieと同じ。
  • サーバに情報が保存されるので、データの改竄の心配はしなくて良い。
  • Cookieの盗難や、キーの生成規則の脆弱性、不適切なキーの受け渡しによる経路での盗難によってセッションをハイジャックされる可能性がある。
  • 情報がいつまで使えるかはCookieの期限に依存するが、サーバ側に情報を保存するため無限にそれを保存することは難しく、言語やミドルウェアによってセッションの有効期限を決めてそれを過ぎた情報は削除される実装になっていることが多く、2つの期限を意識する必要がある。PHPもそう。
  • PHPの場合、セッションキーのやり取りはPHPに隠蔽され、スーパーグローバル $_SESSION経由でアクセスできる。Cookieのキーを振り直す関数など、セッションの運用をサポートする関数が実装されている。

そんな感じですかね!皆さんの想定とあってます?「そんなので良いの??」という方!いいですね!ぜひ一緒に働きましょう!!!

デジタルサーカス株式会社 採用情報

こういうのを見て「なるほど〜!」「そうだったのか〜」「もっと知りたい!」という方もぜひ!

キミは世界を変えるチカラを持っている

転職面接のFAQで「何で前職を辞めたんですか」というのがありますが、それに対して一般的には「ネガティブな答えはNG」ってされてると思います。

その理由は、面接官から「その状況を変えようとしましたか?」みたいな質問になり、その質問に対する「良い答え」の難易度がとても高いから、というところだと思います。(ちゃんと答えられれば評価爆上げですが、そもそも博打ですよね!)

で、ですね。「変えようとしたか」というのが今日のテーマです。

言いたいことファーストで言うと「不満点は表明すれば自動で解消される可能性がある」「辞めるならあなたが積み立てた信頼貯金(クレジット)を使ってからの方が良い」ということです。

会社で仕事をしていれば仕事内容、自身への評価、給与などに対する不満は出てくると思います。そしてその不満が溜まると人は転職すると思います。今日オススメしたいのは転職の前に「不満は表明しよう」「信用貯金は使おう」ということです。

世の中では「不満を言うなら解決策も示せ」とか「その解決策に向けて邁進せよ」みたいな話になりがちなのですが、それって極論で、その手前に「不満を言ってもらったことで進んで会社がその不満を解消する方向に動く」ということもあるんです。つまり「解決策など無くても不満は表明した方が良い」ということ。(そもそも解決策は本人が考える義務が無いものが多いですよね!)

みなさん、会社や職場で嫌なことがあったらまずはフィードバックしてみてください。「◯◯が××なのが気になっています。解消されないのであれば退職したいと思っています」とか「◯◯がすごく気に入っています。これが無くなったら退職すると思います」とか。

これを聞いた人は「ごもっとも」と思えば問題を解消するでしょうし、そうでなかったとしても「それを解決するコスト」と「その人が退職してしまうダメージ」を比べます。

あなたが評価されている(=信頼貯金が貯まっている)のであれば「退職してしまうダメージ」が大きく、「それを解決するコスト」が高くても釣り合いが取れるでしょう。

あなたの第三者からの評価はあなたからは見えないですが、自己評価はあると思います。

不満を表明した結果、自己評価ベースで納得いかない返答ならスッキリですね!次の職場を探しましょう!否定的な回答でもその返答に「仕方ないな」と思ったらその場にとどまっても良いですね。

会社は意外とみなさんのことを考えています。異動やプロジェクトアサインは多かれ少なかれみなさんのキャリアのために、という考えが含まれています。つまり「良かれと思って」やっています12

そして、前にも「転職とサッカーとコミュニティ」というエントリで書きましたが、プレイヤーはその場その時で活躍できなくても別のチームに行けば即活躍できることもあると思います。

自分の思いをアウトプットし、それが今のチーム(会社)と合わなければ、今自分を求めてくれるチームを探して移籍するのも良いですね。

ただ、今そういうチームがあるということは、未来に再度移籍する先が今のチームの可能性もあります。そのためにも、納得し、納得してもらい、惜しまれて移籍しましょう。これは本当に大事なことです。

どこに落とすと良いのかを見失ってきましたが、今日言いたいことはそのぐらいです!

Happy Hacking!!!

PHPerKaigi 2020 を主催した #phperkaigi

去る2020年2月9日(日)〜2月11日(火)に、PHPerKaigi 2020 を主催しました。

PHPerKaigi は第1回が2018年なので3回目の開催になります1

長谷川は PHPerKaigi に加えて iOSDC Japan の主宰もしており、今回で7回目の草の根技術カンファレンス主催でした。今回はその中でも一番、「今回はやり切ったな」「もうこれ以上やることは無いかもしれない」と思う開催でした。(まあ毎回そんな風に思っているのですが)

今回はPHPer茶会2、PHPerチャレンジ3といった2019年導入の企画はそのまま据え置き、会場の新スペース開拓、トレーディングカード、コードゴルフといった新企画を追加しての開催でした。

トレーディングカード

今年の当たり企画はこれですね!

参加者の名前とTwitterアカウント & アイコンが印刷されたカードを作って、チケット早期購入特典として4みなさんに100枚ずつご自身のカードをお渡ししました。

自己紹介の名刺として使って頂ければ、と思っての企画だったのですが、会場ではその思惑以上に良く機能していて、企画者として高揚感がありました。

PHPerトレーディングカード

長谷川は大学生時代に Magic: the Gathering (M:tG)というTCGをたいへん熱心にプレイしていて、今回のTCGはその影響を強く受けています5

今回配布したカードは、49種類のカードテキストの「クリーチャー」に参加者の一部220名を一定のルールでランダム割付したものでした。

内部的にはこれに加えて20種類の「呪文」と20種類の「装備品」を加え、79種類のカードセットを使ったゲームを想定していました。ルールも考えていたのですが、テストプレイをして調整をしたり呪文と装備品のイラストを作ったりする時間が取れずこの形でタイムアップとなりました6

はじめてのテストプレイ

欲を言うと市販のトレーディングカードゲーム(TCG)の様に10枚なり15枚でランダム包装したかったところですが、こちらは印刷のお願い先との調整の時間が足りなく断念しました。

PHPerトレカのつくりかた

基本的には、ADPRINTさまのトレーディングカード スタンダードサイズ(大)という商品です7

入稿は Illustrator ファイル1ファイルにつき30種類を割付したファイルなので参加者 & カードのデータCSVと事前取得した参加者のTwitterアイコンファイルを Illustrator JavaScript で割付しました8

絵柄面の枠外にチケット番号を印刷しておき、受付時にチケット番号から探してのお渡しでした。モノが場所を取るのでなかなか難易度の高い受付でしたがそこは印刷された名札を探すのに熟練したPHPerKaigiスタッフたちの力でなんとか回すことが出来ました。感謝!!

大分満足だったトレカですが、これからどうしようかね〜と思っています。今のルールだとゲームに10分〜20分ぐらいはかかってしまいそうです。実際にカンファレンス会場でテストプレイしてみるとちょっと厳しい気もしています。

これからじんわりと考えていこうと思います。

ありがとうございました!

という訳で、PHPerKaigi 2020 にご参加くださったみなさま、ありがとうございました!

現時点では2021年開催は予定していませんが、今年もみなさまにとてもお楽しみ頂けたと思うので来年も開催したいと思っています。引き続きご支援お願いいたします!!

そう言えば、第1回の「金曜日 + 土曜日」、第2回の「金曜日 + 土曜日 + 日曜日」に対して、今回は「日曜日 + 月曜日 + 火曜日(祝日)」という変則的な日程での開催でしたが「平日は休めない」というお声や「火曜日は定例リリース日なので休めない!」というお声を頂き、なるほどなーと思っています。ごめんなさい!次回から最大限土日を含んだ日程にします!!

カンファレンス録画システムを作った #iosdc

TL;DR

草の根技術カンファレンス用にトーク録画システムを作りました。トークの様子を録画して後日YouTube公開するのを主目的にしています。

16:9の動画の左4:3にスピーカーのスライド、右上にスピーカーの姿を合成して録画や配信をすることができます。

カンファレンス録画システム録画例

基本方針はこんな感じです。

  • スピーカーの姿を撮影するビデオカメラの画像と、スピーカーのPCの出力の画像をHDMIキャプチャしPCに入れ、OBS Studioで合成して会場プロジェクタに出力
  • スピーカー、司会用の有線マイク、会場質問用の無線マイク、BGM用のiPod touch、PCからの出力をミキサーに入れ、会場の音声に出力

このシステムをbuilderscon tokyo 2019およびiOSDC Japan 2019で使用しました。

この構成は@rela1470さんがPHPerKaigi 2019で開発した仕組みをベースにしています。この時の苦労話は @rela1470 さんのBlogエントリに書かれていますので興味のある方は是非読んでみてください。

解決したかった問題と前提条件

今回のシステムは過去のiOSDC JapanやPHPerKaigiで感じた以下の様な課題を解決したいというモチベーションで設計しました。

  • スライドを(カメラでの撮影でなく)キャプチャしてクリアに録画したい
  • スピーカーの姿も録画したい
  • スピーカー, 司会, 質問者の声をクリアに録音したい

また、YouTube公開前の編集の工数を最小限にすることを前提条件としていました。具体的には動画と音声はその場で合成して録画することを前提にしました1

構成の解説

映像

HDMIキャプチャ

映像はAVT-C878 PLUSをPCにUSB接続して取り込みます。この製品は単体でもHDMI録画できるのですが、HDMI録画するとUSB接続でのHDMIキャプチャができない仕様なのでHDMI録画機能は使用せず、単純なHDMIキャプチャとして使用しています。また、この製品にはHDMIパススルー端子が付いているのですが、少し使った限りでは安定度が低く、使用しませんでした。

カンファレンス録画システム的にはHDMIの映像をキャプチャできれば何でも良いので必ずしもこの製品で無くても良いと思っています。

AVT-C878 PLUS

USB接続HDMIキャプチャ

HDMI分配器

スピーカーのPCのHDMI信号はHDMIキャプチャと後述のバックアップ録画の両方に入力したいので、最初にHDMI分配器で2分配しその片方をHDMIキャプチャに、もう片方をバックアップ録画に入力しました。

HDMI分配器

1入力2出力のHDMI分配器

HDMI/Audio Splitter

スピーカーのPCのHDMIには音声信号も出力されてきますが、トークの中でデモをする場合など音声信号も会場に出したいことがあります。その様な場合のためにスピーカーのPCのHDMI出力から音声だけを取り出し、ミキサーへの入力としています。

HDMI/Audio Splitter

HDMIの入力からHDMI出力とRCA出力を得るためのスプリッタ。

今回購入したものとAmazon的には別の製品として出品されていますが見た目的には同じもの に見えます

ソフトウェア

ソフトウェアはOBS Studioを使用しました。複数のソースを1画面に合成したり、複数の画面を定義して効果付きでトランジションしたりすることができ、その出力をPCの画面だけでなく録画やYouTubeなどに配信することができます。

今回はYouTube配信は部屋が満員になってしまった場合のサテライト会場とスタッフ控室での状況把握用にしか使用しませんでしたが、それでも十分に便利でした。

PC

利用したPCはIdeaPad S540のRyzen 5搭載版です。2つの AVT-C878 PLUS から1080pでキャプチャし、合成した上で1080p出力が可能です。60fpsだと若干フレームがドロップするので30fpsで使っています。USB-Aが2つとUSB-Cが1つ付いているので、USB-A 2つをAVT-C878 PLUSに使用しています。

IdeaPad S540 Ryzen 5

コストパフォーマンスの良いWindowsノートPC

ビデオカメラからの映像

ビデオカメラはSONY HDR-CX680を使用しています。ビデオカメラは何でも良いのですが、録画中にHDMI出力ができる機種を選択する必要があります。

これは、ビデオカメラはHDMIキャプチャとしてのみの利用ではなく、PCでの録画失敗時のためのバックアップとしてビデオカメラでも録画をするためです。そのため今回はスクリーンとスピーカーの両方をビデオカメラで録画してバックアップとし、HDMIに出力された映像の一部をOBS Studioで切り出して使用しました。

HDR-CX680

録画時にHDMI出力が可能なビデオカメラ

ただ、これ、100人規模の部屋だと良いのですが、1,000人規模でスピーカーからの距離が遠かったり、照明が暗い部屋だとピント合わせが安定しないことがあり、改善の余地があるとは思っています。

HDMIの引き回し

ビデオカメラの配置によるのですが今回はビデオカメラとHDMIキャプチャの間が30m〜50mになりました。そのためHDMIケーブルをそのまま引き回す訳にはいかず、SDIを使用しました。SDIはHDMI信号を同軸ケーブルで電送する仕組みで、HDMI→SDI変換とSDI→HDMI変換機器を使用します。

HDMI/SDI変換にはBlackmagic DesignのCONVBDC/SDIHDWPSUを使用しました。この製品はHDMI→SDI方向にもSDI→HDMI方向にも使用でき、また、その両変換を同時にすることができます。

Blackmagic Design CONVBDC/SDIHDWPSU

HDMI→SDIにもSDI→HDMIにも利用でき、両方向同時利用も可能なHDMI/SDI変換

同軸ケーブルは3C/5Cと太さの選択肢があるのですが50mレベルでは細い方の3Cでも大丈夫な様です2。それ以外はコネクタさえ合えば良いのかな…ぐらいの理解でいるのですが、こんなのを利用しました。

TCX-3CFB

30m 同軸ケーブル

HDMIは10m以上引き回す時はSDIの様な、何らかの工夫が必要になるそうです。が、感覚的には5mぐらいから機器によってはギャンブル感が出てくると思っています。今回はレイアウトによってスピーカーのPCとPA卓(今回の機材を置いた机)の距離が遠いことがあり、その場合はスピーカーのPCのHDMI出力をSDIに変換し、PA卓でHDMIに戻しました。

このSDI用のBNCケーブル、50mを1本、30mを4本、10mを数本買ったので合計200mほどの長尺ケーブルを収納する必要があり、どうしようかと思っていたらこんなアドバイスを頂き、タムケースを買って収納することにしました。

ケーブルの分量を見極めてDTG10という10”タム用ケースを購入しました。

ライトスタンド

ビデオカメラの設置には三脚でなく、より高いところから撮影が可能なライトスタンドを使用しました。

また、ライトスタンドの倒れ防止にはペットボトル用のボトルホルダーをライトスタンドにタイラップで固定し、そこに2.5Lの水のペットボトルをぶらさげて倒れ防止としました。

LEDライト

今回使用した会場はスピーカー周りが暗い会場があり、写真を含めて撮影に苦労していたのでLEDライトを導入してみました。

Yongnuo YN-600

比較的安価なLEDライト

使用感としてはとても良かったのですが、そのままだと光が強すぎて写真撮影をお願いしていたプロカメラマンさんの助言でディフュージョンフィルタを使用しました。

バックアップ録画

今回は「YouTube公開前の編集の工数を最小限にしたい」というモチベーションのもと、OBS Studioで会場向けに出力した映像をそのままYouTubeで公開する設計ですが、万が一OBS Studioでの録画に失敗したり、録画ファイルが壊れたりした時のために、各ソースのバックアップ録画をしていました。

映像ソースはビデオカメラとスピーカーのPCのHDMI出力があります。このうちビデオカメラは簡単で単体で録画機能がありますので朝録画ボタンを押して夕方まで録画しっぱなし、という運用をしました3

スピーカーのPCのHDMIのバックアップ録画はなかなか難しく、今回はBlackmagic Design Video Assistを利用しました。

Blackmagic Design Video Assist

単体でHDMI録画が可能なモニタ付きレコーダ

この製品はプロ仕様でハードウェア・ソフトウェアともに明らかに良くできており、HDMIケーブルを抜き差ししても録画が継続するという大きなメリットがあります4。この製品にもHDMIパススルー端子が付いていますがこの製品のHDMIパススルー端子は安定して使うことができそうでした5

一方、

  • 解像度が変わると録画が停止する
  • 入力HDMIケーブルの長さに(他の機器より)厳しくそもそも映らないことがある
  • 入力側PCの設定によるのか画面表示が乱れることがある(録画はできている)

という弱点もあります。解像度の変更に関しては気をつける6しか無いのですが、入力HDMIケーブルの長さは設計で回避できるので、今回は及第点かと思います。

前述の前述に加えて録画のクオリティがすごく高く1日(8時間)ぶんを録画するのに1枚約1万円7する512GBのSDカードが必要というのも地味に厳しく、他に良い製品があればそちらを使っていたと思います。

音声

音声については「一度すべてミキサーに入れてバランス調整し、ミキサーの出力を会場に入れる」という基本設計になっています。

ミキサー

ミキサーはYAMAHA MG10XUFを使用しました。これについてはあまり深く考えずに前身になった@rela1470さんの構成を継承しました。

10chアナログミキサー MG10XUF

入力

この製品はアナログのステレオミキサーで、4つのモノラルXLR/フォーン入力と2つのRCA/フォーンステレオ入力、1つのUSBオーディオI/F入力を持っています8

このUSBオーディオI/Fがとても使い勝手が良く、2つの使い方を同時にすることができます。

オーディオデバイスとして 音声出力してそれをミキサの入力とする
レコーディングデバイスとして ミキサーの全出力をPCで録音する

その他のアナログ入力は以下の様に使用しました。RCAとUSBオーディオI/Fはステレオ入力ですが後述のバックアップ録音の都合ですべてモノラル運用としました9

XLR1 スピーカーのマイク(有線)
XLR2 司会のマイク(有線)
XLR3 質問者用マイク(無線)
XLR4 BGM用iPod touch
RCA1 スピーカーPC
RCA2 (不使用)

こう見ると、空きがステレオRCA 1つしか無く、もう2ch多いMG12XUでも良かったかもしれないな、と思ったりもします10

出力

YAMAHA MG10XUFの出力はラインレベルなので会場がマイクレベルの場合のためにアッテネーターを買っておきました。会場によって入力がマイク用XLRしか無い場合もあるのでアッテネーターは必須かと思います。

TXX40 (40dBアッテネーター)

その他

他を検討しないで導入したミキサーですが、どんな信号を入れてもちゃんと鳴る、という意味ですごく安定・安心のミキサーでした。

一方で、バックアップ録音のことを考えると単体でマルチトラック録音できるミキサにしておいても良かったかな、の想いはあります11

ZOOM L-8

単体でマルチトラック録音可能なミキサ

有線マイク

有線マイクについてはPHPerKaigi 2018で使用したスタッフ私物のベリンガー XM1800Sが無難なパフォーマンス & 低価格だったのでこれを採用しました。

ベリンガー XM1800S

コストパフォーマンス抜群のダイナミックマイク3本セット

ケーブルはXLRケーブルを適当に、ということで、5mをメインに買いました。XLRケーブルはサウンドハウスのMIX/CXXシリーズがちゃんと使えて安くてお勧めです。

MIX050 (5m)
MIX010 (1m)
CXX003 (0.3m)

無線マイク

無線マイクは800MHz帯のマイクが安価に売っているのですが、会場の既存マイクとの混戦の可能性があり、いろいろな会場を使う草の根カンファレンスにはやや持ち込みにくく、それ以外の選択肢から探す必要があります。

他の選択肢はおそらく赤外線 or 2.4GHz帯なのですが、今回は2.4GHz帯を選択しました。2.4GHz帯の無線マイク製品はあまり選択肢が多くなく、いくつか検討して2つ購入、最終的にはaudio-technica ATW-1102を採用しました。

audio-technica ATW-1102

2.4GHz帯無線マイクセット

このセットはXLR出力が付いたレシーバーと電池駆動可能なトランスミッタ付きマイクのセットです。レシーバーは複数のトランスミッタとペアリングできますので後からマイクなどを追加可能で、今回は1つの部屋では2つ同時にペアリングして使用しました12

2.4GHz帯ということで電子レンジやWi-Fi, Bluetoothとの競合の可能性がありますが、何ヶ所かで使用した限りでは安定していて、とても良い製品だと思います。

BGM

会場BGM用にiPod touchのイヤホンジャックからの音声信号をミキサーに入れて使用しました。今回はモノラル運用だったので入力側がステレオミニジャック、出力側がXLRのケーブルを用意して使用したのですが、このケーブル、相手を選ぶものがある様で、うまく使えるケーブルと使えないケーブルがありました。おそらく使ったケーブルがステレオ→モノラルというキワモノだったので、そのせいかと思っています。

後述するのですが、次回以降はステレオ運用しようと思っており、そうなればこういった不安は無くなるかな、と期待しています。

スピーカーPC音声

スピーカーのPCのHDMIに乗ってくる音声信号を前述のHDMI SplitterでRCAとして取り出し、ミキサーのRCA入力に入れました。

これは特筆すべきことはなく、通常は単純にRCA to RCAケーブルを用意すればOKですが、今回はモノラル運用したのでステレオRCA to モノラルRCAケーブルとモノラルRCA to ステレオRCAケーブルを接続して使うという大分アレな使い方をしました。

バックアップ録音

YAMAHA MG10XUFにはXLRのバランスステレオ出力があるのですが、バランスのまま会場への入力とバックアップ録音をしたく、今回は全体をモノラル運用していました。

そのため、ステレオの出力のうち1つをバックアップ録音のためのPCMレコーダ TASCAM DR-40X に、もう1つを会場に入れました。

TASCAM DR-40X

XLR入力が可能なPCMレコーダ

このPCMレコーダの選択は「XLR入力があるもので一番安いもの」という理由だったのですが、以前から使っているZOOM H5 がマルチトラックPCMレコーダーだったのに対して TASCAM DR-40X はステレオ録音ベースのPCMレコーダーでモノラル運用の今回はやや使いにくかったので、他に良いものがあればそれでも良いな、というところでしょうか13

会場側も結果的にはステレオミニジャックが使える会場が多く、ステレオ運用でも良かったと思っています。YAMAHA MG10XUF には出力がXLRとフォーンの2系統あるのでステレオ運用する場合はXLRを TASCAM DR-40X に、フォーンを会場に入れると良いと思います。

収納

実は今回一番試行錯誤したのが収納でして。

機材構成をおおむね確定させた1回目の使用はこんな感じでした。

この時は機材構成が決まったところだったので良かったのですが、これ、設置にかなり時間がかかる上にすべてがわかっている人でないと設置ができない感じがします。今回は5トラック同時運用を予定していたので対策を考える必要がありました。

今回の構成、配線は多いのですがその配線は基本的にすべて固定なので可能な限り事前に配線してそのまま持ち込むことを考えました。また、収納や輸送のことを考えて、すべての機材が何らかの形でケースに納まる形を考えました。

ミキサー & PC

当初、ミキサーのみ収納できるケースを探していたのですが、ミキサーの形的にノートPCもいっしょに格納できそうだったのでミキサー+PCの収納向けのケースを探しました。

と言ってもサイズを図って買ってみたら一発フィットで苦労はありませんでした。

このケースは中に2cm × 2cm × 5cmぐらいのブロックで切れ込みの入ったクッションが入っていてそれをちぎって好きなサイズの穴を開けられる様になっています。今回はノートPCとミキサーを収納できれば合格だったのですが少しスペースに余裕があったので、ノートPC用のACアダプタ、ルータ用のACアダプタ、ノートPCとミキサーを接続するためのUSB-C → USB-Bケーブルも収納することにしました。

配信機材

試行錯誤したのはこちらの方で、合計3パターンを作成しました。

基本的な方針はすべて同じで「何らかの板の上に機材を固定し、機材間の接続もした状態で固定する」です。また、あわせてその機材を固定した板の収納もいろいろ検討しました。

完成形はエフェクター用ケース CLASSIC PRO CPEC600 にアイリスオーヤマのメッシュパネル MPP-3060 を入れ、メッシュパネルに機材と配線を固定しました。このメッシュパネルは CPEC600 にピッタリ納まるのでパネルの固定は必要ありません。

ちょっとした工夫ポイントとしては、 Blackmagic Design Video Assist (HDMIレコーダー)に三脚穴があったので、三脚穴の付いたアクションカメラ用のクリップマウントの部品を使って VideoAssist のチルトができる様にしています。

配信機材収納の試行錯誤

上記の他に2パターン試しました。Ver.1 は素材を探して通っていた100円ショップで見つけたMDF製のクリップボードです。ドリルで穴をあけてタイラップを通しています。

これは悪くなかったのですが、MDFゆえ、剛性が低く見た目もあまり良く無かったのでもうちょっと良いものを探しに入ったホームセンターで剛性が高く機材の固定もしやすそうなスタッカブル棚( TR-7249 )を見つけ、脚を取り外してVer.2として組み立ててみました。

これで完成としようとプラス4つ購入したところでエフェクター用ケース CLASSIC PRO CPEC600 とそれにぴったりなメッシュパネル MPP-3060 を見つけてしまい、長谷川家には4つの未開封の TR-7249 が積んであります…。

その他の収納

今回は収納体積を少しでも小さくすべくいくつかの工夫をしたのですが、その中でも ベリンガー XM1800S の購入時に付属するケースの使い勝手が良く、加工してマイクが3本でなく6本入る様にしたり、ビデオカメラのケースにしたりしました。

ケーブルやビデオカメラ、LEDライトなどの機材は折りたたみ式のコンテナに収納しました。

TRUSCO TR-C40B-TM

折りたたみ可能なコンテナ

コンテナ内の細かい収納は前述の ベリンガー XM1800Sのケースの他、100円ショップに何度も通って良いケースを探しました。

番外編

テプラ

写真にもある様に、収納ケースにはテプラでラベルを作って貼っています。これが思った以上に便利で、なんでもっと早く買わなかったのだろう、とちょっと後悔しました。

キングジム テプラPRO SR5900P

Wi-Fi/LAN/USBケーブルでPCに接続して専用ソフトからラベルを作れるテプラ

今時のテプラってすごい進歩していて、印刷対象のラベルカートリッジの種類がすごくたくさんあります。その中でも「ケーブル表示」は珠玉の逸品で、ケーブルに巻いて貼ることができます。そして、「同じシールを10枚」の様な印刷をしてもその境目に切れ目が入り、はさみなど不要でどんどん貼れます。

残念だったものたち

今回は「買ったけど使わなかった」ものもいくつかありました。

無線マイク

無線マイクは audio-technica ATW-1102 を買う前に ベリンガー ULM300MIC を買っていました。この製品は安価な2.4GHz帯の無線マイクということで魅力的だったのですがとある会場で使ってみると時々途切れて使い勝手が悪く、本採用には至りませんでした14

HDMIオーディオ合流

ミキサの出力をどう会場に入れるかを検討していた時に、1つの方法としてHDMI入力がある会場の場合にミキサの出力の音声を会場に入れるHDMIに合流する方法を検討しました。

そのために、HDMIとステレオミニジャックを入力すると音声付きHDMIになって出てくる機器を購入して実験してみました。

結果としては若干の遅延が発生し、今回の用途では厳しかったので本採用には至りませんでした。

おわりに

という訳で、今回作成したカンファレンス録画システムまわりのご紹介でした。だいたい完成版だなとは思いつつ、いくつか課題もあり、1〜2年かけて最終化できたら良いな、と思っています。何か良い情報をお持ちの方いらっしゃれば是非教えてください。

草の根カンファレンスの何か

iOSDC Japan を2016年に初めて3年目。ひよっこカンファレンス主宰な訳ですが、先達にいろいろ教わったこともあって何となくやってこられた訳です。3年やってるとたまに相談されたりするので、2019年時点の自分の考え方をまとめておこうかと思いました1

以下は全部、自分が主催している様な「ボランティアスタッフが集まって、企業にスポンサーになって頂いて開催する技術に関するカンファレンス」のお話で、「継続的なコミュニティ」というよりは「年1回のお祭りを作る人たちと(スポンサーを含めて)参加する人たちのコミュニティ」という前提です。

あと、半分ぐらいはbuilderscon主宰の@lestrratさんの請け売りなのでもし評価頂けるなら半分ぐらいを@lestrratさんにお願いします。

話題1: 法人作るか論

結論から言うと法人はあった方が良いなのですが、一方で法人は銀の弾丸ではないというのもあり、法人があった方が良い理由は自分は2つしか無いと思っています。

1つめはスポンサー企業からスポンサーフィーを頂く時に法人の方がスムーズだということ、2つめは契約主体になれることです。

それ以外の問題の解決手段としての法人設立はあまり効果が無い(他の方法で解決した方が良い)んじゃないかと思っています。

iOSDC Japan では2016年初開催の途中まで個人でやろうと思っていたのですが、少し進めたところで「これはムリだ!」と法人に切り替えました。

メリット1: 金融機関口座

経験上、企業からスポンサー申込を頂いて、「個人口座にお願いします」と言うとそこから異常系に突入します。スポンサー側担当者の方も個人にスポンサーフィーとしてお金を振り込む時にどうしたら良いかわからなかったり、信用調査的なことが始まったり。法人口座であれば「よくある手続」として進められます2

個人でない金融機関口座として任意団体名義の口座というのがあり、もしかするとそういうのでも同じ効果があるのかもしれません。ただ、任意団体名義の口座の作成は年々ハードルが高くなっている様です。自分が2016年に調査した限り、銀行はほぼ無理、比較的作りやすいのがゆうちょ銀行だそうですが…3。ただ、この場合にスポンサー企業から見てどちらの扱いになるのかは不明です。

メリット2: 契約主体

法人があると契約主体になることが出来ます。

これはどういうことかと言うと例えば「1,000人規模の会場を2日間。合計1,200万円の契約」と言った時に、法人相手でないと契約してもらえないことがある、ということです4

法人が解決しない問題

前にも書きましたが、個人的には自分の知る1,000人規模までの草の根技術カンファレンスにおいて、法人設立はその2つ以外の問題は解決しないんじゃないかな、と思っています。

法人の財布は普通の財布

法人を作ったところで、無いお金は払えません。キャッシュフロー(お金が入る、または出て行くタイミング、その量)のコントロールは誰かがやる必要があります。赤字になるのが怖ければ赤字にならないように収入と支出をコントロールするか、パトロンを見つけて赤字が出たときにかぶってもらう必要があります。

よくニュースとかで巨大企業が何億円の赤字、とか言ってるけど、あれ、現金が100億あるとか、誰かが貸してくれるとか、そういうことですからね!草の根カンファレンスで法人立ち上げて、資本金10万円で法人を作ったら10万円赤字になったところでそれ以降は1円も払えないですからね!5

法人は責任を取ってくれない

法人は法の下に人ですが、喋るわけではないので、何か問題が発生したら人間がそれに対応する必要がありますし、法人が責任を取るべきことが発生すれば最終的に誰かが責任を取る必要があります6

誰か最終的に責任を取ってくれる何かが欲しくて法人を作ったら、最後に責任を取るのは法人を作ったあなたです、ということですね!

個人的には、そういったコミュニティ活動に伴う責任と、法人は切り離して置いた方が良いと思います。キャッシュフローや収支の管理はコミュニティが責任を持ってやる。その代わりその使い道はコミュニティの自由にできる。

お金って手段ですからね!お金をコントロールする力はコミュニティが持つべきだと思います。そうしないと問題が発生した時にその解決方法としてのお金を選択できない。

法人のコスト

法人にはその維持をするためにいろいろなコスト(お金と手間)がかかります。

作る時にお金がかかるのは1回限りなので良いとして、存続しているだけで法人住民税を払う必要があり、個人の確定申告より確実に面倒臭い決算をし、人にお金を払えば源泉徴収して翌月10日までに国に納め、一定規模以上 or 一定期間後には定期的に消費税を納める必要があります。他にももっとあるよ!超面倒臭いよ!!!7

なお、面倒になったから解散しようか、となったら清算手続をすることになり、ここでまたお金と人の手間がかかります。税務署の皆さんは設立より清算に目を光らせるそうですよ!そりゃそうですね!脱税による隠し財産が無いか確認しないとですからね!

そんな訳でスポンサーフィーが受け取れていて、会場などの契約に苦労していないのなら法人はいらないんじゃないかな、と思いますね!

そして、もし、それらに困っていたとしたら、まずはコミュニティにいる企業に協力をお願いしてスポンサーフィーの受け取りと契約・支払をお願いすると良いと思います。「本カンファレンスは経理処理を株式会社〇〇に委託しています」のていです。その際に、手数料を支払えると良いですね!

話題2: スタッフの責任

重要な役割を担っていたスタッフの進捗がだんだん遅れ、ついには連絡が取れなくなってしまった!

困りますね!引き受けた仕事は責任を持ってやって欲しいと思いますか?そりゃやってもらうに越したことは無いけど、例えば育児、介護、仕事、それらに優先してやるべきですか?という話ですよね。

自分はYAPC::Asia TOKYO 2015に行って「技術カンファレンスというのはこんなに面白いものなのか!」と突然覚醒したタイプの人なのですが、その主宰であり現builderscon主宰の@lestrratさんがbuildersconスタッフに対して「あなたの仕事、家族、人生を優先してください。引き受けたタスクが出来ないと思ったら持ちすぎずに手放して下さい。」と言うのをスタッフとして聞いてすごく納得しました8

冒頭の問題が発生した時に、本当の問題は「そのスタッフがその役割を手放せなかったこと」だろうな、と思っています。

最悪の場合は全部自分で引き継ぐつもりでいるのですが、これぐらいの方が自分としても気持ちが楽だな、と思っています。

話題3: 代替わり

スタッフの代替わりをどうしたら良いの?というのも鉄板トークですよね。

これは結局のところ「何が目的か」という話に尽きるのかもしれません。代替わりというのは目的ではなくて手段なので。

自分は「最高の祭りを1年に1回やりたい!」というのを目的だと思っています。なので自分がそう思わなくなった時に引き継ぎ手がいなければやめれば良いと思うし、その目的のために代替わりが必要ならすれば良いと思っています。

状態を変えるのってすごくエネルギーがいることで、始めるのも大変だけど、やめるのも勇気がいるんですよね。やめる勇気って本当に大事だと思っていて「やめる勇気が出せないばかりにスタッフが疲弊していく」というのだけは避けたいですよね。

一方で、続けることそのものが価値であり目的なこともあるでしょう。この場合はシステムとして代替わりをしていくのが良いんでしょうね。そしてこの場合は、今いるメンバで継続するために必要なことの見極めが重要なんだろうな、と思います9

とまあ、そんな感じです。

コミュニティとか言ったって所詮1年に1回の草の根カンファレンスを足かけ4年やってる、ってぐらいなのでその視点からのコメントだということはご理解ください。

カンファレンスやるぞ!ってなった時に先達のドキュメント読んだり言語カンファレンス大反省会 2015に行って皆さんの話聞いてとても参考になったので、今そういう立場にいる方の役に立てればな、と思っています。

なお、buildersconは2016年から開催されている技術カンファレンスですが、技術カンファレンスのフレームワークとしての立場もあり、技術カンファレンスを開催するにはどうすべきか、というドキュメントが公開されています。これから技術カンファレンスをやりたいという方にはとても役に立つドキュメントだと思いますので心当たりの方は是非読んでみてください。(英語で書かれていますが一部日本語訳されているものもあります。)

https://github.com/builderscon/builderscon

そして、そのbuilderscon tokyo 2019と長谷川主催のiOSDC Japan 2019は現在トーク募集中です!心当たりの方、是非ご応募を!!

以上です!!

(Twitter連投で済んでれば1,400文字ぐらいで済んだのにえらいたくさん書いてしまった。)