p5.jsとml5.jsでWebカメラに写った顔にグリッチエフェクトをかける

  • 在宅勤務でSnap Cameraが流行っている
  • Snap CameraみたいにWebカメラの映像にエフェクトをかけるの作ってみたい
  • エフェクトかけるならglitchエフェクトかけてみたい
  • 顔だけglitchしたい

という謎な思いつきをしてしまったのでやってみた。

気軽に試したいのでjsでなんとかすることにして、glitchエフェクトをかけるのは普段使い慣れてるp5.jsを使うことにする。p5.jsでglitchしてるコードを探していたら

https://codepen.io/tksiiii/pen/xdQgJX

こんなかっこいいのを見つけたので、このコードを参考にしつつWebカメラのソースに適用する。 顔認識についてはml5.jsを使ってみる。

続きを読む

World Data Viz Challenge 2018

たまたま見つけたイベントだったんだけど、World Data Viz Challenge 2018の神戸ラウンドに行ってきた。 姉妹都市提携している神戸市とバルセロナ市が合同で開催しているイベントで、都市に関する何らかのデータを使って、都市課題の解決に繋がる可視化作品を発表するのが趣旨みたい。バルセロナラウンドは去年の11月に開催されていて、神戸ラウンドが2/16,17の土日にあった。市とも連携しているのか、神戸大学の学生のセッションが多かったのが印象的だった。

バルセロナ

あんまり知らなかったんだけど、バルセロナはヨーロッパの中でもスマートシティ化が最も進んでいる都市で、木々や信号、ゴミ箱、道路などに設置されているセンサーデータを取得して、リアルタイムに分析できるようなシステムを作っているらしい。とても先進的だ。

神戸市がスマートシティに?連携するバルセロナ市の現在(矢崎裕一) - 個人 - Yahoo!ニュース

二日目に発表してくれたTableau Japanの方の話によると、バルセロナ市が公開しているデータのフォーマットはCSVが一般的らしく、データを公開する側のリテラシーが高い印象を受けた。一方で神戸市は半分以上PDFなので、データを取り出すだけでも一苦労…。神戸市はまだ頑張ってる方だと思うけど、日本全体でみたらオープンデータを活用するのは今の所物凄く大変そうな空気を感じた。

誰のためのVisualization?

Data Visualizationというのは、どうしても見た目のインパクトが目立つので「なんか面白そうなデータがあったので可視化してみました。よかったですね。」で終わってしまうことが起こりやすい。 Visualizationは手段であって目的ではないので、そのVisualizationは誰が見るために作っているのか、見る人がどういうInsightを持つものなのかを意識して作ることが重要だな、といくつかの発表を見てて思った。

終わりに

市主催のイベントだからなのか、発表者に対する質問タイムのときに、消防署の方とか、教育委員会の給食課の方とかが出てきて、普段IT系の勉強会では出会えないような人たちの実情が聞けて面白かった。神戸市にはこれからもデータドリブンな都市づくりができるように頑張ってほしいと思いました。

データサイエンティスト養成読本の登竜門編

データサイエンティスト養成読本 登竜門編 (Software Design plus)

データサイエンティスト養成読本 登竜門編 (Software Design plus)

データをサイエンスする仕事に就く人が知っているべきことが一通り書かれている。データサイエンス未経験の人が0から学べるような内容になっていると思うが、9章の統計知識、10章の数理モデルのお話には数式がたくさん出てくるので、数学からしばらく距離を置いていた人は面食らうかもしれない。

Web系エンジニアにとっては、3章のシェル、4章のデータベースの内容は簡単すぎるので読み飛ばして良いと思う。逆に言うとめっちゃ基礎から説明してくれるので、今までこの辺のツールを触ってこなかった人にとってはありがたい章だと思った。こんなに丁寧に解説してくれるのかーと思って関心していた。

5章ではRStudioとJupyter Notebookのインストールから使い方までの説明が書いてある。Jupyter Notebookは今回初めて使ったけど、データに対して行った処理の履歴が残るし、処理内容や結果をmarkdown使って簡単にまとめてレポート化できるので、実際に手を動かしてみてとても便利なことが実感できた。Rについては、変数代入を <- で行ったり、パイプ演算子%>% だったりと見慣れない記法が多く、このキモさに慣れるのには少し時間がかかりそう。

機械学習エンジニアになりたい人のための本という本を読んだ

難しいことは書いてないので、読むのが早い人は一日で読み終えることができるだろう。 機械学習界隈のキャリアの現状、どういうジョブがあるのか、世界事情、コミュニティ、情報収集、勉強方法まで、浅く広く理解するにはいい本だった。

機械学習周りのことをつぶやいてるTwitterアカウントやおすすめのブログなども載っていてて参考になったけれど、この分野はかなり移り変わりが激しいので、数年後この情報がどれだけ役に立つかはよくわからない。そういう意味で鮮度が重要な本なので、読もうと思ってるならできるだけ早く読んでおいたほうが良さそう。

転職活動の方法とか

第5章に機械学習周りの職種に転職するための方法が書いてある。履歴書、職務履歴書の書き方や面接対策まで書いてあって親切みを感じた。書類の書き方サンプルがあったけどあんまり参考にならん気がする。*1

個人のアピールポイントを載せてない履歴書(職務経歴書)をよく見かけるけど載せたほうが良いよということが書いてあった。僕は今の会社でソフトウェアエンジニアの応募書類を見たり面接をしたりしているけれど、確かにそういう書類は結構ある。この本にはその職種につきたい理由や、どんな仕事がやりたいかとか未来のことを書くのがいいみたいなアドバイスをしているけれど、面接する側からすると、過去にどういう成果を出してきたのかをたくさん書いてもらえると、応募者がどんなことに関心があって、仕事にどういう関わり方をしてきたかがわかるので嬉しい。過去の成果に対するアピールポイントがあった上で、未来はこういう感じでやっていきたいというようなことが書いてあると、文章に一貫性と説得力が生まれていいんちゃうかと思った。

海外事情

第8章に海外事情が書いてある。アメリカのシリコンバレーだけかなーと思ったら、ニューヨークやロサンゼルスのことも書いてあって面白かった。その他に中国、ヨーロッパ、東南アジアのことも簡潔にまとめてあって、日本以外がどうなってるかを雑に知るには丁度良かった。

まとめ

各項目が短くまとめてあってブログの記事感覚で読めるし、なんか時間が無くて効率的にこの界隈の情報とかリンク集を集めたい人にはおすすめと思いました。

*1:趣味でDJやってる話いる?

Logitech Bluetooth Illuminated Keyboard K810 US配列買った

f:id:lepton9:20161126123921j:plain

これまでのあらすじ

  • MacWindows共にApple Wireless Keyboard*1を使って入力していた。
  • Apple Wireless Keyboardの浅い打鍵感が好きだった。
  • でも電池の入れ替え面倒だった。
  • WindowsならWindows用のキーボードが使いたかった。
  • コードは邪魔だからワイヤレスのキーボードが使いたかった。
  • US配列が好きだった。
  • テンキーはいらなかった。
  • AltキーはSpaceキーの直ぐ左についていて欲しかった。

そして見つけたのがK810(US配列)だった。

*1:Magic Keyboardの一個前のやつ

続きを読む

Amazon Route 53 + namecheapで運用する独自ドメインメール

スマホの契約をキャリアからMVNOに移行しようと思っていて、そうするとキャリアメールが使えなくなるから、せっかくなら独自ドメインでメールを運用してみようと思った。

独自ドメインメールの運用に必要な作業としては大きく3つがある。

独自ドメインに関しては、Amazon Route 53のレジストラ機能を使って取得したものがあるのでそれを使おうと思う。その流れでDNSもRoute 53を使うことにする。問題はメールサーバー。 個人のメール用途程度でメールサーバーを自分で立てるのはちょっと仰々しいし、セキュリティに配慮したりスパムメール対策もあったりで面倒くさそう。だからメールサーバーをホスティングしてくれるサービスを使うことにした。

メールサーバーの比較

今回メールサーバーに求めるものとして

  • 安い。月100円前後くらい
  • 2段階認証がある

を条件にした。なぜ無料ではない条件にしたかというと、無料サービスはいつ有料になるかわからないから。Google AppsOutlookの前例があるし…。

いろいろ調べた結果、namecheapというドメインレジストラが扱っているメールサービスを使ってみることにした。というかこれくらいしか丁度いいプランやってるとこ見つけられなかった。他にいいところあったら教えてほしいくらい。

Namecheap.com • Cheap Domain Name Registration & Web Hosting

続きを読む

ストリームからBPMを計算する。RxJSを使って

ボタンを叩くタイミングからBPMを検出して設定してくれる、いわゆるタップテンポ機能。 シーケンサーサンプラーなどに搭載されていて、最近はブラウザ上で確認できるサービスもいくつかある。

続きを読む