2019年前半に公開したOSS

GitHub - asus4/facial-landmark-annotation: Facial landmark annotation tool

動画の中の顔のランドマークを半自動で読み込み、ずれている部分は手作業で修正するツール。 初、Vuex - Typescript class base対応

[https://twitter.com/asus4/status/1122994785873289216:embed#Added some features: copy & paste, delete, etc... and published on GitHub Pages. https://t.co/GFXppefbrA #VueJS https://t.co/QUOmHBG8S8]

GitHub - asus4/vocabulary-book

8月から息子が現地の保育園に行くので、レストランで使えるドイツ語とか要らないから、ピンポイントでこれだけ知っておけばなんとかドイツ語の保育園を生き抜ける単語帳が欲しくて作った。マスタデータはGoogle Spread Sheetにおいて誰でも編集できるように。やっきーのママ友に手伝ってもらいました。URLを入れ替えれば、自分の独自のSperadSheetも読めますよ。

vue-cliのテンプレート生成がいい感じなので、最近ちっさなプロトタイプ作るときも、

  • Vue.js
    • class base TypeScript
    • Sass
    • Pug
  • Netlifyで公開

の構成が固まってきた。

GitHub - asus4/real-emoji

これのソースコード。思いついてから30分で作った。最近顔認識をやりすぎている…。vue-cliでテンプレート作ってNetlifyでサクッと公開お手軽〜〜

GitHub - asus4/unity-poisson-blending

Poisson Blending、OpenCVでいうSeamless CloneをUnityのCompute Shader上で実装したもの。 当初、もう少し高速なアルゴリズムなどもリサーチしていたが、これで0.5ms 以内で800イテレーションをマークしたので、GPUの速さに感謝。同じ処理をOpenCV for UnityでCPU実装すると4msかかった。

https://camo.githubusercontent.com/35ab2d62a3f479ae69e4caa66b997f1c19605166/68747470733a2f2f692e696d6775722e636f6d2f474851517777722e6a7067

GitHub - asus4/mqtt-unity

MQTTnetをUnity上で動かすサンプル。案件用に作ったものの結局違う方法を使ったので、実戦投入はしてない。

GitHub - asus4/voice2midi

声をFFTにかけて、周波数帯ごとにMIDI Noteに変換してみる実験。ちょっと動作が微妙なので、ちゃんと計算し直す。

GitHub - asus4/faust-unity-playground

Faustというオーディオプログラミング言語をUnity上で動かすサンプル。Faust自体は超初心者だが、WebAudio, iOS, Andoid, PC Native, VSTなどへ書き出し機能があり、とても可能性がある。UnityのカスタムオーディオエフェクトをFaustで作れるということ。結構エラーがあって本家FaustにPR送ってやっと動いたりしたので、深堀りしたい人以外は、Unity連携はまだ様子見かもという感じ。

GitHub - asus4/unity-speech-recognizer: iOS Speech Recognizer for Unity

iOSのSpeechRecognizer機能をUnityから使えるプラグイン。安定性は、有料Assetを買うほうが良い。私の場合はこの機能で足りた。

2018年に公開したGitHubリポジトリ

2018年にGitHubに公開したツールなどをまとめました。 (頑張った感を出すためにフォークして少しだけ改良や、メンテしただけのも含む)

unity-timeline-sync

GitHub - asus4/unity-timeline-sync: Synchronize multiple Unity Timeline via UDP
複数UniyのTimelineの再生時間をUDPで同期。一台がマスター。残りをMulticastで同期させる想定。
ネットワークの遅延時間を計測してオフセットできるほうが良さそうだけど、ローカルネットワークで十分に早い環境だったので今回は未実装。

https://camo.githubusercontent.com/197aaaa3c1dac460876226974cbe3a013c5f8dd6/68747470733a2f2f692e696d6775722e636f6d2f6d4f4d5331326b2e676966

avs

GitHub - asus4/avs at settings
respeaker社のAVS(Amazon Voice Service)をフォーク。アレクサのスキルではなく、スピーカーの方を自作できるSDK。 マージしてほしかったけど、本家の開発者のレスがないのでこのまま。

  • Setting API対応で、日本語も使えるように
  • CUIのみのRaspberryPiでもデバイス登録できるようにした

AVSを作るときはAmazon本家の avs-device-sdkが一般的だけど、こちらはc++コンパイル時間かかりすぎるので、プロトタイプ用途には向かなかった。あとRaspberryPi Zeroは非対応。respeaker/avsのほうはZeroでも動く

GitHub - alexa/avs-device-sdk: An SDK for commercial device makers to integrate Alexa directly into connected products.

OscJack

GitHub - asus4/OscJack: Lightweight implementation of OSC server/client in C# (Unity)
keijiroさんのOSCライブラリをマルチキャスト対応した。軽量で設計がすてき

unity-taptic-plugin

GitHub - asus4/unity-taptic-plugin: Use iOS TAPTIC Engine from Unity
タプティックエンジンをUnityから扱えるやつ。ちょっと更新した。ゲームのエフェクトと振動を組み合わせたい。 f:id:asus4:20190120212500p:plain

go-osc-capture

GitHub - asus4/go-osc-capture
ネットワークを流れてるOSCを録画 / 再生するCLIMac/Window使える。

# Record to capture.csv
osccap record -port 7000 osc_capture.csv

# Listen from multicast addreass and record to the csv file
osccap record -multicast 225.6.7.8 -port 7000 osc_capture.csv

unity-osc-capture

GitHub - asus4/unity-osc-capture: Capture and playback OSC(Open Sound Control) packet in Unity
OSC録画のUnity版。途中でGoに移ったので、未完成かも…。

Kml.swift

GitHub - asus4/Kml.swift: Simple kml parser for swift
GoogleMapのKMLファイルを、iOSのMapKitに読み込んで表示するもの。地味に人気ある。あまりメンテしてないけど、Swift4まで対応しておいた。

https://cloud.githubusercontent.com/assets/357497/23339742/cb32971a-fc6b-11e6-9ec1-7415617285d2.png

twitter-kit-unity

GitHub - asus4/twitter-kit-unity: Twitter Kit for Unity UnityからTwitterSDKを使う。Twitter社開発のやつをフォーク。動画投稿機能を追加。

twitter-kit-unity-sample

GitHub - asus4/twitter-kit-unity-sample: This is a simple sample for Twitter-Kit-Unity 上の使い方サンプル

ARKitMapping (Unity)

GitHub - asus4/ARKitMapping: A view dependent rendering example with ARKit
ARKitでiPhoneの座標をPCまで送って、View dependentなプロジェクションマッピングしようと思ったけど、プロジェクションマッピングをするとARKitの精度が落ちるのでやめた

iVidCapPro-test

GitHub - asus4/iVidCapPro-test
iVidCapProというUnity-iOSで画面録画できるライブラリがちょっと古かったので、Unity2017でも動くように修正した

unity-replaykit-test

GitHub - asus4/unity-replaykit-test
ReplayKitの動作テスト

SimpleMapper

GitHub - asus4/SimpleMapper: Simple Mapper is a simple Syphon client for a video installation and a projection mapping.

https://github.com/asus4/SimpleMapper/raw/master/images/capture.png
ずいぶん昔に作った、デジタルサイネージ用のSyphon入力をホモグラフィ変換して、投影するだけのアプリ。
前職で四角形を出すだけでMadMapperいらんやろ。と言われカッとなって作った。
スリープしないし、常に最前面に表示されるし。マックでサイネージするときに地味に使うことがある。

MoFace

GitHub - asus4/MoFace: Morph face and voice on Web.
インビジさんとWebオーディオ実験した

UnityMusicPlayerPlugin

GitHub - asus4/UnityMusicPlayerPlugin: Access MPMusicPlayerController from Unity UnityからiOSのMusicPlayerを使えるようにした。

まとめ

プラグイン・ツールとかの公開が多いなあ。コンテンツ本体を出せることはほとんど無いのでプライベートリポジトリが多い。
だんだんクオリティも上ってくることを信じて、2019年も質より量で上げていきます。

保育園の送迎を助けるLine Bot

ex-Kayacアドベントカレンダーの5日目です。
​​昨日の投稿は堤修一さんの技術書の著者になるためにやったことでした。

近況

​​本題に入る前に、近況を
​​2011年にカヤックに新卒で入社。Flasherとして入社するはずがiPhoneFlash非搭載事件があったので、何も出来ない子として入社。先輩と2人でUnityを始める。その後、展示、IoT、ミュージックビデオなど色々やらせてもらいました。 →カヤックで作ってたもの

​​2014年にフリーランスとして独立 & dot by dot inc.に所属 →dot by dotで作ってるもの
​​​​今年2018年9月にドイツ、ベルリンへ移住しました。フリーランス & dot by dot継続中です。

asus4.hatenablog.com

引っ越してまだ2ヶ月ちょい。やっとビザが出て生活できるようになってきたばかりです。ドイツでの苦労話はおいおい聞いてください。今日はこの話を書きます↓ ​​

​​保育園送迎を助けるLine Bot

モチベーション

我が家は私がフリーランス、妻が正社員(デザイナー)、子供1歳です。世田谷区の保活は大変でしたが、期間限定で入れてくれるところが見つかり、4月から共働き復帰しました。

フリーランスの私のほうが時間に自由が効くため、保育園の送迎は基本的に
朝:妻
夕:私
でした。保育園送迎を初めてから気づいたのですが、送迎のママ・パパは自転車が主な交通手段です。都内では車での送迎が禁止のところも多く、満員電車に子供は載せられない。毎日タクシーを使うわけにもいかない。必然的に自転車になるのです。

普段の我が家のスケジュールはこんな感じでした↓

f:id:asus4:20181206104223p:plain

割とうまく回っている気がします。子供が生まれる前はかなり長時間働いていたので、超集中して働く様になりました。
ところが、自転車にとっての一番の弱点が降るとスケジュールが狂います。

雨のときのスケジュール

f:id:asus4:20181206104304p:plain
​​ 朝はいつもより早く出ないと、ただでさえ短い勤務時間が更に減るし。
午後から雨が降っても、一日中モニターに向かっていると気づかず、いざ自転車で迎えに行こうと外に出ると、雨。仕方なくタクシーで迎えに行ったこともありました。

これはミスがでるな…と。
なんとかミスを減らそうとしました。

初号機:IFTTTで雨を教える

Slackを始めプログラマーフレンドリーなツールは沢山ありますが、妻はSlackを使っていなかった、できるだけ普段からよく見るツールにしたいと思いLineに通知が飛ぶようにしました。
そんなに開発工数をかけてもしょうが無いので、最速でつくれるものから始めました。

IFTTTで雨を天気予報を教えるだけです。

IFTTTは色々な条件をトリガーに色々なサービスを動かせるものです。

実装工数10分

f:id:asus4:20181206111049j:plain

ちなみに会社からかえるときにラインするは、GPSで私の位置をトラッキングして、オフィス周辺2kmから出ると「今から帰ります」と妻にラインするボットです。仕事に集中するとお迎えを忘れる危惧が合ったので、無事に迎えに言ったことを自動で妻に通知する様にしました。(やり過ぎた自動化)ちなみにこのアプレットは時間を指定できなかったので、昼間に打ち合わせで電車に乗ったときにも発動するバグがありました。

改訂版: IFTTT + AWS Lamdaで自分の条件にあった完璧な通知をする

​​ 運用してみて、土日も雨の予報が飛ぶし、当日の朝に雨が無いときも。​​結構通知がうざいなと。通知の自動化あるあるではないでしょうか…。
慣れというのは怖いもので、多すぎる通知を勝手に無視してしまうようになりました。

そのため、大事な通知だけ送るように、Lineへの通知をカスタマイズしました。
普段の仕事の延長で考えるとRaspberryPiなどでやるところですが、勉強を兼ねてAWS Lambdaでつくりました。

作った機能

  • 朝 6:00 :その日の夕方に雨が振りそうなら、予めバスで通勤するようにお知らせ
    • 雨の強さをお知らせ
    • 平日のみ通知
  • 夕方 16:30: 雨が降っていたら、自転車で帰れないから、早めにバスに乗った方がいいとお知らせ
    • 雨の強さをお知らせ
    • 平日のみ通知
  • GPSでオフィス(渋谷)から離れると実行。
    • 平日かつ、お迎えの時間(夕方)のみ通知
    • 打ち合わせの移動、昼間の移動はフィルタリング
    • ついでに保育園の入り口のロック番号を4桁を通知(4桁も覚えられない…)

使ったAPI・ライブラリ

最終的にこんな感じになりました。

https://cdn-ak.f.st-hatena.com/images/fotolife/b/blog-media/20180905/20180905164141.png

おかげなのか、せっかく作ったから意地なのか、(忙しいときは変わってもらったことも合ったけど)、保育園のお迎えは一度も遅れずいけました!

調教なしで歌声合成できるSinsyを試してみた

ボーカロイドに似ているけど調教なしでもいい感じの歌を生成できる技術Sinsyを試してみました。マルコフ連鎖 - HMM 方式らしいです。(あまり詳しい事は書けない)
こちらのサイトで、MusicXML形式ファイルをアップロードすると、サーバーで音声にして返してきれくれます。 Sinsy - HMM-based Singing Voice Synthesis System

ニコニコ動画で探すとサンプル音源が見つかります。楽器とミックスするとかなり違和感少ないし。以前仕事で、ボーカロイド x ボカリス調教を頑張っていた身からすると神のような技術。
dic.nicovideo.jp

また、CeVIOというSinsyエンジンを元にしたエディターも発売されています。ちょっと触ったけど使いやすい。
SinsyはMusicXMLという楽譜が読めなきゃつらいフォーマットですが、こちらは、ピアノロールで作れます。
CeVIO Official Web

一応、音大卒プログラマーとして久しぶりに楽譜を編集してSinsyを触ってみました。五線譜 久しぶりすぎて大変だった。

MusicXML方式については、MuseScoreが使いやすかったです。
無料で使える楽譜作成ソフト | MuseScore

SourceForgeで公開しているライブラリは2015年で止まっていますが、DNN版を開発していて、Web版では新しい実装が用意されているそう。 勉強のために、macOS用のXcodeプロジェクトにしてみました。依存関係整理するだけで動きました。よいライブラリ。 github.com

ベルリンに引っ越しました。

ベルリンへ引っ越してきて一ヶ月と少し経ちました。

直接会った方には話したものの、報告出来ていなかったのですが、先日やっと3年間のフリーランスビザが出たので報告です。

9月から一家3人、私、妻、息子(1歳)でベルリンに引っ越してきました。一ヶ月くらいドタバタでしたが、やっと生活のサイクルが出来てきてほっとしております。これからやってくる寒い冬と長い夜にめげなければ、しばらくベルリンで生活をしてみようと思います。

なぜ海外に?

理由はいくつかありますが、

フリーランスは転職出来ない

2014年に面白法人カヤックから独立してフリーランスになり、4年目に突入しました。最初の年は生きていくのに精一杯だったのですが、4年も経つと慣れてきて、流れがわかってくる。もちろんプロジェクトの度に日々成長はあるものの。最初の年に比べ鈍化を感じました。あー次の目標を立てて自分にストレスをかけようと。会社員の場合は、転職がこれに値するかもしれません。フリーランスの場合はもう転職出来ないので…どうしようか?と考えたときに海外に行こうと。

また、元カヤックの@shu223さんを始め、海外で活躍する人が身近にいて情報を発信してくれていて。海外で働くことに関して、漠然としていたものから、現実的なビジョンを持てるようになったことも大きいと思います。

地方に移住との比較

日本では東京都世田谷区に住んでいました。
妻のブログにあるように、保育園に入れず、保育園の空きがある地方への移住オプションを検討。でも地方に移住してフルリモートワークにするなら、もっと遠くでも良いのでは。と考えました。

dual.nikkei.co.jp

補足としては、ベルリンは移民が増え、東京と同じような保育園事情です。現在こちらでベビーシッター+保育園探しをしています。


他の理由は飲み会のときにでも聞いてください。

なぜベルリンに?

プログラマーは海外勤務の転職のオファーももらうと思います。私は仕事の内容に惹かれるものがなく。いくら海外で挑戦したいと言っても、面白くない仕事をしてまで行きたくはありませんでした。今のフリーランスとしての仕事も素敵なものが多かったので。同じように働ける場所を考えました。 ベルリンは、他の都市にくらべ、フリーランス・特にアーティストのビザが出やすいようです。
(最近は移民が増え、以前よりは厳しくなったらしいです)

  • 同じ業種の仕事がある

元々、音大卒→美大大学院卒→プログラマーという経歴です。アートやデザインに近いインタラクティブデザインをしています。狭いジャンルの仕事なので、同じ業種で世界規模で活動しているチームが多いということも重要でした。

Rhizomatiks真鍋大度さんの公表している「List of interactive design companies/studios」は参考になりました。 docs.google.com

  • 生活費が現在と同水準でいける

当面は日本のリモートワークもやりつつ、現地での仕事も探そうとしています。そう考えると、日本の倍以上稼がなくては行けない場所ではリスクが高く、同程度の生活費でいける場所が良いと思いました。
以下は70㎡あたりの家賃のマップです。東京都心部と同水準でしょうか。ニューヨーク、パリ、ロンドンなどに比べると安いです。実際、ベルリンでは世田谷区の家より少し安い位の家に住んでいます。

https://www.immobilienscout24.de/content/dam/is24/ibw/dokumente/mietmap-berlin-2017.jpg Miet-Map Berlin - Der Mietpreisfahrplan für die Hauptstadt

dot by dot in Berlin

フリーランスであると同時に、クリエイティブチーム dot by dot inc.の一員でもあります。

dot by dot inc.

数人からdot辞めるの?と質問をもらいましたが辞めません。dot by dotもすでに2人が大阪からのリモート。 またニューヨークを拠点とするPARTY NEW YORKとのアライアンスパートナーで、同じSlack上でニューヨークとつながったりして。リモートワークに慣れていることも後押ししてくれました。実際、代表の富永さんに相談したときも即答で良いねと返事をもらいました。

おわりに

子連れで海外なんてすごい勇気だなー。ともコメントもらいましたが、妻と子供が楽しく生活できること優先で、駄目だったら帰ってこようと思います。失敗したときにちゃんとリカバリーできるようにしておけば、ある程度のリスクは許容できるかなと。WEBでの海外移住情報は、失敗体験が書かれることが少ないので。駄目だったらその時のこともブログに書こうと思います。

この移住にあたり、私の周りの人達はみんな応援してくれて。今年は本当に多くの人に頼って助けてもらってきました。ありがとうございました。

今後、私も何かしら助けられることがあれば、やっていきたいなという気持ちです。