PechatとMESH(動きタグ)をつかってしゃべるぬいぐるみを作った

Pechatというおもちゃを借りたので、少し遊んでみました。

pechat.jp

これ、なかなかよくできています。今回はうちにあった指人形に入れて2歳の娘に渡して、スマホで遠隔操作してお喋りをすることができました。

スマホでセリフを選ぶのがちょっと手間で、適当にボタンを押してしまったり。操作が忙しくなっちゃうので歌をうたわせて間をもたせたり。もうちょっと改善してくれるともっと良くなりそうです。

どうやら、Pechatというデバイスは単なるBluetoothスピーカーであって、Pechatアプリから音声を流しているだけなのですね。なのでうっかりYouTubeを開いたりするとPechatから再生されてしまいます。注意です。ちなみに、PechatアプリはPechatからしか再生しない仕組みを入れているようなので、無料のアプリだけ利用することはできないみたいです。

で、前に買ったMESH(動きタグ)と連動させてみようと思いました。

meshprj.com

MESH(動きタグ)が振動した時にスマホから音を鳴らす、というのは簡単にできます。何個かの音をランダムに鳴らすというのも下のようにすれば簡単にできます。

f:id:Akiyah:20170605012852j:plain

この状態でPechatをBluetoothスピーカーとして接続すれば、MESH(動きタグ)の振動でPechatが喋るようになります。あとは人形に入れて振るだけです。

MESHもPechatもスマホありきのデバイスなのに、こうして連動させるとあたかもスマホがいらないように振舞ってくれて、ぬいぐるみが独立して動作しているようで楽しいです。(実際にはBluetoothでつながっている必要があるので、スマホ必須なのですが)

MESHにはスピーカータグはないので、PechatをMESH用のスピーカーにするのは良いアイデアだなと思いましたよ。Pechatは単独でも楽しいので普通に使うだけでもオススメですけどね。

週刊少年ジャンプ、週刊少年マガジン、週刊少年サンデーの作品の人気安定度

akiyah.hatenablog.com

の続きです。このデータはみてて楽しいのでほんと感謝です。

前のエントリーでは週刊少年ジャンプだけを扱いましたが、週刊少年マガジン週刊少年サンデーのデータもあったので、Tableauのユニオンを使ってくっつけて扱いました。 

縦を人気(掲載位置の平均)、横を安定度(掲載位置の標準偏差)にして散布図を作りました。全部は数が多すぎるので、100話以上ある作品に限っています。

Tableauのウィンドウをすっごく拡大してとったスクリーンショットが下の画像です。

f:id:Akiyah:20170511094911p:plain

上に行くほど高人気で、右に行くほど安定しています。散布図として正の相関の傾向が見えますね。中央あたりに見える青い大きい丸が、「こちら葛飾区亀有公園前派出所」です。

右上の作品は、ずっと人気で安定していた名作です。拡大してみるとこんな感じ。

f:id:Akiyah:20170511094923p:plain

「ワンピース」はダントツですね。「おれは鉄平」、「一球さん」、「ハリスの旋風」、「金色のガッシュ!!」が続いていますが、私は知らない作品です。。。「DRAGON BALL」、「暗殺教室」も同じくらいの位置ですね。高人気の作品が安定しているのは当たり前で、ずっと人気があるから先頭近くに掲載されていたのでしょうね。

f:id:Akiyah:20170511094917p:plain

右下、つまり、不人気で安定している作品って、不思議ですよね。不人気なら続かないはずなのに。みてみると「もう、しませんから。」、「ピューと吹く!ジャガー」、「王様はロバ〜はったり帝国の逆襲〜」などです。実はこれらは人気作品で、雑誌の最後尾に固定して掲載されていた作品なんですよね。掲載位置が人気を表しているわけではない、という例ですね。でも全体の傾向からしたら外れ値みたいなものですね。

f:id:Akiyah:20170511094920p:plain

このデータを作る目的は、じつは一番不安定な作品を知ることでした。なので不安定作品を知るために左のほうを見てみると、「無用ノ介」、「あらし!三匹」、「ふたり鷹」と書いてあります(読んだことない)。その次はだいぶ上の方に「サーキットの狼」ですね。不安定なのに平均人気が高いというのはすごいです。これも読んだことないのですが、不安定&人気ぶりを知りたいので読んでみようかな。

私の一番好きな漫画である「SPACE ADVENTURE コブラ」もこの不安定&人気のあたりにいました。このへんは人によっては大好き、という作品が集まっているのかもしれません。上の張ったTableau Publicでは100回以上の作品のみを表示していますが、表示する最小連載回数を減らして全部表示することもできます。右上のテキストエリアにタイトルを入れると探してくれるので、自分の好きな作品を探して遊んでみてください。(Tableau Publicってこういう時便利!)

VueとMathJaxで数式エディタを作ってみた

jp.vuejs.org

Vueの勉強のために、↑このMarkdownエディタをマネして数式エディタを作ってみました。

Markdownエディタをちょっと変更すればいいだろうと思っていたけど、MathJaxTeXのテキストをHTMLテキストに変換するようにはなっていないので、Vueと相性が悪くて、いろいろ試してwatchを使う形にしました。

やりたいこととしては、HTMLの数式を画像に変換してtwitterに投稿することなのですが、ちょっと調べると簡単ではなさそうです。

週刊少年ジャンプの掲載順データを見てると楽しい

qiita.com

を読んでwj.jsonをRで読み込んで遊んでいたところ、wj.jsonで遊んでいる人の記事が出ていました。

ima.goo.ne.jp

この記事で書いているグラフはシンプルで見やすくてイイですね。Tableau Publicでマネしてみました。

1週間毎のグラフだとギザギザすぎるので、移動平均をとってなめらかにしたグラフもつけてみましたよ。今回は掲載順に関する時系列のグラフを作っただけですが、wj.jsonのようなデータがあればいくらでも遊べますね!

オープンデータ、とは言わないのかもしれないけど、データが公開されているということのパワーを改めて思い知りました。

マストドンのインスタンスを立てたけどそのあとどうすればいいのか

話題のマストドンインスタンスを立ててみました。 

akiyah.com

↑ここです。おひとりさまインスタンスのつもりです。(ただ、会員登録は閉じていません。)

AWSでつくりました。↓のチュートリアルをバッチリ参考にさせていただきました。ドメイン(akiyah.com)は以前とっていたので、それ以外はほぼ完全にこのまま作業しました。

webfood.info

インスタンスを立ててはみたけど、実はマストドンのユーザーとしての使い方がいまいちよくわかっていないです。

アカウントはインスタンス毎に取るものだとおもって、 akiyah@mstdn.jp、 akiyah@mathtod.online、 akiyah@everydon.com、 と作ったのですが、それぞれ連動するものではないらしいですね。じゃあ、どれかをメインにしたらいいのかなと考えて、せっかくだからと自分のインスタンスを立てて、自分のドメインで作ったアカウントをメインアカウントにしようとしてみました。

で、いざ、立てたインスタンスを見てみると、、、

f:id:Akiyah:20170430202034p:plain

さみしい、、、

てっきり、連合タイムラインにガンガン流れてきて、それを見ながらリモートフォローをしていけばいいと思っていたのですが、連合タイムラインにも自分の発言しか存在しないのです。

f:id:Akiyah:20170430201757p:plain

サーバー情報を見ると、接続中が2個のインスタンスです。最初は0個でした。これが少ないから連合タイムラインが流れないのでしょうね。ただこの接続中インスタンスを増やす方法知らないです。なぜ0から2に増えたのかもわからない。。。他のインスタンスの親切な管理者の方に接続してもらった、とかですかね。

まあ、インスタンスの接続は別にいいとしても、 メインアカウントakiyah@akiyah.com )でリモートフォローを増やしていかなければ。akiyah.comの連合タイムラインはなにも流れていないのでmstdn.jpの連合タイムラインを見てリモートフォローすればいいのかな。とはいえ2つのドメインのアカウントを使い分けて作業しないといけないので面倒なのですが。。。

いろいろわかっていないのですが、せっかくインスタンスも立ち上げたことだし、手探りでやっていこうと思っています。

日本の高校数学の四分位数の求め方はRの9種類のどれとも違う

こんな驚きのツイートを見かけました。

まず、Rに9種類も四分位数が実装されているのがびっくりですよね。

?quantilesで調べてみると、

type

an integer between 1 and 9 selecting one of the nine quantile algorithms detailed below to be used.

と書いてあります。9種類もあるのは本当だった!

英語のWikipediaのQuantileをみるとわかりやすく9種類を解説してありました。ちなみに、たまたま気になってR-2の式を確認したのだけど、ちょっと間違えていると思います。

もっと丁寧に書いてあるのがQuartiles_in_R.pdfです。9種類のtypeに違いが出る場合を4種類のデータで示しています。下の画像は、data12の表で、data11、data10、data9もあります。

f:id:Akiyah:20170420092903p:plain

 

さて、本題です。日本の高校数学の四分位数は、これらとは違うのでしょうか。高校の教科書は持っていないのですが、ベネッセの解説を見つけました。

kou.benesse.co.jp

データを小さい方から順に並べたとき,中央値に相当するのが「第2四分位数」であり,

下位(中央値より小さい方)のデータの中央値が「第1四分位数」
上位(中央値より大きい方)のデータの中央値が「第3四分位数」

となります。

と書いてあります。なるほど、定義としてはわかりやすいですね。でもRのquantileとは定義は違いますね。quantileはn分位数が出せるけど、この高校定義だとn=4の四分位数に限定されています。

さて、定義は違うけど、計算結果はRの9種類のどれとも違うのでしょうか。確認するために、Quartiles_in_R.pdfで使っているdata12, data11, data10, data9で計算してみました。 

DATA Q1 MEDIAN Q3
data12 <- c(2,3,5,7,11,13,17,19,23,29,31,37) 6 15 26
data11 <- c(2,3,5,7,11,13,17,19,23,29,31) 5 13 23
data10 <- c(2,3,5,7,11,13,17,19,23,29) 5 12 19
data9 <- c(2,3,5,7,11,13,17,19,23) 4 11 18

Quartiles_in_R.pdfと見比べてみると、確かに全部一致するものはないですね。type=2に一番近いですがdata9の時にtype=2は5,11,17ですのでちょっと違います。というわけで最初のツイートは正しいことが確認できました。

Rは9種類も四分位数の定義があるのに、なんで日本の高校はさらに新しい定義を作るのだろう、と最初は思ったのですが、ここまで計算してみるとちょっと考えが変わってきました。Rは9種類の四分位数(quantile)を実装しているけど、四分位数じゃなくてn分位数に対応しているために定義は少しややこしくなっています。一方、日本の高校の定義は、「中央値より下の中央値」「中央値より上の中央値」という感じで、わかりやすいんですよね。n=4の四分位数に限定の定義ですが、確かに教科書に載せるにはこっちの方が適切なのかも。と思いました。

 

実践のための基礎統計学 (KS理工学専門書)

実践のための基礎統計学 (KS理工学専門書)

 

ちなみに、今読んでいるこの本の四分位数は、定義の形はちょっと違うけど、Rのquantileのtype=7(default)と同じ値になるようでした。よかった。

AgileJapan2017でモブプログラミングに飛び入り参加しました。

AgileJapan2017でモブプログラミングに飛び入り参加しました(飛び入りというか、後ろで見てようかなと思ったら座らされちゃった)。参加者は、7人くらい。

お題というか言語はelmというもので、参加者全員が知らない言語でした。みんなで調べながら動くものを作るという場を作るためにそういうマイナー言語を選んだみたいです。

まずJoshが紹介してくれたのがモブプログラミング用のタイマー、モブスターです。

github.com

指定した時間が来たらディスプレイを黒くして、次のドライバーを教えてくれます。

f:id:Akiyah:20170414172004p:plain

elmは、初めてだったけどどうやら関数型言語で、HTMLを作るのに便利だそうです。オンラインの実行環境があったのでここでモブプログラミングしました。

f:id:Akiyah:20170414172404p:plain

最初にハローワールド書いて(これはサンプルを実行しただけ)、assertメソッド書いて単体テストできるようにして、ローマ数字の足し算のお題を解き始めました(I、II、III、IVのみ出てくる演算に関してはできた)。

まあ、わけわからないですよ、初めての言語だし。でもみんなで知恵を出し合って、なんとかそこまでできたのでした。パチパチ。

モブプログラミングのコツ(教えてもらったこと、私の思ったこと)
  • 周りのナビゲーターが次にやることを指示して、ドライバーは手を動かすだけにする
  • モブスターを使ってドライバーを(10分とか)定期的に交代する
  • 周りのナビゲーターはみんなに聞こえるように大きな声で指示する
  • そこ、その行、と言ってもわからないので、行番号を数字で指摘すると良い
感想

やってみて、elmのような初見の言語や技術をみんなで学ぶ場としてモブプログラミングをするのはすごく良いなと思いました。デバッグとか、設計の方針の共有とかもそうだと思います。

あと、今までも同僚とやっていたみんなでディスプレイを見ながらプログラミングするという状態は、だいたいのところモブプログラミングだなと思いました。今までやっていたよと。ただ上に書いたようなコツを使った方がより効果的なんだなとも思いました。

モブプログラミングは普通の開発でも使うものなのですかね。そこらへんが不明でした。ずっとモブプログラミングでも良さそうでもあるし、週に1日というような運用でもありそうだし。そのあたり、詳しい人に聞いてみたいです。