ガランチュ 1.1.1 のリリース

ガランチュ 1.1が最新のガラポンTVのファームウェアで動かなくなっていたのでアップデートした。残念ながら仕様変更のお知らせはファームウェアアップデートの1週間後くらいの事後報告だったので対応が遅くなってしまった。iOSの場合は審査で7-10日くらいかかってしまうので、2,3週間は前に通知してもらえないとどうしようもない。

API仕様書も知らない間に更新されているようなので、対策するにはこちらから定期的にウォッチしていかないといけなさそう。

2.0との分岐

実はガランチュ 2.0でiPhone対応をしようとしていて、Andriodで言うFragmentのようにStoryboardとChildViewControllerを使って画面のコンポーネントを共有化しようとリファクタリングしていたので、1.1のコードベースからピンポイント修正して1.1.1を作成することにした。

Xcodeを最新にしていたため最新のSDKでビルドするとiOS8での画面回転周りで問題が起きるのでiOS8対応も必要になってしまった。依存しているライブラリの一つがiOS 6.1以上だったので最低バージョンをiOS 6.1にあげた。そもそもiPadは初代がiOS5で、それ以降はiOS8まであげられるのであまりiOS6にこだわる必要はないんだけど今回はHotfixということで手間を掛けたくない、大きな変更は加えたくないという判断。

UIBackgroundModesでReject

最初の提出でRejectされてしまった。UIBackgroundModesaudioに設定しているけどBackgroundで音鳴んねーぞって怒られた。

これ設定していたころも謎だったんだけど plist ファイルに

<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
</array>

って設定してあってもXcode上でみると

App plays audio or streams audio/video using AirPlay

って表示されるので、AirPlay対応したときにとりあえず入れていた記憶がある。でもドキュメント読み直して見てもAirPlayについては何も書いていない。

設定削除してもAirPlayは普通に動いたし、Background再生は対応していないので要らない設定だと判断した。UIBackgroundModesの項目を削除したら審査は通った。

そもそも前のバージョンから同じ設定をしていたけど審査は通っていた、iOS8でBackground周りの機能が変わっているからApp Storeのテスト項目が増えてしまったのかな。。。その辺が最近App Storeの審査が長いというのにつながっているのかもしれない。ちなみに今回は最初の提出が3/11でRejectが3/19だったので8日くらいかかった。でも一時期、1週間以内の時があったから遅いと感じるだけでよく考えるとこれくらいが普通なのかな。

ガラポンTV iPadアプリ ガランチュ1.1をリリース

ガラポンTV iPadアプリ ガランチュのバージョン1.1がAppStoreより公開されました。

ガランチュはGPLでソースコードを公開しています。
https://github.com/makotokw/GaranchuForiOS

新機能

  • AirPlayボタン
  • 字幕一覧の表示
  • 番組詳細の表示で番組名、時間、ジャンル、放送局を追加
  • 再生履歴のコピー機能を追加

バグ修正

  • 保存済みのアカウントのパスワードを変更したあと自動ログインが失敗してログインできなくなる不具合を修正
  • ウェブ認証が失敗したときにリトライを促すメッセージの表示

AirPlayボタン

iOS7になってごちゃごちゃしてよくわからなくなったのでアプリ内でAirPlayボタンを表示するようにしました。AppleTVに出力すればテレビに繋いで見れて便利です。

字幕一覧の表示

今まで字幕取れる番組がないと勘違いしていたのですがAPI仕様書をよく読んだところ字幕をとるには番組IDで1番組単体でAPIを呼び出す必要がありました。

字幕の取得方法が分かったので、字幕一覧表示機能をつけ、選択した字幕位置へシークするようにしました。主にタイトルに [字] が入っているものについて字幕が取れるようですが、必ずしもそういうわけでもないようです。

お笑い番組には字幕がよく入っているので嬉しいです。字幕を開いたときに再生位置までスクロールしています。字幕の再生時間が空いている箇所はCMスキップとして使えてかなり便利です。

番組詳細の表示

番組詳細に時間やジャンル、放送局などを追加しました。とは言っても今まで一覧表示で時間や放送局は表示していたので今回新たに確認可能になったのはジャンルということになります。

視聴履歴のコピー機能

設定 > データから2週間分の視聴履歴をテキストでコピーできるようにしました。

ガラポイントなるものが導入されガラポンTVサイトでレビュー(感想)を書くとポイントがもらえるようになりました。ガラポイントで公式アプリの広告を取りのぞいたりダウンロード上限を増やしたりできるそうです。

http://garapon.tv/topics/2013/10/point_service.html

番組のレビューごとに20ポイント(番組への評価のみの場合は5ポイント)
・レビュー時にTwitterやFacebookと連携させると各10ポイント
・レビューにLikeされると10ポイント
・レビューへのLikeごとに1ポイント
・番組情報の編集ごとに10ポイント
・番組へのLikeごとに1ポイント
・月間での番組視聴100番組ごとに10ポイント(翌月付与)

僕は公式アプリを使わないで済むように自作アプリを作っていたので今のところガラポイントの使い道がなく、ガラポンTVアプリをつくっても1ポイントももらえないのなんでやねんと思っているわけですが、それはそれで置いておいて、全番組を録画している中で見たい番組を探すためにこういったテレビ番組のレビューは貴重な情報です。

しかしiPhoneやiPadのソフトウェアキーボードであんまりレビューを書きたくありません。パソコンでガラポンTVは見ないがパソコンでレビューを書きたいという自分の要求のために視聴履歴をコピーしてメールで送信できるようにしました。

視聴日: 2013/11/11(月) 06:03
タイトル: いきなり!黄金伝説。[字]
放送日: 2013/11/07(木) 19:00
最終再生位置: 3分/58分
http://site.garapon.tv/social_gtvid_view?gtvid=1SJP7FE51383818400
-------

視聴日: 2013/11/11(月) 05:59
タイトル: アメトーーク![字]
放送日: 2013/11/07(木) 23:15
最終再生位置: 5分/60分
http://site.garapon.tv/social_gtvid_view?gtvid=1SJP7FE51383833700
-------

視聴日: 2013/11/11(月) 05:58
タイトル: 有吉反省会[字]
放送日: 2013/11/10(日) 22:30
最終再生位置: 3分/26分
http://site.garapon.tv/social_gtvid_view?gtvid=1SJP7FE21384090200

こんな感じのテキストを送信できるので、あとで時間が空いた時に自分が見た番組についてまとめて評価やレビューを書くことが可能になります。

次のバージョン

基本的な機能ができてようやく本来やりたかったことに着手できそうです。iPhone対応も案外そろそろ検討しなければ。

先週末ごろガランチュ 1.0.1がリリースされた

1.0.1の話

変更内容はこちらの通り。

メタデータRejectくらって長引いた。1.0.0のときにテスト用のアカウントをガラポンTV社から一時的にお借りしていたのだが一時的な処置だったので1.0.1の審査でそのテストアカウントでログインできねーぞとRejectをくらった。

ちなみに審査をするときにテストアカウントを入れる欄がアプリのメタデータ項目にある(当然AppStoreでは公開されない)ためメタデータReject扱いとなる。昔はただのTextAreaしかなかったけど今じゃテストアカウントのID/Passwordを入力する専用のコントロールがある。

毎回お借りするのも手間なので、渋々自分のアカウントのパスワードを適当に変えて再テストを依頼した。しかし数日そのまま放置されていたのでリリースが遅くなった。アプリ内容の審査自体は問題なかったようだ。

まさか一週間放置されるのかと憤慨してもう1.0.1は無いものとして1.1でも作ろうかと期待しないで放置していたら数日後に1.0.1がひょっこりとリリースされていた。

1.1の話

パスワード変えたら自動ログインが失敗してログインできなくなるバグを見つけてしまった。次期バージョンで修正する。キーチェインに保存しているから再インストールしてもダメかもしれない。1.0.2を出すか悩みどころ。

新機能周り

なんかiOS7になってAirPlayボタンが遠くに行った気がするのでアプリ内に入れようと思う。

そして字幕とジャンプについて検討する。もともと字幕データが全然取れないような気がしていたので1.0の時はスルーしたのだけどガラポンTVサイトでは表示されていたりするしちょっと調査が必要。

あとはガラポイントなるものができた。現在のバージョンでも視聴中の番組についてガラポンTVサイトに飛べるわけだけともう少し連携が必要かなと思っていたりする。

残念ながら1.1の段階ではまだiPhone対応はしない予定。1.5とか2.0とかキリの良いところで対応できるといいなぁ。

それにしても自分のガラポンアカウントを差し出しているので審査中にうかつに使えなくなった。ガラポンTVはテレビを見る時間のない人向けのガジェットだったはずなのだが、ガラポンTVアプリ創りだしたら

_人人人人人人人人人人人人人人人人人_
> ガラポンTVを見る時間がなくなった <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

どうしてこうなった。

ガラポンTV iPadアプリ ガランチュ 1.0.1 を Submit

ガラポンTVアプリでいろいろやりたいことがあるものの、他にもやりたいことがありマイルストーンが不透明というか無いので、とりあえずバグフィックスしたものを提出。Rejectされなければ一週間くらいでAppStoreに載ると思います。

基本的にはメジャーリリースのあとにバグフィックスはお決まりのようなものだけど今のところそれほど多くの不具合は見つかっていない模様。

1.0.1 の変更点

  • 時刻表示を日本時間に統一
  • ジャンルメニューにタイトルインデックスを追加

時刻表示を日本時間に統一

何も考えずに実装したせいで海外などiPadの時間帯の設定が日本時間である場合に問題があった。ガラポンTV APIの時間指定がYYYY-MM-DD形式であり、iPadの時間帯ではなくガラポンTVの時間帯に合わせないといけない。ガラポンTVは日本に存在するはずなので日本時間固定でよい。

というわけでAPIの指定の時間を日本時間にするように修正。またアプリ内で表示する時間も日本時間にした。

日本の番組を現地時間で表示しても特に嬉しくないと思ったから。朝のニュースが現地時間の開始時刻で表示されても混乱するだけだし、どの時間帯の番組なのかは重要な番組情報でもあると思う。

ジャンルメニューにタイトルインデックスを追加

今後の追加機能でトップメニューにマイメニューのようなカスマイズ項目を作ろうと思っていた。普段からお笑いしか見ないのでジャンルメニューからバラエティまでスクロールする作業が面倒だった。

しかしよく考えればその問題の解決ならiOSのTableViewのIndextitleをつければいいじゃんと気づいて実装した。

ガランチュ 1.0.1

これだけで個人的にはだいぶ快適になった。ジャンルは最初の一文字目でいけるやんと喜んでいたがよく見ると ラマと キュメンタリーが重複していたので二文字を使うことにした。

今後のマイルストーン

基本的にはいくつかのやりたいことをやってからiPhoneバージョンを検討することになると思う。というのは機能追加でUIを検討しなおす場合、iPadとiPhoneとUIが二重メンテナンスになるのである程度UIが固まってからiPhone対応したほうが効率が良いと考えているから。

ガラポンTV iOSアプリ、ガランチュを公開した、ついでにソースも

ガラポンTVトピックスで紹介してもらったので自分でブログに書く意義をなくしてしまっていたが自作のガラポンTVアプリがAppStoreから公開された。

公式で提供されているアプリがjQuery Mobileベースのウェブアプリを貼っつけただけでvideoタグでの再生がとても小さく、しかもユニバーサルアプリでないためiPhoneサイズでしか表示されないという状況だったのでiPadメインで作っていた。作りかけのバージョンで個人的に満足してしまい公開のモチベーションが下がっていたが公式のネイティブアプリがiPad対応されてしまったので負けずに公開した。

ガランチュ 1.0.0

公式アプリは結局のところスマホアプリを単に引き伸ばしただけでタブレットの使い勝手としてはいまいちだったのでタブレットでつかうことに注目して動画をフルスクリーンにして番組一覧を画面に載せるなどTV UIにこだわった。とりあえず最初のバージョンは再生ができればいいやということで特別な機能はないがシンプルなだけに使いやすく仕上がっている。

逆に言えばつまらないアプリになっているのでもう少しはっちゃけて行きたい。

伝わりにくい機能とか、あれこれ

  • 最初のウェブ認証がよく失敗するけどもう一回やるとうまくいく、ちゃんと調べてないけどリトライを自動にすればいいのだろうか
  • メニューは右にドラッグすると隠せる
  • メニューが隠れた状態で左にスワイプすると表示できる
  • →ボタンは15秒スキップ、バッファリングがたまっていないとロードで待たされるのでCMスキップとしてあんまり効果的じゃないことは理解している
  • 日付のメニューはガラポンTVアプリAPIになかったのでデフォルト2週間にしている
    • 設定のガラポンTVの容量を選ぶと1GB->30日のように増やせる
  • 再生をポーズするタイミングで視聴履歴を更新している

視聴履歴の経緯

視聴履歴はローカル内に保存している。もともと最初バージョンに入れるつもりは無かったのだけど、デバッグ中に見ている番組の続きが気になって履歴を保存して前回最終位置から再開する機能を実装した。必要は発明の母。デバッグ中はプロセスを強制終了させてしまうので、休止のタイミングで更新するようにした。他のタイミングでも更新しているけど、続きから見たい場合は休止しておくとアプリのプロセスを落としても次回起動時に視聴履歴から再開できて無難。

今後

とりあえずニュースとお笑いしか見ていないのでトップメニューに好きなジャンルを入れるなどのカスタマイズ機能を入れたい。あとは見る番組を勧められれたいのでガラポンTVサイトとうまく連携したい。実はガランチュにはgtvidを渡して再生させるURIスキームを一応実装してるので、自作するとしても全部ネイティブアプリに閉じめなくてもいいかなと思い始めているところ。例えばお笑い番組だけ集めたサイトを作ってみてもいいかなと思っている。

ソース公開

ガランチュはソースをGPLで公開することにした。誰かバグ直してくれ、誰かiPhone対応してくれ、ガラポンTV本家で引き取って開発してくれとか他人任せ願望がある。最初他人任せ満々でGitHubでの公開を義務付けるコピーレフトにしてむしろコントリビューターとして参加させてもらうようなライセンス形態を考えたが、そんなピンポイントなライセンスはなさそうだし、仮にあっても理解してもらえない恐れがあるのでGPLにした。

代わりにガラポンTV APIのラッパーライブラリはMITで公開したので許してほしい。CocoaPodsでインストールできる。ドキュメントやサンプルは整備できていない、ちょっとしたテストコードは入っているが基本的にサンプルはガランチュ。

ちなみにガランチュは連想ゲームで決めたプロジェクト名だったのだが、最終的に良い名前が浮かばなかったのとアプリ名とプロジェクトの乖離が気になったのでそのままプロジェクト名がアプリ名に昇格した。いちおうそれなりの意味はあるのだがあまり名前は気にしないでほしい。

テレビを見る時間を割いてガラポンTVアプリを作るという本末転倒な状態だったが、次はMinecraftやる時間が全然無いのにMinecraft Mod作りたいとか謎の願望を持っている。

ガラポンTVのiOSアプリの開発 その2

前回の続き。日曜日にサッカーの代表戦を見たあとに少しガラポンTVのiOSアプリを開発を進めた。だいたいのUI仕様のイメージはできた。

ガラポンTVのiOSアプリ

最初は普通にフルスクリーンだけにしようと思っていたが、YouTubeなど他のアプリを見ていると動画のウインドウは画面の一部であるのがデフォルトでそのあとフルスクリーンに移行するものが多い。もともとクロスメディアバーインタフェースでも作ろうかと思って始めたところもあり、動画はフルスクリーンでその上にメニューを載せるというのが念頭にあった。それで他のアプリのUI仕様を見ているうちに悩んできたんだけどやっぱり最初のバージョンはフルスクリーンでいいかなと今は考えている。

実際、テレビでも画面に選挙の速報情報を入れたりして動画が画面の一部に縮小されるレイアウトは違和感がある。変に他のアプリの仕様に流されずに自分の感性を優先してみようと思う。やっぱテレビだもんなぁ。

そして前回アプリのアイコンという面倒なタスクがあることを書いたけどそれ以上に重要なアプリの名前を決めるというタスクがあった。他のガラポンAPIを使ったサービスは大体Gara〜とponではなくGaraを使うようなのでそれに乗っかればいいだろうか。

何故かガラポンと聞くとガッチャンコロコロを連想するんだけどガッチャンコロコロって言葉は通じるのだろうか。しかしガチャは今はネガティブなイメージが付きまとうのでアプリ名には使う気はないが。

ガラポンTVのiOSアプリ作ってみた(まだ途中)

連休を利用してガラポンTVのiOSアプリを作ってみた。

ガラポンアプリ

ガラポンTVとiOS

ガラポンTVはウェブサーバも動いていてコンテンツを見るウェブアプリがjQuery Mobileで構築されている。コンテンツはApple HTTP Live Streamingで配信されるのでiOSのSafariではvideoタグをつかってウェブアプリからも再生できる。

ただ、どうしてもウェブアプリということ、タブレット向けのデザインになっていないので使い勝手があまり良くない。ガラポンTVのiOSアプリも配信されているけどなぜかUniversalじゃないしダウンローダがメイン機能なのかコンテンツの検索はウェブアプリをWebViewで載せてるだけっぽいのでiPadだとウェブアプリを普通に使った方がいいレベル。

APIがあるので自分でなんとかしてくださいと解釈したのでアプリを作ってみることにした。

現在の成果

まずガラポンTV APIのラッパーライブラリを作った。CocoaPodsにしているのでそのうちGitHubにあげる。

本当はWeb認証とかガラポンのお作法があるんだけど開発中ということでガラポンTVのLAN上のIPに直接繋いでAPIを叩くという形式で、録画番組の取得と、ジャンル別、チャンネル別の階層メニューをつくって、選択した番組をAVPlayerで再生できるところまでは動いた。

わりと録画番組一覧を眺めて気になるものを再生するとか、サブジャンルで絞り込んだものから探すので最低限は使える感じ。ワンセグということで画質も低いのでiPad miniが適正デバイスなんじゃないかと思っているところ。

やり残し

とりあえず最初のバージョンでやろうと思っていること。

Web認証のログインのつなぎ込み。
再生系のボタンのアイコン作り。
再生系の制御まだ途中。
公開するならアプリのアイコンも作る必要がある(遠い目)
キーワード検索。
設定とかヘルプとか。

そのあとやりたいこと

検索条件をプリセットする。そしてメニューに追加する。プリセットをウェブかTwitterのリンクなどから簡単に共有してインポートしたい。
ガラポンAPIのお気に入りの追加・削除の対応とアプリの実装。
Twitter連携(torneのパクリ)、2chの実況と連携。
なんかソーシャル的なことガラポンWebサイトと絡められるのかよくわかってない。

悩み事

iPad前提でレイアウトしているのでiPhone向けには別の実装がいる。iPhoneっで見る人ってどれくらいいるのだろうか。iPhoneで使いたい人いたら教えて下さい。最低限自分で使えるレベルになったので若干満足しつつあってここから公開用に整形していくモチベーションが低下気味なので使いたい人いたらプレッシャーかけてください。あるいはβ版でテスト公開するのもありなので、途中のバージョンでも良いという人がいたら教えて下さい。

Android版はGaraponMateがあるから作らなくてもいいよね?そんな時間あるならまずiOS版を完成させろよと言われそう。

もともと番組表のインターフェースはいろいろ構想があって、普通の階層的なナビゲーションメニューは最初作るつもりはなかった。それはウェブアプリに任せればいいからと思っていたのだけど、とりあえずデバッグがてら階層メニューを実装してみたら案外使いやすくてこの機能をわざわざなくす必要もないかと思った。やっぱ動画を見ながらメニューを操作できるのが良い。もともとPSX/PS3のクロスメディアバー(XMB)インターフェースを再現したかったのだけど、タップとXMBはあまり合わないと思い諦めた。とはいえナビゲーション・メニューを上にかぶせるだけでもなんかそれっぽいので個人的には使いやすい。でもホントはもっと独自路線で行きたかった。昔VAIO Xであったタイムマシン機能みたいなやつとか。