rebuild.fm的アニメを見るための動画配信サービス比較
こないだのnaoyaさんの aftershow で、定番アニメの話をしていた。 naoyaさんは、Blueray買って高品質で見てるって言ってたけど、普通ネットだよねーってことで。
動画配信サービス別で あにこれのおすすめアニメランキング の上位+αを配信してるかどうかを調べてみた。
タイトル | 放映時期 | 話数 | 製作 | BANDAI | dアニメストア | dTV | U-NEXT | NetFlix | Hulu | Amazonプライム |
---|---|---|---|---|---|---|---|---|---|---|
STEINS;GATE シュタインズ・ゲート | 2011年春 | 24話 | WHITE FOX | ◯ ^1 | ◯ | |||||
化物語 | 2009年夏 | 15話 | シャフト | ◯ ^1 | ◯ | ◯ | ◯ | |||
コードギアス 反逆のルルーシュ | 2006年秋 | 25話 | サンライズ | ◯ | ◯ | ◯ | ◯ ^1 | ◯ | ||
攻殻機動隊 STAND ALONE COMPLEX | 2002年秋 | 26話 | Production I.G | ◯ ^1 | ||||||
CLANNAD AFTER STORY-クラナド アフターストーリー | 2008年秋 | 23話 | Key / ビジュアルアーツ | ◯ | ◯ | ◯ ^1 | ◯ | |||
涼宮ハルヒの憂鬱 | 2006年春 | 14話(28話) | 京都アニメーション | ◯ | ◯ | |||||
あの日見た花の名前を僕達はまだ知らない。 | 2011年春 | 11話 | A-1 Pictures | ◯ ^1 | ◯ | ◯ | ◯ | |||
COWBOY BEBOP-カウボーイビバップ | 1998年春 | 26話 | サンライズ | ◯ | ||||||
けいおん!! 2期 | 2010年春 | 26話 | 京都アニメーション | ◯ | ◯ ^1 | |||||
Fate/Zero - フェイトゼロ | 2011年秋 | 25話 | ufotable | ◯ ^1 | ◯(13話まで)[^2] | |||||
ちはやふる | 2011年秋 | 25話 | マッドハウス | ◯ ^1 | ◯ | ◯ | ||||
魔法少女まどか☆マギカ | 2011年冬 | 12話 | シャフト | ◯ ^1 | ◯ | |||||
電脳コイル | 2007年春 | 26話 | マッドハウス | ◯ ^1 | ◯ | ◯ | ◯ | |||
四畳半神話大系 | 2010年春 | 11話 | マッドハウス | ◯ ^1 | ◯ | ◯ | ◯ | |||
天元突破グレンラガン | 2007年春 | 27話 | GAINAX | ◯ | ◯ | ◯ | ◯ | |||
荒川アンダー ザ ブリッジ | 2010年春 | 13話 | シャフト | ◯ | ◯ | ◯ | ||||
SHIROBAKO | 2014年秋 | 24話 | P.A.WORKS | ◯ ^1 | ◯ | ◯ ^1 |
配信サービス自体の情報は、動画配信サービス比較ランキング! が詳しかった。アニメについては、ここ を見ればいいと思う。
このリストでの配信数は BANDAI(バンダイチャンネル)が一番だけど無料枠で見れるのが少ないとか、dTVアニメ月額考えるとコスパ高いなーとか、いろいろ勉強になった。どのサービスもお試し期間はだいたい半年だし、バンダイチャンネルは無料会員でも1話目は見れるみたいだから、画像チェックも出来るね。 そうそう、dTV系は doccomoユーザーでなくても大丈夫です。携帯キャリアのau,softbankは調べてないけどユーザーの人にはいいかも知れないよ。
それにしても、Netflixが、配信リストを公開してないっておかしいよな。日本だけじゃないよね?
100巻が読み放題のこち亀でオリンピック男を読む
18日までの期間限定。もっとも100巻あっても時間かかるし飽きそうだよね。
という訳で、名物キャラの日暮の登場回だけを読む。
- 21巻6話(1980年 モスクワ)
- 41巻6話(1984年 ロサンゼルス)
- 49巻7話(1986年)
- 62巻4話(1988年 ソウル)
- 81巻1話(1992年 バロセロナ)
- 100巻9話(1996年 アトランタ)
1986年のエピソードを除いて、きちんとオリンピックイヤーに登場。しかし見事に20巻毎の登場だ。
100巻無料配信のページはコミックスの表示画像がそのままリンクになってブラウザで読めるので、画像見るだけでも両さんの変遷が判って楽しい。
ちなみに私が一番好きな表示の22巻。初めて見た時はショックでした。是非セリフの確認を。
【楽天ブックスならいつでも送料無料】こちら葛飾区亀有公園前派出所(22) [ 秋本治 ] |
Powershellのパラメータの機能
VoiceText Web API ではパラメータ指定が多いのだが、Powershellはパラメータの扱いが結構便利・独特である。
他の言語同様に ARGS変数の配列で受けるだけでなく、
Function Hoge { Param($text) :
と書くと、関数呼び出しの時に
Hoge -text "ホンダラだ~"
と書くと、関数内で変数textに値 "ホンダラだ~" がセットされる。
これが基本なのだけど、初期値とか型指定とか、値の限定や入力補完とかいろいろと用意されている。
Windows PowerShell 入門(6)-関数編1 (1/3):CodeZine
この辺は基礎編。今回は以下のサイトを参考にいろいろと組んでみた。
- Windows PowerShell: パラメーターを定義する
- Windows PowerShell: 高度な関数のライフサイクル
- PowerShell の ダイナミックパラメータを利用して動的にパラメータを組み立てる - tech.guitarrapc.cóm
- PowerShellらしい関数の書き方 [PS Advent Calendar '12] - PowerShell Scripting Weblog
後、PowerShellの-PassThruパラメータについて - tech.guitarrapc.cóm は、-PassThru という Powershellの独特のパイプラインの考え方が判って興味深い。
VoiceText Web API の新話者の追加
VoiceText Web API えーっと。何故「クマ」?
【新話者追加のお知らせ】
「VoiceText Web API(β版)」をご利用いただき、誠にありがとうございます。
新話者の『凶暴なクマ』をイメージしたキャラクター音声を追加いたしました。使用方法の詳細はAPIマニュアルをご覧ください。皆様のご意見、ご感想お待ちしております。
— VoiceText Web API (@VoiceTextWebAPI) 2014, 9月 29
それとサンタって・・・
という訳で、フォローしました。このPowershell版は、パラメータで話者の補完をするので。
ついでに、
- パラメータに CmdletBinding() 追加
- テキストを標準入力からでも指定可能に
- 話者の初期値を show にしておきながら、必須入力という矛盾点を解消
- -PassThru パラメータを追加。単純に指定されたテキストを返す
という bugfixと仕様追加もしておきました。
環境を用意せずに、一番簡単に VoiceText Web APIを試せるので、どーぞ。
VoiceText Web API on Windows(3)
機能追加とかして、gist に上げた。
- APIのパラメータ全部をサポートし、引数チェックを実装
- OutFile パラメータがあれば、指定音声ファイルに出力。そうでなければ一時ファイルで終了時削除
- NoPlay パラメータを指定すると再生しない。音声ファイルが欲しいだけのときに
- パラメータはタブ補完出来ます。-emotion なら、hapiness→anger→sadnessが順に切り替わります。
全部で丁度100行になった。そのうち説明コメントとパラメータ指定部で 48行とは・・・
VoiceText Web API on Windows(2)
続き。参った。
Invoke-RestMethod だけど、VoiceText のユーザーだけの標準認証が通らなかった。-Credential に secure-stringを渡して・・・ってパスワード空文字を受け付けない。
仕方ないので、Headerに突っ込むことにした。実際の渡し方は前回のサーバへの送信文字列でも判るし。
param( [String]$text , [String]$speaker="takeru" , [String]$emotion="" , [String]$emotion_level="1" , [String]$pitch="100" , [String]$speed="100" , [String]$volume="100" ) # , [switch]$play ) Function base64_encode { param($str) $byte = [Text.Encoding]::UTF8.GetBytes( $str ) return [Convert]::ToBase64String( $byte ) } Function msPlayerSync { param($wavfile) $ms = New-Object Media.SoundPlayer( (Resolve-Path $wavfile) ) $ms.PlaySync() } # main if($Env:VOICETEXT_API_KEY -eq $NULL){ # APIキーがセットされてない $apikey = Read-Host "YOUR_API_KEY" $Env:VOICETEXT_API_KEY = $apikey } $endpoint = "https://api.voicetext.jp/v1/tts" $hdr = @{} $hdr["Authorization"] = "Basic " + (base64_encode ( $Env:VOICETEXT_API_KEY + ":" )) # check => text if($text -eq ""){ throw 'Please set Text!' } if($text.Length -gt 200 ){ # 200文字以内 throw 'Text is in 200 characters!' } $rest_body = @{} $rest_body["text"] = $text $rest_body["speaker"] = $speaker $rest_body["emotion"] = $emotion $rest_body["emotion_level"] = $emotion_level $rest_body["pitch"] = $pitch $rest_body["speed"] = $speed $rest_body["volume"] = $volume $wavfile = [IO.Path]::GetTempFileName() + ".wav" Invoke-RestMethod -Uri $endpoint -Method POST -Headers $hdr ` -BODY $rest_body -OutFile $wavfile msPlayerSync $wavfile del $wavfile
このスクリプトを posh-VoiceText.ps1 てな名前で適当に保存する。
スクリプトを実行したことがない場合は、
Set-ExecutionPolicy RemoteSigned
を実行する必要がある。詳しくは、
Windows PowerShell 入門(3)-スクリプト編 (2/4):CodeZine を参照あれ。
このスクリプトの特徴は
- Powershellで書いたので、Windows7 SP2以降でインストールの必要なく動く
- 最初に APIキーを入れてね。以降は環境変数に保持してる
- .NETのメソッドで再生するので、その場で聞ける
- 拡張しやすいよ
って、とこかな。-text "ほげほげ" のオプション指定とかは「-」以降をTAB補完してくれます。
「-emotion sadness -emotion_level 2 -speaker takeru -speed 80」が疲れた感じがしてオススメ。
.\posh-VoiceText.ps1 -emotion sadness -emotion_level 2 ` -speaker takeru -speed 80 -text 'だが断る。 この岸部露伴が最も好きな事のひとつは、 自分で強いと思ってるやつに「ノー!」と断ってやる事だ…'
これを全部コピーして、PowerShellコンソールに貼り付けて実行するとしゃべるよー
VoiceText Web API on Windows(1)
さて、VoiceText Web APIである。
WindowsPCでやってみる。Windows xp はダメだよ、もう。Windows 7 Home Edition.
> curl "https://api.voicetext.jp/v1/tts" -o "vt00.wav" -u "YOUR_API_KEY:" -d "text=おはようございます" -d "speaker=hikari"
公式ページで利用登録して、APIキーを取得すること。abc がキーとすると、-u "abc:" だ。
curl は適当にバイナリを取得してくること。Chocolatey が楽ちん。
で、上を実行して作成された vt00.wav を再生すると・・・再生出来ない。
実はエラーが発生してて、vt00.wav の中身は json形式のテキストだ。
{"error":{"message":"internal server error"}}
"-v" を追加してもう一度実行してみる。
> curl -v "https://api.voicetext.jp/v1/tts" -o "vt00.wav" -u "YOUR_API_KEY:" -d "text=おはようございます" -d "speaker=hikari" * About to connect() to api.voicetext.jp port 443 (#0) * Trying 106.187.40.121... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* connected * Connected to api.voicetext.jp (106.187.40.121) port 443 (#0) : :
サーバからのレスポンスは以下の通り
< HTTP/1.1 500 Internal Server Error < Content-Type: application/json < X-Revision: ac54b5cec38bd458aba7c100defc369220dd06a6 < Date: Sun, 13 Jul 2014 13:49:21 GMT < Content-Length: 45 < { [data not shown] 100 83 100 45 100 38 38 32 0:00:01 0:00:01 --:--:-- 40 * Connection #0 to host api.voicetext.jp left intact * Closing connection #0 * SSLv3, TLS alert, Client hello (1): } [data not shown]
何で InternalErrorかというと文字コードが UTF-8 じゃないから。
Linuxとか OSXだとこうはならないのは、ターミナルの文字コードがデフォルトUTF-8だからあいつらエラーにならない。Windows は cmd.exe も powershell もシフトJISなんだよね。
という訳でとりあえず、再生優先でアルファベットを渡すことにする。
> curl -v "https://api.voicetext.jp/v1/tts" -o "vt00.wav" -u "YOUR_API_KEY:" -d "text=Good Morning." -d "speaker=hikari"
毎回、メディアプレイヤーで再生するのも面倒なので、コマンドラインから再生させることにする。
Powershell だと .NETが使えるので楽だ。
コマンドラインで .wav ファイルを再生する を参考に関数を書く。.NETのメソッドのパス引数はFullPathでないとエラーになるので、Resolve-Path を使う。
Function msPlayerSync { param($wavfile) $ms = New-Object Media.SoundPlayer( (Resolve-Path $wavfile) ) $ms.PlaySync() }
> msPlayerSync .\vt00.wav
おー、しゃべるしゃべる。
次回は、curl.exe を使わずに Powershell でAPIのやりとりするよ。