movファイルからLive Photoを生成するLoveLiverにGUIをつけた

f:id:banjun:20160213202915p:plain
Release OSX GUI Application · mzp/LoveLiver · GitHub

インドアLive Photo業界には mzp/LoveLiver というLive Photo生成ツールがある。

mzp.hatenablog.com

これを使って下記のような手順を踏めば,好きな動画の一部をiPhoneのLive Photo壁紙に設定できて便利。

しかし何度もやっていると,QuickTimeで3秒選んでトリムして保存して,LoveLiverのコマンドライン引数を書いて,というのが意外と手間に感じる。 というわけでOSXアプリケーションにすべく,GUIをつくった。

リリースしたGUIアプリはここの LoveLiver-1.0.0.zip からダウンロードできる。
Release OSX GUI Application · mzp/LoveLiver · GitHub

f:id:banjun:20160213203953j:plain

GUIにより,3秒動画を切り出して保存する必要はなくなり,単に使いたい動画をGUIで開けばよくなった。 Live Photoを生成するには,ポスターフレームを設定し,Live Photoを開始したい位置へシークし, Create Live Photoする。 コマンドライン版と同じようにLive Photo用のJPGとMOVを保存したあとは,Photos.appで自動的に開くようにしたので,Photos.app側でImportを押せばフローが完了するようになっている。

これで日々溜まっていく手持ちの動画のLive Photo化が捗るはずだ。

今後の課題

just worksな感もまだあるので,ざっくりと考えていること:

  • 3秒以外の長さを指定する
  • 切り出しをプレビューする
  • UIをなんとかする
  • Sketchを体験版から正式版にする(31日以内)

開発ネタ・雑感

今回のぶんのPull Requestはこちら。
github.com

  • もともとiOSで開発した NorthLayout※ikemenOSXアプリに適用してみた。
  • デフォルトのMainMenu.xibの編集は,メインウインドウの削除のみ。xibはあまり触りたくないがデフォルトのメニューは殺したくなかった。
  • 動画ファイルごとにウインドウを出すのであれば,NSDocumentControllerに任せてしまうのが早そう。ウインドウを閉じずにアプリを終了したときのResumeで再オープンも自動的に対応する。
  • NSDocumentControllerに登録するDocument Typesについては,Swiftクラス名はモジュールプレフィックスが必要だった。アプリ側ターゲットにいると意識しないが, LoveLiver.MovieDocument とする必要がある。あるいは @objc(MovieDocument) class MovieDocument とかにしてobjcに同名でエクスポートする。
  • 最近はNSWindowControllerとNSViewControllerがある程度いけるので,ドキュメントごとのxibは不要で,NorthLayoutのみでいけた。
  • AVPlayerViewとAVAssetExportSessionのおかげで,再生と切り出しはわりと簡単にできた。
  • キャプチャは requestedTimeToleranceBefore = kCMTimeZero requestedTimeToleranceAfter = kCMTimeZero しないとずれたフレームのキャプチャになる。デフォルトだとダメ。
  • fastlane/gymOSXアプリでも使えた。
  • アプリアイコンはSketchで描いてみた。色はデレステのデフォルトステージ衣装から拾った。操作に慣れたい。

WeakStreaks カンスト

前回のエントリで49週だったweak streaksをカンストしました。

www.instagram.com

githubからは1年分のcontributionsを取得しているのですが,53週目は丸々一週間は無いため,ここだけ日単位で気を使わないと53週連続が取れないというプレッシャーがありました。 しかも,Apple Watchのグランス用WeakStreaksの実装は52週までしか出ないようになっていて,どうやら1年が52週だと思っていたフシがあります。

https://github.com/codefirst/WeakStreaks/blob/e7950117f2f10af61a1198f664ed510b525bce9e/Common/WeekStreaks.swift#L19

縦一列灰色というのが無い状態に。

f:id:banjun:20160131234656p:plain

ともあれweak streaksチャレンジはこれで一段落になります。

退職のお知らせと2015年振り返り

f:id:banjun:20151230235924j:plain

退職

banjunです。 新卒から5年目になる会社を退職しました。ここ4年くらいはiOSアプリをやっていました。2014年には念願のWWDCにも参加していました。 小さい会社ではないのですが,そこでのiOSエンジニアとしてはトップレベルになってしまったこと,そういう状況において組織のなかでのポジションや展望が5年経って見えてきてしまったことから,新しいチャレンジをすることにしました。

就職

年明けから東京にある会社で働きます。iOSアプリをやる予定です。

ほしいものリストはこちらです。就職祝いいただけると嬉しいです。 http://www.amazon.co.jp/registry/wishlist/NRGJ2Y9E71GR

引越し・無職期間

転職にともない,長野県から東京都へ引越しました。 有給もそれほど残っていなかったこともあり,2週間ほど準備期間ということで無職になってみました。 国民健康保険に加入する等の,就職していると普段はできない手続きとかができました。 いくつかのスケジュール制約から,長野と東京を何往復かしていて,さらに最後には車も手放したので,ばたばたしているうちに暮れになってしまいました。

2015年はなにをしていたのか(で,誰?)

メインプロダクトとしては,iOSSKK入力キーボードのFlickSKKのバージョンアップの続きを。

FlickSKK

FlickSKK

  • JUN BAN
  • ユーティリティ
  • 無料
https://github.com/codefirst/FlickSKK

サブでAsakusaSatelliteのiOSアプリを書いていたのですが, https://github.com/codefirst/AsakusaSatellite-ios

ちょうどそこで使っているsocket.ioの公式Swiftライブラリが出たので,CocoaPods対応を。 https://github.com/socketio/socket.io-client-swift/pull/7

iOSアプリでコードでレイアウトするときの最速のプラクティスをpod化。 https://github.com/banjun/NorthLayout

今年後半はコードでのautolayoutが再度活発化してきてますが,制約をひとつひとつ書くよりVisual Format Languageで一気通貫に書くのがラクです。 これは洞爺湖で天体のメソッド巡礼をしつつSHIROBAKO一挙をみながらやりました。ちなみにSHIROBAKO巡礼のほうは松本近辺はほぼ自力で特定して行きました。

ちなみにNorthLayout方式はtvOSでもほぼそのまま動くのですが,tvOSのUIとしていいのかどうかはまだこれからです(これはtvOS発表日にやりました)。 https://github.com/banjun/PartyPlay-ios/pull/1

前職でGitBucketを導入・担当していたのでbugfixとか。 https://github.com/gitbucket/gitbucket/pull/697

CocoaPodsのレガシーソースコード対応とか・・・。 https://github.com/CocoaPods/Xcodeproj/pull/239

f:id:banjun:20151230235944p:plain

Apple Watchではgithub contributionを描くグランスを作りました。 私には通常のstreaksを伸ばすのは難易度が高かったので(プロデューサー業もあるので・・),日数のstreaksではなく週単位のstreaksであるweak streaks(弱者の)を導入してカウントしました。49週まで続いたのでそろそろカンストできそうです。

f:id:banjun:20151231000007j:plain

他に今年行った開発合宿先,イベントなど

それから,ここ10年くらいはブログ書かない暮らしだったのですが始めました。