河本の実験室

河本が作ったものを紹介するブログです。こっち(https://kawalabo.blogspot.com/)から移転してきました。ポートフォリオ: http://俺.jp

2020年に作ったもの13選

今年も仕事の外で沢山作りました。気に入ってるものや話題になったものを少しまとめます。大体が「話題になったけどその後放ったらかしにしちゃいました」で終わってます。ごめんなさい頑張ります。

f:id:kenkawakenkenke:20201230191754j:plain

2019年のまとめ 

2015年のまとめ

2014年のまとめ

2013年のまとめ

Unity少し覚えた

ずっと覚えるつもりだったUnityをようやく少し覚えました。おかげで今まで面倒だったARのアイディアを沢山実現できました:

1. 置き場所から家具を選べるAR

3月に作った「既存のアプリみたいに家具を選んでから置けるか確かめるのではなくて、置き場所を決めてから入る家具を見つけるほうがいいよね」という提案です。沢山共感の声をいただき、色々記事にもしてもらいました。

実際にこれを使ってうちは庭の机とキッチンのゴミ箱を買いました。購入フローの完成度高めたり、家具販売サイト等にお話に行くのが面倒で放ったらかしにしちゃいました。

これで既製品の家具を買うだけではなく、部屋にピッタリな家具を自動生成してEMARFとかで発注できたらいいなーとか思ってます。

2. 屋内日時計

部屋の中にいても「外っぽさ」を楽しめる日時計。デバイスと太陽の位置関係から「正しい」影を計算しています。こういうちょっとしたアイディアをすぐ実現できるのもUnity素晴らしいですね。

「外出りゃいいじゃん」とか誰も言わないの優しいなと思いました。作ったときの気持ちは「tempescope」の時と少し似ていて、コロナとかを理由に引きこもらないといけないときは、部屋の空間を異世界化させるデバイスを作りたくなるんですね。

スマホそのままだと少し「表示させてる感」があるので、石の筐体にディスプレイを埋め込んで本物感を出そう、とか思ってるうちに放ったらかしにしてしまいました。

3. 縮尺の正しい太陽系AR

子供が宇宙好きなんですが、太陽や地球の距離感がいまいちピンと来てない感じだったので作ってみました。

沢山話題にしていただいたので直ぐにリリースしようと思ってたんですが、歩いてる途中で位置をロストするバグを直すのが面倒で放ったらかしにしてしまいました。(数キロ歩いたあとこれが発生すると発狂するよ。)来年こそリリースします。

ずっと家にいた

今年は(会社の遠くに引っ越したこともあり)ほぼ一年間在宅勤務してました。そのせいか、働き方を楽しくするものを色々作りました:

4. 乗り過ごし検索

「このまま会社で降りずに電車に乗り続けたらどうなるんだろう」を検索できるサービス「乗り過ごし検索」。正月に作りました。絶対本業で作らなそうな機能なので、作ってて楽しかった。まさかこの数カ月後に通勤の概念自体が消えることになるとは思いもよりませんでした。

5. ずっと祝日カレンダー

自分が平日だと思っている日に(海外にいる)同僚が祝日を満喫していることが妙に面白く感じ始めて作りました。一緒に働いている人たちが祝日だと、自分は休みじゃないのに少し自分も休み気分になるんですよね。そこで全世界の祝日を集めて毎日休みな気持ちになれるカレンダーを作ってみよう、と思ったのがこちらです。

試作して意気揚々とツイートしたら、過去に川村真司さんがほぼ同じコンセプトのカレンダーを(2010年に!)作成されていることを知りました。謝りに伺ったら「全然いいよ、一緒につくろうよ」(意訳)ということを言っていただき、川村さんと宗佳広さんと一緒に販売開始しました。おかげで自分一人では不可能なハイクオリティのデザインにしていただき、去年分は完売、2021年分はこちらで大好評販売しています:

kenkawakenkenke.stores.jp

6. ハンドソープを出すと(WHO推奨)30秒音楽が鳴るソープスタンド

コロナ時代に合わせて、手洗いを啓蒙しつつ(この頃は休校で家に居る)子どもたちにハンダ付けを体験してもらおうと考えて、こういうキットを作りました:

7. ずっとカメラ目線になる顔フィルタ

一年間仕事仲間に合わずにWeb会議だけで仕事をしていると、段々「自分」=「相手のディスプレイに映る何か」という感覚になってくるんですね。そこで、自分の見え方をいじることで、自分自身を変えるよりも簡単に自己実現ができてしまうのではないか、と思って色々作りました。例えば、プレゼンのときにカメラを見る練習するよりも、画像変換でカメラを見ているようにしたほうが手っ取り早いんですよね。キモいので一日で使うのやめたけど。

この考えを突き詰めると、例えば毎日1%ずつ自分の顔にキアヌ・リーブスを混ぜていったら、一年後はチームにキアヌ・リーブス似のTLとして認識してもらえるんじゃないか、とか考えてます。来年チャレンジします。

音で遊んだ

なんか急に、音の可視化にはまった夏でした。

8. 音の速さが見えるデバイス

ありそうで(知ってる限り)無かった、音の速さを可視化するデバイスです。大科学実験で人間がやっていたことをデバイス化した感じですね。単純にマイクとLEDがくっついた基盤で、遠くまで並べると自分の出した音が広がっている様子が見えます。

子供もパチパチ手を叩いて楽しそうでした。学校の先生とかから「授業で使いたい」という声を沢山いただいたので、販売できないか相談中です。使ってみたいというかたは是非ご連絡ください。 

余談ですが、これ夜の公園に置いていると、近くで虫がリンリン鳴るとそこだけ光ってキレイなんです。そういう展示もみてみたいですね。

9. 姿の見えないセミを見つけられるアプリ

こういう音の可視化もしてました。敢えて複数スピーカーで音源推定するのではなく、指向性マイクを使ってスキャンしながら音源推定するという人力音源推定アプリです。

レーザーカッター買った

出社できている頃は会社のレーザーカッターを使っていたのですが、100%在宅になったため家庭用レーザーカッター を買いました。おかげで気軽に家で色々切れるようになり、ちょっとした試作が捗ります。

10. ネタバレおにぎり

例えばこんな「海苔でおにぎりのネタをバラしたい」みたいなちょっとしたアイディアをすぐに試作できるんですね。いつかプリンターのように一家に一台レーザーカッターと3Dプリンターがある時代が来るといいですね。ちなみに何故か海外でも話題になりました。おにぎり好きなんですかね。

11. 壁掛け夜景

現物みないと良さが全く伝わらない、「壁掛けできる夜景」です。レーザーカッターで黒い紙に目に見えないぐらいの小さい穴を開けて、透過した光で浮遊感のある夜の地球が表現できます。沢山人に見せたいのに、コロナのせいで家族しか見せられてない・・

12. 勝手にレゴが分類される箱

これマジでLEGO様に商品化してほしい、「小さいパーツが勝手に分類される箱」です。ダイソー様、期待してます。

その他

昔指導員に『「その他」の項目を作るぐらいなら分類しようとするな』と怒られた記憶を思い出しながら、その他の作ったものです。

13. レシピの「コスパ」をデータから定量化する

ちょうど夏ごろコロッケやポテサラの手間が話題になってましたね。レシピサイトからレシピをクローリングして、料理ごとの「手間」を定量化してみました。

この分析をしてから、僕が豚の生姜焼きを作る回数が少し増えた気がします。 

まとめ

例年通り、色んなアイディアつまみ食いしながら試作ができると満足してリリースまで行ききらない年でした。なんなら去年話題にしてもらったみんなの忘れたニュースBotはサーバーを死なせたまま放置してしまったり。。

普段はここで「来年こそは全部ちゃんとリリースする」とか宣言する場所なんですが、それもちょっと違うような気もしてきました。まとまらないので終わります。

売り物に一度も手を触れずに作品販売するためのgraphic+STORES倉庫連携ガイド

思いつきで作った作品がバズったので数千冊販売したいが、家を在庫だらけにしたり梱包作業したりしたくない人(=私)のための備忘録です。

f:id:kenkawakenkenke:20201225170832j:plain

なぜ自宅で配送作業をしたくないかというと、単純に自分の品質管理能力に自信がないからです。

  • 絶対家に在庫置いてたらカレーの匂いついたり子供が落書きするよね。
  • 絶対梱包するときに髪の毛とか入るしOPP袋を指紋だらけにしちゃうよね。
  • 絶対配達ラベル貼り間違えるよね。
  • 絶対注文の状態がよく分からなくなって送り忘れたりするよね。

色々調べて印刷会社(e.g graphic)と倉庫サービスつきネットショップサービス(e.g STORES)を連携させれば印刷からお客様の手元まで一度も自分の家を経由せずに届けられることがわかりました。特に「一度も自宅を経由しない」部分についての情報がネットに無かったので、実際にやってみて分かったこと(とつまづきポイント)を似た悩みを抱えた方のために共有します。

ちなみに:

  • STORES: 自分でネットショップを作れるサービスです。BOOTH/pixiv Factory等と同じで、どこも大体同じような倉庫サービスがあり、作品を預かって注文・決済・検品・OPP袋への封入・ピッキング・梱包・発送まで全部やってくれます。
  • graphic:ネット印刷サービスです。他に沢山あるネット印刷サービスでも配送の際に「品名」さえちゃんと自由に記載できるなら同じように使えると思います。

作ったもの

ついでに今回販売したものを紹介します。発端は1月に作ったこちらです:

 思いがけなく反響をいただいたので買いたい人を募集したら1万人以上の方が手を上げてくれました。過去の経験上、実際にお金を出してくれる人は事前登録者の5~10%ぐらいなので、1000部ぐらいのカレンダーを販売する方法を調べました。

宣伝ですが、2020年版は無事売り切り、2021年版のカレンダーはこちらで絶賛販売中:

kenkawakenkenke.stores.jp

 

graphic+STORESを連携させる手順

以下の手順を行えば、端から端まで一度も自宅を介さずに(クリックとメール1本だけで)STORESで受けたオーダーに対して倉庫から発送できるようになります。

1. STORESで入庫申請する

STORESで「倉庫>アイテムを預ける」から入庫申請をします。このときに付与される入庫IDと商品IDを大事に取っておきます: EGXYZ-WABCD 商品ID:E

2. graphicで発注する

印刷をgraphic(などの印刷サービス)で発注します。その際:

  • 送り先は「1. 入庫申請」の際に表示されたSTORESの倉庫の住所を指定
  • 品名に先程の入庫ID+商品IDを明記する(めちゃくちゃ大事、一番のつまづきポイントです。これを怠ると、倉庫に着荷した荷物は「宛先不明荷物」となり、入庫されずに放置された上に数万円取られます。一回やらかしました。)graphicを使わない場合は、品名を指定できることを問い合わせで確認したほうがいいです。
  • ¥1500で分納できます。20部ぐらい自宅に送っておくと、何かと便利です。(取材のためSTORESより早く届けないといけなくなった時とか。)

STORESの入庫の案内では標準の入庫ラベルを利用するように書いていますが、入庫IDと商品IDさえ配達のダンボールに記載されていれば入庫できます。

graphicより送られる「受付日確定のお知らせ」に出荷予定日が記載されているので、これを控えましょう。

3. STORESに大量入庫を知らせる

200個以上の入庫をする際はSTORESのカスタマーサポートに連絡する必要があります。といってもメール一本で入庫数や予定日を伝えるだけです。詳しくはFAQを参照してください。

4. (graphicから発送されたら)発送をSTORESに知らせる

印刷が完了し、発送されるのを待ちましょう。カレンダー500部で6日間ぐらいです。発送されるとgraphicから発送のお知らせメールがとどきます。

STORESの入庫管理ページに「発送済み」ボタンがあります。実際に必要なのか分からないんですが、押しときましょう。僕はついでに宅配便の追跡番号をカスタマーサポートに伝えてますが、多分必要ないです。

5. 「入庫が完了しました」メールを待つ

数によりますが、graphicから発送された荷物が倉庫に着荷してから2~5日ぐらいでこういうメールが来ます:

f:id:kenkawakenkenke:20201227121240p:plain

 これで入庫作業は完了です。これ以降はオーダーが来たら「倉庫から発送する」ボタンをクリックするだけでお客様に作品を送れるようになります:

f:id:kenkawakenkenke:20201227121525p:plain

余談ですが、graphicは(おそらく不良品の発生を見越して)発注より1%ほど多く印刷して送ってくれるみたいです。なので(今の所私の経験上)500部印刷したら505部送られてきます。ありがたく頂戴しましょう。

ひっかかりポイント

  • いつまでたっても入庫完了にならない - 経験上、500部で着荷からだいたい2営業日ぐらいで入庫完了になりました。もしそれより大幅に遅れているようだと、不明品として扱われているかもしれません。STORESカスタマーサポートに問い合わせてみると状況を確認してくれます。(一度それで入庫IDの記載漏れのために不明入庫になっていることが判明し、管理手数料を取られました。)
  • 着荷してるはずなのに「着荷待ち」と表示され続ける - 仕様みたいです。入庫完了(=商品を発送可能な状態になるまで)ずっと着荷待ちと表示され続けます。少し不親切ですね。
  • 入庫不良品が出た - 入庫した商品に汚れがついていると、管理画面で「保留アイテム」として表示されます。(不良の詳細の写真などもつけてくれます。親切ですね。)カスタマーサポートにメールで「そのまま入庫してOKです」とか「自宅に返送してください」などの指示を送る必要があります。残念ながら「破棄してください」は受け入れてくれないので、無駄に送料がかかってしまいます。

で、いくらかかるの?

倉庫サービスに実際にかかったコストは以下です(2020年12月現在):

  • 入庫料 ¥18
  • 保管料 カレンダーだと¥0.2/日なので、平均2週間ぐらい保管されると想定して¥2.8
  • 配送料 ¥370

なので、カレンダー一枚につき¥390ぐらいです。ここに決済手数料も乗ります。クリックポスト(¥198)と比べてたったのプラス¥192で検品・OPP封入・梱包・配送手配までやってくれると考えると、私にとってはかなり格安です。人によってここの感覚は違うかも。

他の方法

本記事で後述するgraphics+STORES以外にも色んな方法を検討しました。簡単に紹介していきます。

自力で全部頑張る

印刷会社(graphic)でカレンダーを1000部印刷し、自宅に配送して、注文をすべて自力で梱包・配送する方法です。梱包材(数円)を除けば配送料(定形外郵便なら¥140ぐらい、クリックポストなら¥198)と自分の時間だけなので、金銭的には一番安くできます。

ただ前述のように1000オーダーを間違えずに(鼻毛とか入れずに)完了させる自信がないし、毎日そのストレスに耐え続ける気がしないので諦めました。また個人的には少し多めにお金を払ってでも、次の作品作りの時間を作りたかったこともあります。

BOOTH倉庫

後述するSTORES倉庫とほぼ同じぐらいの値段感ですが、管理・配送・決済コストを計算したらSTORESのほうが少し安くなったので、今回はSTORESを使いました。YMMV。

あと少し気になったこととして、BOOTHは「倉庫に着荷してから発送できる状態になるまで最低7日間かかる」と利用ガイドに明記していたことです。(STORESでは1週間ぐらいと表記しており、実際は2日程度で終わりました)。急にバズった作品は需要予測が行いにくいため、少なめのロットで作って在庫を継ぎ足ししていくほうが安全です。そのため、印刷から入庫までの時間がなるべく短い方法を選ぶことが大事だと考えました。実際はBOOTHも最低7日といいつつ、もっと早いのかもしれません。経験された方は、共有していただけると助かります。

Amazon Fullfilment

利用料が高かったので、あまり調べませんでした。

まとめ

清潔に大量の作品を梱包・発送する自信がない私のような人間でも、一度も手を触れずに沢山発送することが出来ることが分かりました。私のように「作ってバズったはいいけどリリースが面倒」という作品を大量に抱えている人間としては、この方法を見つけられたことでモノづくり人生が少し変わりました。カレンダー売るとか言う前にこれ知っておきたかった、という情報を書いたつもりなので、同じような状況の方の一助になれば幸いです。ちなみにSTORESのステマっぽくなっちゃいましたが頼まれてもないですし一銭も貰ってません。

河本の実験室の2019年まとめ

今年もたくさん作ったので、特に話題になったものをまとめます。

f:id:kenkawakenkenke:20191229164724p:plain

河本の実験室・2015年のまとめ

河本の実験室・2014年のまとめ

河本の実験室・2013年のまとめ

1月・AR Sensor

スマホで測ったWifi電波強度などのセンサーデータを3次元空間上に可視化することで「ここWifi飛んでんな」が出来るアプリです。去年末にプロトタイプを作り、

今年アプリとしてリリースしました:

play.google.com

いろんな人が家やオフィスで遊んだ動画を撮ってくれたのが地味に嬉しかったです。

Gigazineが紹介してくれたり、Interface誌で記事書いたりしました。

1月・ARで見る

ネットショップなどでよく見る[幅x長さx高さ]の表記を(多分)最短タップ数でAR可視化するアプリです。

ARのアプリにありがちな 「まずは専用アプリを開いて数字を入力しましょう」みたいなUXが嫌いすぎて、最も自然にユーザをARまで連れて行く方法を考えたらこうなりました。めちゃくちゃ便利です。来年はもっとARがスマホの体験の色々なところに融合していくように、頑張りたいです。

ねとらぼGigazineが紹介してくれました。

3月・寝転がってるだけで子供がマッサージしたくなるTシャツ

昔作ったTシャツを綺麗に作り直してClubTで販売してみました。

ふと思いついたアイディアを、在庫リスク0で販売できるのは本当に素晴らしい時代になったと思います。ネットメディアだけでなく、大体の国内キー局の朝のニュースや海外メディアが紹介してくれました。

5月・みんなの忘れたニュースBot

次から次へと炎上を楽しんでは忘れるネット文化が嫌で、こういうbot(@wasureta_news)を作ってみました: 

半年で4万9000人にフォローされ、また炎上ニュースに「これも一ヶ月後に忘れたニュースbotにツイートされるんだろうな」的なコメントがついているのをたまに見ることがあり、少しだけ人の意識を変えるのに役立ったのかなと思います。

ねとらぼBuzzFeedが紹介してくれました。

11月・振り返りカメラ

なんで今までなかったんだろう的な家庭版ドラレコを作ってみました。

これが家に来てから毎日のように永久保存版ホームビデオが撮れて夫婦共々ご満悦です。

その他

あまり話題にならなかったけど他にも沢山楽しく作りました。気になったらTwitter見てみてください。

ちなみに本業では・・・

Google Maps上で口コミを要約するやつを作りました。飲食店等を決めるときにとても参考になるタグが表示されることが多いので、色々探してみてください。

まとめ

実はこの年になって初めて、作った物を売るという体験をしました(Tシャツで)。研究を売るとかサービスを売るとか仕事時間を売るとかではなく「物」。個人に直接お金を頂いて物を提供するのは、物凄い(「期待はずれだった」と怒られる)恐怖と充足感を同時に感じられて、ハマりそうです。

来年特にやりたいことは:

  • プログラミング教育- 今年は色々子供と一緒に物作りをしていて、良い教育方法に色々思い悩みました。ブロック式プログラミングがいいのかとか、媒体はロボットがいいのかとか。ちょっと色々実験してみようかと思います。
  • 割愛
  • 売れる形にする- プロトタイプばかり作ってバズって喜ぶだけじゃなく、ちゃんと売れる形にまとめるのは大事だし楽しいな、と今年思えました。来年もっとやります。

「いま撮ってればよかった!」を無くす、さかのぼり屋内カメラを作った

子供と遊んでいると、予測不可能なタイミングで面白い事を言ったり、可愛い顔したり、初めて歩いたりします。そんなとき「カメラ回してればよかった!」と嘆いたことのある親は私だけではないはず。

f:id:kenkawakenkenke:20191106020510p:plain
そこで、事後にGoogle Homeに向かって「OK Google、いまの残しといて」と言うだけで過去に遡って動画を残しておけるカメラを作りました。

 

構成

f:id:kenkawakenkenke:20191106000323p:plain

素数が多く見えますが、一つ一つの要素は沢山の先人たちに踏み固められた技術です。今回の特徴はその繋ぎ方だけなので、要素の詳細説明は省きます。

動画の常時録画

まずUSBウェブカメラをラズパイにつなげて、常時録画し続けます。

  • ウェブカメラ: 僕はこういう制作には大体Logicool C920を使ってます。安くて画質いいので。
  • ラズパイ:僕が使ったのはRaspberry Pi 3Bですが、もっと新しいのあると思います。

常時録画といっても実は過去30秒だけを1秒ごとに区切って動画(TS)ファイルとして書き出し、古いファイルはどんどん捨てていってます。古いファイルを消していったほうがラズパイの容量が節約できるし、「ずっと撮られてる感」が減らせるので。

実際の録画には、ffmpegを使ってHLSで保存しています。ffmpegの設定は黒魔術感があって、正直あまり理解していません。沢山ググって色々な例を合成していった結果できたのが以下の呪文です:

ffmpeg \                   
-f alsa -thread_queue_size 1024 -i hw:1,0 \            
-f v4l2 -thread_queue_size 256 -s 640x480 -framerate 24 -i /dev/video0 \
-b:v 8000k -c:v h264_omx -bufsize 500k -r 30 -vsync cfr -g 24 \                                               
-c:a aac -b:a 256k -ar 44100 -bufsize 256k \
-flags +cgop+loop+global_header   -bsf:v h264_mp4toannexb \
-f hls -hls_list_size 120 -hls_time 1 -hls_flags delete_segments stream.m3u8

これをラズパイで走らせると、実行ディレクトリ内に「stream.m3u8」というインデックスファイルと「stream*.ts」という動画ファイル群が作られ続けます。

f:id:kenkawakenkenke:20191106003931p:plain

このtsファイル一つ一つが、撮られた1秒毎の動画ファイルです。

Google Homeから呼び出す

Google Homeから発声を受け取って、ラズパイで任意のコードを実行させる方法は、沢山ネットに載っています。「ラズパイ google home」とかでググりましょう。

僕は「OK Google、リビングの動画を残して」というと、ラズパイで実行しているPythonプログラムが通知を受け取れるようにしました。

動画を結合する

Google Homeから通知を受け取ったら、ffmpegを使って出力用の動画ファイルを作ります。

RUN_ID=`date +%Y%m%d_%H%M%S`
OUTPUT=/tmp/output_$RUN_ID.mov
MYLIST=/tmp/$RUN_ID.txt

echo "" > $MYLIST 
for file in `ls -v /var/www/html/livecam/stream*.ts|tail -n $((DURATION+1))|head -n $DURATION`;do                                        
 echo "file $file" >> $MYLIST                  
done                       

ffmpeg -safe 0 -f concat -i /tmp/mylist.txt -acodec copy -vcodec copy -y -f mov $OUTPUT

まず、録画したtsファイルを新しい順に並べ、最新の30個(=30秒ぶん)のファイル名を書き出したテキストファイルを作ります。

f:id:kenkawakenkenke:20191106011128p:plain

これをffmpegに投げて、結合しつつひとまとめのmovファイルに書き出します。これで、過去30秒を映した動画ファイルができました。

ちなみにmp4に書き出したら何故かGoogle Photosへのアップがうまくいかなかったので、movを使っています。

Google Photosにアップする

Google Photosへのアップにはrcloneを使います。rcloneとは色々なクラウドサービスのファイル操作を担ってくれる便利なツールです。

公式ページがとても親切に書かれているので、設定に迷うことはないと思います。

rclone copy $OUTPUT gphoto:upload -P

先程作った動画ファイルをアップしましょう。(gphotoのところに自分が設定したGoogle Photoのターゲット名を入れる)

やってみた

こんなふうにクロマグロのぬいぐるみで遊んでいるときに、ふと今までの出来事を撮っておきたいと思ったとしましょう。「OK Google、リビングの動画残して」とつぶやきます。

www.youtube.com

一分後ほど待つと、遊んでいるときの動画がGoogle Photosにアップされます。

f:id:kenkawakenkenke:20191106014030p:plain

こんな動画が撮られます:

www.youtube.com

さいごに・・・

  • カメラを持ち歩かずに言葉だけで「撮れる」のは本当に便利です。特に、「撮りたい瞬間にカメラを構えていなくても大丈夫」という安心感のおかげで、子供との遊びに集中できるのが嬉しいです。
  • ただし、たまに音声入力がミスって「申し訳ございません、お役に立てそうにありません」とか言われてしまいます。過去30秒しか撮れないので、これは焦ります。「OK Google、いまのを『長めに』残しといて』と言えば5分ぐらい録画を残すようにすればいいと思います。
  • 僕はカメラの未来は「ずっと録画してAIが良いシーンを選別」だと信じてますが、それができるまでの間はこういうハックでQOLをあげていきましょう。
  • 関係ないですが、上の子が初めて立つ瞬間はたまたまカメラを回していたおかげで撮れました。月イチぐらいでリピート再生する宝物です。こういうツールを使って、もっと宝物が増えたら嬉しいですね。

つまらない安全講習ビデオをディープフェイクで「自分ごと化」する

安全講習のビデオってつまらないですよね。

免許の更新、社内のeラーニング、飛行機の離陸時など、様々な場面で僕らは講習ビデオを見させられます。

いくら役者さんが迫真の演技で危険な場面を演じても、僕みたいに共感力が薄い人間にはどうしても「他人事」に見えてしまって適当に見流してしまいます。本当は大事なのに。

そこで、安全講習ビデオを無理やり「自分ごと化」する方法を考えて試してみました。

事故ってるのが自分と家族だったら流石に見るんじゃない?

役者が演じる事故映像は「もしこれが自分や家族だったら」という変換を一旦行わないと吸収できません。しかし、自分や家族が危険な目にあっている場面を見れば直接脳の「ヤバい」エリアに働きかけられるのではないかと想像します。

そこでディープフェイクを使って、事故る対象者を自分や大事な人に変えてしまえば、急に「自分ごと」として捉えられるんじゃないかと考えました。:

f:id:kenkawakenkenke:20191011004106p:plain

ディープフェイクとは、機械学習を使って映像内の人を別の人に置き換えてしまう技術です。世間ではフェイクニュースやリベンジポルノで悪名高いやつですね。上の画像では、運転者の顔を僕の顔に置き換えています。

映像で見ると、かなり綺麗に(メガネも含めて)置き換えできていることがわかると思います。(ちなみに同乗者全員僕に置き換わってます。):

 

 

元映像: (警視庁公式チャンネル) 交通事故防止 「命を守るシートベルト」 後部座席着用

元の映像では「知らん人が危ない目にあってる」ぐらいにしか見えなかったシチュエーションが、自分が置き換わることで少しだけドキドキ感が増した実感があります。(僕を知らない人からすると、知らん人が知らん人に置き換わっただけなので全く分からないかも知れませんが。) 

このような、自分や大事な人を出演させた「自分ごと化」映像を新米ドライバーや交通違反者にプレゼントしたら、少し危険の実感が増して、安全運転が望めるのではないでしょうか?

とはいいつつ、あまりに髪型が違うことや、同乗者が知らない人たちであることで、まだ少し違和感が残ります。同乗者をそれぞれ自分の家族に植え替えていけば、かなり現実感が増すんじゃないかと想像しています。あまり子供の年代が合っている映像が見つからなかったので試せませんでした。

 

他にも自転車事故を起こす河本の映像を作ってみたり:

元映像:(JA共済DVD)「危険を予測してみよう! ~被害事故~」

骨格が違いすぎて、あまり当てはまってない気がします。

 

下水機能が停止したトイレを流して怒られる河本:

 元映像:(国土交通省公式チャンネル)災害時のトイレ、どうする?

 

調子に乗って極秘情報をネットで漏らす河本:

 元映像:(警視庁公式チャンネル)みんなで学ぼう!サイバーセキュリティ ①情報流出防止対策

これはちょっと似てますね。やはりもとの毛髪量が似てるほうが良さそうです。

やりかた

"faceswap"という、顔の抽出、学習、合成、映像の書き出しまで全部やってくれるツールを使いました。ほぼ、工夫の要素はなく、使うだけです:

GitHub - deepfakes/faceswap: Deepfakes Software For All

おわりに

映像を知っている人にすることで「他人事」を「自分ごと」にするという考え方は、色々応用がききそうです。例えば少し違う角度では、歴史写真に適用すると興味深い効果があるのではないかと思います。

教科書やドキュメンタリーなどで見すぎて実感が湧きにくくなった歴史的な写真や映像に自分や家族を出演させることで、「そこにいたのも自分と同じような人間なんだ」という実感を増す効果があるんじゃないかと想像します。モノクロ歴史写真をカラー化すると急に親近感と現実感が増すのと同じだと思います。なんとなく色々面倒くさそうなので、アップするのは自重しますが。

ディープフェイクは悪名が轟いていますが、視点を変えるとこのように(少しだけ)人のため世のためとなるような使い方がまだまだ転がっている気がします。faceswapは驚くほど簡単に使えたので、是非新しい使い方を考えて試してみてください。

「見せたい人にしか見えない注意書き」を色々作ってみた

見せたい対象者以外には見えない注意書きを一人ブレストして5つほど試作してみた、という話です。

なんで?

注意書きが駅や公園や道路などの公共空間に溢れかえっているのが最近気になっています。特に、多くの注意書きは自分には関係ない or 既に知っている事であるため、本当に見ないといけない内容が埋もれてしまっています。

Web広告の分野では、興味のないバナー広告を見すぎるとBanner Blindness*1 が発生することが知られていますが、同じように注意書きも意識から排除してしまっている自分に気づくときがあります。

ならば、注意書きもWeb広告と同じように個々の利用者にとっての関連性を向上させることで、(1)伝えるべき注意がもっと伝わるようにしつつ、(2)注意書きの総量を減らして空間の外観を守ることができるのではないしょうか?つまり、見ないといけない人しか見えない注意書きを作ることが出来ればいいのでは?

そんなことをボーッと考えていたら色々なアイディアが浮かんだので、簡単に試作してみたものを紹介していきます。実現性の薄いものも含まれますが、考えるきっかけになれば幸いです。

その1:フラッシュを焚くと怒る展示台

美術館、観劇など、フラッシュ撮影が禁止されている場所は沢山あります。展示物や体験への悪影響を考えての切実な注意書きですが、個人的には美しい展示室内に「フラッシュ禁止」マークがいたるところに掲示されることによる外観への影響が気になることがあります。そこで、せめて知ってか知らずかフラッシュを焚いてしまった人を叱り、二回目以降を妨げる方法としてこんなのを作ってみました:

 黒い再帰反射シートの上に文字を切り出した黒いマスクを敷くと、文字が見えなくなります。(ぴったり合わせて塩ビシートをかぶせると、ほぼ見えなくなります。)

f:id:kenkawakenkenke:20190804025041j:plain

それをフラッシュ撮影すると、文字(「NO FLASH💩」)だけが光って見えるという仕組みです。

f:id:kenkawakenkenke:20190804025057j:plain

こうすれば、ルールを守っている人からは黒い台にしか見えない一方、ルールを破ってしまうと明確に怒られ、しかもインスタ映えしない写真に変えてしまえます。

f:id:kenkawakenkenke:20190804043707p:plain

また再帰反射材を使っているおかげで、他の人にとっては体験が壊れることなく「ただの黒い台」に見え続けます。


もちろんTwitterコメントで指摘されているように、一度目のフラッシュを止めることも大事です。しかし美術館の入り口で「フラッシュ撮影は禁止です」と伝えた上で、それでも撮影してくるような困ったさんは、おそらく既存の「フラッシュ禁止」サインでは防げません。このように「ルールを守っている人の体験は壊さず、」「ルールを破ったら思いきり怒る」注意書きのほうが、結果的に効果が出ると思うのでしょうがどうでしょう?

その2:ヘッドライト無点灯だと怒る看板

再帰反射材を逆に使って、「ライトをつけていないと叱る看板」を作ってみました。通常の「ヘッドライトつけろ!」看板は(他の注意書きとの兼ね合いから)トンネルに沢山つけることはできませんが、これならば無点灯の人だけにターゲティングして叱れるため、トンネル中にびっしり設置しても構わないわけです。

黒い再帰反射材の上に白い切り抜きマスクで文字を書くと、ヘッドライトをつけている人からは文字が白飛びして読めず、無点灯の人からは黒い文字が見える仕組みです。

なんかトンネル以外にも色々応用効きそうな構造ですね。

その3:撮ろうとすると怒るTシャツ

イベントとかで「今日は写真撮られるとまずいなー」っていう日、ありますよね。実はiOS/Androidの標準カメラはデフォルトでQRコードを読み取り、内容を画面上に表示させる機能があります。その機能をハックして、自分を撮影しようとしている人の画面上に任意のメッセージ(例えば「写真やめてね😘」)を表示させることを思いつきました:

肉眼で見るとなんの変哲もないQRコードTシャツですが、スマホカメラで撮影しようとするとこんなふうに画面上に注意書きがポップアップします:

f:id:kenkawakenkenke:20190804040618p:plain

写真は撮る前に声をかけるのが礼儀ですが、これならば勝手に撮ろうとしてくる不届き者にだけ、少し強めに叱ることができます。スマホカメラ以外には無力ですが。

せっかくなのでこちらでオーダーできるようにしときました:

clubt.jp

撮影者にだけメッセージを送れるのは、他にも色々応用が効きそうですね。例えばSNOWでかけてほしい修正パラメーターを指示したりとか。

その4:搭乗時間が近づくとパニクる搭乗券

未だに紙の切符は飛行機や地方の電車等で健在です。久しぶりに紙の切符を手にすると、出発時刻とスマホの現在時刻を見比べたりするのが意外とストレスになったりします。そこでこんなのをつくってみました:

時間が経つと消えるインク」を使って搭乗時間に近づくと「ヤバイヨ」メッセージを表示させる切符です。

f:id:kenkawakenkenke:20190804041352p:plain

実際は消え方が温度など色々な外部要因に依存するため今の所あまりぴったり制御できていません。なので搭乗券のような重要な用途での実現は少し難しいかもしれません。

一方、「客に渡す物に少し経つとメッセージが現れる」という方式は色々応用効くんじゃないかと思います。持ち帰りの食品を食べ終わったころぐらいにパッケージングに「ちゃんと分類して捨ててね!」と表示したり。

その5:逆走しようとすると怒る通路

人の動線が複雑な駅って、矢印だらけですよね。自分の行き先とは関係のない矢印を全て視界から消せたら、どんなにすっきりするでしょうか。それを実現しようとしたのがこれです:

 紙をシャッター上に分割し、一つの方向から見ると緑色の矢印、反対方向から見ると赤色の「✕」が見えるようにしました。こうすることで、R2D2ダースベーダーも(自分から見て)右を歩けばいいことが明らかなので、ぶつからずにすみます。

レンズアレイを使えば2方向だけじゃなく多方向にも対応できますね。

通常の指示表示では、他の注意書きとの兼ね合いからせいぜい「矢印」や「右側通行などの文字」を表示することしかできません。しかしこの方式ならば、視覚的に「床全部を赤くする」といった思い切ったことができるため、非常に混み合った駅でもすぐに歩くべき場所がわかるという良さがあります。

他にも・・・

  • タバコの煙を吐くと、プロジェクターの映像が煙のなかに結像して目の前に広告が出るとか
  • 一定速度を超える(か下回る)と可聴域に入る不快音を作って、スピード違反をへらすとか
  • 歩道を自転車で走っている人にしか見えない看板とか

色々作れたら面白いんじゃないかなぁと考えてます。

さいごに

それぞれ実社会に実装するには更にひとふた工夫必要なアイディアを、色々試作してみました。個人的に、電子工作・プログラミングでも(なんならもっとちゃんと)解決できる問題を敢えて「アナログな物の構造」だけで解決することに不思議な楽しさを感じました。

*1:広告っぽいものを全て意識から排除して「見えなく」なってしまう現象

「ポケットに入れたままメールを読む」を実現する『モールス通知』を作った

こんなアプリを作りました:モールス通知

いろんなアプリの通知を文字や音ではなく「振動」で伝えるAndroidアプリです。モールス信号が分かる人なら、訓練すればポケットに入れたままメールが読めるようになるはず。

動画を見ると雰囲気が分かると思います:


なんで?

最近歩きながら大事なメールを待ち構えることがあり、スマホが振動するたびに立ち止まって画面を見ている自分に気づきました。「ポケットからいちいち出さなくても要件がわかればいいのに!」と思って作ってみました。

イヤホンで聞けばいいじゃんとか言われがちですが、僕は「歩きイヤホン」反対派です。むかし後ろから近づいてくる不良に気づかなかったことがあるので。気をつけよう。

仕組み

Play Storeでアプリを公開しつつも、今回はソースをGithubにアップしました。何故かというと少し危ない「通知へのアクセス」許可をユーザーから頂くからです。自分だったらソースも公開されていない個人アプリに通知閲覧を全て許可するのは怖すぎるので、せめてソースを読めるようにしておきました。

せっかくなので、以降はソースを参照しながら作り方を解説していきます。

通知を受け取る仕組み

本アプリは、他のアプリが受け取った通知を全部読み取れる必要があります。これは「NotificationListenerService」といって、危険でパワフルな権限です。通知が読めるというのは、メールや電話番号が(通知バーに表示されている部分は)すべて読めるということです。信用してないアプリには絶対許可しちゃだめです。

AndroidManifest.xmlにintent serviceを追加するだけでは足りなくて、

<service android:name=".NotificationIntercepterService" android:label="@string/app_name" android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
  <intent-filter>
    <action android:name="android.service.notification.NotificationListenerService" />
  </intent-filter>
</service>

Androidの設定の「通知へのアクセス」画面でユーザーに明示的にアプリへの許可を与えてもらう必要があります。

そうすると、スマホに来るすべての通知が受け取れるようになります:

    override fun onNotificationPosted(sbn: StatusBarNotification) {
        val packageName = sbn.packageName
        val text = sbn.notification.tickerText ?: return
        // textに「Kenさんがリツイートしました」みたいな文字列が入ってる。
        ...
    }

ちなみにStatusBarNotificationからどの程度情報が取れるかはアプリによってまちまちでした:

  • TwitterだとDMの送信者や内容
  • Lineもメッセージの送信者や内容
  • Gmailアプリは送信者の名前だけ

想定していた用途では送信者の名前さえわかればいい気もするので、だいたい十分です。

執筆時点でのアプリはTwitterだけ少し特別な変換を行って、リツイートは「rt」とだけ再生してます。他に特別な表示の仕方をしてほしいアプリがあったら要望教えてくれたら作るかもしれません

和文をモールス信号に変換する仕組み

さて、Lineに「お腹空いた。帰り何時?」みたいなメッセージが来たら自分のアプリで受け取れるようになりました。英文ならばこれをそのまま欧文モールス符号に変換するだけです。
一方、和文モールス符号漢字をそのままモールス符号に変えることはできないため、もうひと工夫必要です。
今回はAndroidから使いやすい形態素解析ライブライのKuromojiのお世話になりました。
形態素解析とは文章を見て単語(正確には形態素)に分けつつ、読みや品詞を判別する作業です。
Kuromojiの出力のToken#pronunciation()を使って、

原文 : お腹空いた。帰り何時?
変換後:オナカスイタ。カエリナンジ?

というように読みに変換し、和文符号に割り当てます。

モールス符号に合わせてスマホを振動させる仕組み

ただモールス符号列を振動長に変換してandroid.os.Vibratorに渡すだけです。
つまづく点としては、配列で渡す最初の値は待ち時間だということです。気をつけましょう。

まとめ

ぼく実を言うとモールス信号全然わかんないんですが、このアプリを一日使っているだけで「・ー・ ー」(RT; リツイート)が分かるようになりました。
多分どんなに訓練しても正確に通知内容を読み取るのは難しいと思うのですが、「何言ってるのかわかんないけど何となくあの人からのメールな気がする」という直感を育てるのは出来そうだと感じました。
正確な情報伝達をせずに「なんとなく」で伝えるアンビエントな情報伝達手段、意外といろんな場面で使えるんじゃないですかね。
画面を見ずに「いま日経平均が2万円割れた気がする」とか言えるの、中二病心をくすぐられません?