TVを作っています

最近、TVを作っています。TVといっても映像を受信して映す機械を作っているわけではありません。TVのように映像を再生して、見ることのできるウェブサービスを開発しています。

そのウェブサービスの名前はBaberuTVです。その名前の通りにbaberu.tvというドメイン名で公開しています。

公開しているとはいえ、まだ開発者であるわたしが日常的に使って困ることが程度の機能がようやく実装しおえたという段階です。使いかたの説明はまだなにも用意できていません。見た目もまだ洗練させられていませんし、おいおい進めて行こうと考えています。

BaberuTVとは

名前の由来はバベルの塔です。天にも届く技術力を得たいというわたしの個人的な思いを込めた命名です。

正しいスペリングである「Babel」ではなく「Baberu」としているのは、かたかな語のようなチープさを出したかったためです。またGoogle検索などの検索エンジンで「Babel」で検索するときのノイズとなってしまわないようにという思いも込めています。

BaberuTVではHLSの動画のURIをテキストフィールドに入力し、「Play」と書かれたボタンを押すことによって動画の再生を開始させられます。ただしBaberuTVがHTTPSで配信されているため、HLSの動画もHTTPSで公開されているものでなければなりません。また使用しているライブラリーの都合上、HLSがネイティブに動作しないウェブブラウザーではHTTPヘッダー「Access-Control-Allow-Origin」で適切な値が返されていないと動画の受信ができません。これ仕様上の問題ではありますが、わたしが使う範囲では困らないため、修正する意欲は薄くなってしまっています。

なぜ作りはじめたのか

サイバーエージェントとテレビ朝日の出資によって設立された株式会社AbemaTVによって、同名のウェブサービス「AbemaTV」が今年 公開されました。AbemaTVはReactやHLSといった比較的に新しい技術を使っています。

そう、「比較的に」なのです。

Reactが公開されたのは2013年です。今から三年も前です。HLSはReactよりもさらに古く、2009年から存在しています。七年前です。そう七年前なのです。

ひるがえって自分はどうでしょう。自分は何年も似たような技術を使い、そして似たようなウェブサービスばかり作っています。ウェブアプリケーション開発者としてこのことに危機感を覚えざるをえません。

そしてAdobe Flashがレガシーな存在であるとさけばれるようになってから、もう何年も経ています。だというのにいつまでもAdobe Flash Playerがユーザーの環境にインストールされていることを前提としたウェブサービスはなくなりません。それどころかわたし自信もそうしたウェブサービスにたずさわりつつも、なにもできずにいました。ユーザーに対する不誠実を許容することに対する歯がゆさを感じつつも、ウェブサービスにたずさわる一人の人間として、なにもできない無力さを痛感させられていました。

くやしい。

くやしい。

くやしい。

AbemaTVのサービスがはじまって以来ずっと、ずっとずっとそう思わされていました。思わせられ続けていました。

そんな折、勤め先でいろいろなことがあり時間が生まれたので、BaberuTVの開発に着手しました。

なにを使っているのか

BaberuTVでは、できる限り最新の流行を踏襲することを大前提としています。

ビルド関係

JavaScriptはいわゆるES.nextの構文やAPIをふんだんに使い、webpackを用いてバンドルを行っています。まだStage 4にもなっていない構文も使っているため、多くのウェブブラウザーとNode.jsでは当然動きません。なのでwebpackでのバンドルを行う際に、多くのウェブブラウザーとNode.jsで動かせられない構文はBabelを使って、ECMAScriptの最新の仕様であるECMAScript 2016に合致するようにトランスパイルさせています。

バンドル後のスクリプトファイルはECMAScript 2016の仕様に準拠させているため、最新のウェブブラウザーでなければ動作しません。ですが個人で開発しているウェブサービスなので気にすることではないでしょう。

HTTP/2での接続を前提としていてバンドルさせる意義は薄いのですが、現状のJavaScript周辺のエコシステムがバンドルさせることを前提としているため、そちらにあわせました。最新技術をキャッチアップするという目的意識から外れるようなことをあえてする理由もありません。

UI

UIを構築するためのライブラリーとしてReactを使っています。これは流行しているから、というだけではなくAbemaTVを踏襲しました。

ただAbemaTVではFluxの実装としてFluxibleを使っていますが、BaberuTVではなにも使っていません。contextを子孫コンポーネントに引き渡して、コンポーネントをまたいだ処理を行っています。

これは小規模に済ませ、あまり複雑になりすぎないようにということを意図していますが、大規模になるとまわらなくなるのである程度のタイミングでAbemaTVと同様にFluxibleを使おうと考えています。

またHLSの再生はSafariとMicrosoft Edge以外のウェブブラウザーではネイティブ動作しないため、hls.jsを使っています。

おわりに

BaberuTVはGitHubで開発と運用をしています。現状コミットをしているのはわたしだけですが、まずはじめにIssueを作り、Projectで進行状況の確認ができるようにしています。そしてPull Requestを作ってコミットをマージすることによって関連するIssueをクローズさせるという運用をしています。これは普通のソフトウェア開発を踏襲させたかったためです。普通が一番効率が良いものであるとわたしは固く信じています。

BaberuTVのレポジトリーはbaberutv/baberutvです。前の段落にもある通り、現状はコミットをしているのがわたしだけですがMIT LicenseのOSSです。誰でもご自由にPull Requestをお送りください。心より歓迎いたします。

ペンと剣

「ペンは剣よりも強し」という格言がある。この格言はペン (言論) は剣 (暴力行為) に勝るという意味を持つ。

しかし今の日本では剣を持つのは難しく、また剣を使わない状態であっても暴力行為を行って肯定されることはまず起こり得ない。

情報化社会となり、多くの人間がスマートフォンなどの情報端末を日常的に持ち歩くようになっている。多くの人間が広く世界に流布する情報を発信できるペンを持つ時代となっている。

剣による力の誇示がほしいままに行えなくなった今、ペンこそが力なのではないだろうか。

ペンで他者や自分自身を陥れることが容易にできるようになっている……なってしまっているのではないかと感じる。このことは頼もしいことではあるが、おそろしくもある。

すべての人がペンという「武器」を手にしていると言ってしまっても過言ではないだろう。

details要素とsummary要素はHTML 5には含まれていません

Qiita とQiita:Teamで本文中にdetails要素とsummary要素を使えるようになりました。

両要素についてQiita Blogでは

HTML5から、ユーザが明示的に操作をすることで追加の詳細情報を閲覧することができるようになるdetails要素が加わりました。また、その追加情報の要約を記載するために、summary要素も同時に追加されました。これらの要素を使用すると、ウェブブラウザは要約の文章に加えて、開閉するためのUIを表示します。そしてユーザがそのUIを使って開いた際に、details要素が持つ内容が初めて表示される、という挙動となります。

という説明がされていますが、details要素とsummary要素は2014年十月二十八日に勧告されたHTML 5の仕様には含まれていません。同年の二月に公開された勧告候補まではdetails要素とsummary要素は存在しましたが、四月に公開された勧告候補details要素とsummary要素はなくなりました。

2016年十月現在は勧告案の段階ではありますが、HTML 5.1details要素とsummary要素が再び追加されています。おそらくこのまま勧告されると思われるため、details要素とsummary要素がHTMLの仕様に含まれることはまず間違いないと思われますが、少なくともHTML 5で追加された仕様ではありません。

MackerelのTシャツをいただきました

株式会社はてなさまよりMackerelのTシャツをいただきました。

こちらは「【新機能アンケートキャンペーン】抽選で「Mackerel特製Tシャツ/ポロシャツ」をプレゼント - Mackerel ブログ #mackerelio」に応募して当選したものとなります。

Mackerelには大変お世話になっている上にこのようなものをいただき、とても感謝しております。株式会社はてなさま、ありがとうございます!

WordPress.comでブログを書き始めます

これまでわたし、山岸和利 (@ykzts)Tumblrでブログを書いていましたが、今後はWordPress.comでブログを書くようになります。今まで更新していた「人生が二度あれば」はそのまま残しますが、以後更新されることはありません。

Tumblrでは2007年からブログを書き始めました。2014年ごろから更新頻度が停滞してしまっていたとはいえ、九年以上お世話になっていたということになります。

2007年当時のTumblrは日本人による創作物を「引用」の要件を満さない形での無断転載が横行していました。Tumblrのサービスとしての機能は非常に優れているというのに使っている人たちがこうでは悪いものとして認識されてしまうのではないだろうかという義侠心のもと、Tumblrは他者の創作物を転載すること以外もできるということを示したくTumblrでブログを書き始めたのです。