僕は発展途上技術者

CODE マイクロソフト公式解説書 読了

Amazon の購入履歴を見たら、2014年3月となっていて、購入直後から少しずつ読んでいた記憶があるから、かれこれ5年近く経ってようやく読了したことになる。僕の今年の一大ニュースだ。

CODE マイクロソフト公式解説書
日経BP社 (2018-02-13)
売り上げランキング: 5,553

最初と最後の方は一気に読み進めることができたのだが、読むのに時間がかかったのは中盤、チップの話あたりだろうか。

コンピューターの仕組みの概要を知るには良書だと思う。自分で設計したプログラミング言語を作ってみようかな、と少し思わせてくれたり、コンピューター周りの仕組みを少し気にするようになるかもしれない。読む前と後では、コンピューターやソフトウェアを見る目が少しだけ変化したと思う。

オープンソースプロジェクトに貢献すれば人生が変わるかもよという話

ml5.js という機械学習のJSライブラリのことを調べていて、機能が足りないと思ったので Pull Request を送っていたところ、先ほどマージされた。

» Show the version number of the library. by champierre · Pull Request #283 · ml5js/ml5-library

ml5.return とWebコンソール画面に入力すれば、今現在使っているml5.jsのバージョンを返してくれるというごく簡単なものなんだが、シンプルな実装方法で提案できたので、なんだか褒められていてうれしい。

1つ目のコメントをくれている Daniell Shiffman 先生はThe Nature of CodeというProcessingの本を書かれていたり、The Coding Trainという人気のプログラミング学習動画シリーズを続けられていて、僕はちょっとしたファンだったので、有名人に会えたみたいなうれしさだ。

僕のオープンソースプロジェクトに対する貢献はそれほど多くはない。

今では、たいていの種類のソフトウェアはオープンソースになっていて、ソースコードが手に入ります。ソースコードを見て、ある機能に興味があったとき、自分が実現するとしたらどう実現するかを知る。そうした「知る」ための能力は、エンジニアの武器になります。優秀なソフトウェア開発者は、だいたいソースを読むことが好きだったり得意だったりします。

» 「オープンソースへの取り組みはエンジニアにとって強力な「武器」になる」(後編)Ruby言語開発者 まつもとゆきひろ 氏 |ギークアカデミー より

とあり、僕はWebサービスやプロダクトを作ることは好きなのだが、ソースを読む方はあまり得意ではないので、優秀なソフトウエア開発者でないことは自覚している。

でも、サラリーマンからプログラマーそしてフリーランスのエンジニアに転身していくきっかけを与えてくれたのはオープンソースプロジェクトへの貢献だった。

2003年にPOPFileというオープンソースの迷惑メールフィルターの日本語化に貢献し、プログラマーになりたいと強く思うようになった。

» POPFile 関連のエントリー

その後、スタートアップのウノウに転職し、そのウノウからPOPFileの製品版であるクイックPOPFileを出すことにもなった。

先に紹介した 「オープンソースへの取り組みはエンジニアにとって強力な「武器」になる」(後編)Ruby言語開発者 まつもとゆきひろ 氏 |ギークアカデミー にはこう書かれている。

例えばですが、Rubyのプロジェクトに参加してメジャーコントリビュータになれば、有名になって、上司からの扱いが変わる可能性もありますよね。転職もできる。

今までは、仕事は会社から与えられるもので、面白い仕事が当たればラッキーだけどそうじゃない場合もあったわけです。ところが、オープンソースの活動で自分の名前が表に出れば、今までとは違って「武器」を手に入れることができる。 

POPFile への貢献は、30を過ぎ経験がない僕でもプログラマーとしてスタートアップでやっていけるんじゃないかという自信を与えてくれたし、何よりプログラミングの楽しさを教えてくれた。

POPFile のときは、SourceForge にホスティングされているcvsでバージョン管理されたプロジェクトにパッチを送るという方法で、今は GitHub のレポジトリに Pull Request を送るという洗練された方法に変わったが、自分が書いたコードがマージされたときの喜びは何ら変わっていない。

GitHub にホスティングされているオープンソースのプロジェクトに参加する方法は以下のQiitaの記事に良くまとまっているので、興味がある人はこれを読んでOSSの開発にぜひ参加してみてください。僕のように人生が変わるかもしれません :)

» 意外ととっつきやすいOSS開発参加方法まとめ

はてなダイアリー、2019年春に終了

はてなダイアリーが終了するそうだ。

» はてなダイアリー、2019年春に終了 「苦渋の決断」で「はてなブログ」へ統合

はてなダイアリーは、僕がアメリカに住んでいた頃に愛用していて、多いときには一日に5回くらい更新していた。愛着があったサービスだっただけに残念。

はてなダイアリーの記事は、このRailsで自作しているブログに移行してはいたのだが、日付が一部きちんと移行されておらず誤って1969年に作成した記事となっていたのを、この際にすべて正しい日付に更新しておいた。

このブログの右下のアーカイブを見てもらうとわかるのだが、一番古い記事は2002年4月。17年間も我ながらよく更新し続けてきたと思う。

国立国会図書館に行ってきました

年を取ってくると時間が経つのが速いといいます。一年なんかあっという間に過ぎ去ってしまいます。

» 最近時間が経つのが早い、と感じたらチェックしたい5つのこと

には、

Bufferは5つの提案をしています。どれも「時の流れを遅くするには、脳が理解するのに時間を要するような新しい刺激を与えること」という根本的な考え方に基づいています。

とあって、その5つの提案の一つが

新しい場所を訪ねる:新しい環境では、香り、音、人、色、肌触りなど、多量な情報が脳に流れ込みます。

です。

昨年、これらを心がけて、香港や中国(深セン)、シンガポールなど今まで行ったことのない国に行ってみたりしたのですが、案の定今までよりも一年が長く感じられました。今年も今までやったことのないことにプチ挑戦したり、行ったことのないところに行こうと思っていたのですが、変わったことは特に何もしないうちに一月が過ぎようとしていて、「これはまずい」と思ったのでした。

そこで、いつか行ってみようと思う場所をメモしてある僕のToGoリストの中から、「国会図書館」を選んで行ってみることにしました。

永田町の駅から警備がものものしい自民党本部などの横を歩いていき、5分くらいで着きました。仕事が終わってからの帰りに寄ったので到着は17:30頃。すっかり暗くなってしまいました。

向かいには国会議事堂が見えます。

そしてこちらが入り口の前のオブジェです。

ちなみにだいたいこういうところにはあるだろうなと思っていたら、ちゃんとありました。まちクエストのクエストです。


初めて入館するということで、利用カードを発行してもらいます。氏名や住所を用紙に記入して提出し、発行まで5分ほど待って下さいと言われ、その間に荷物をコインロッカーに預けます。この時間帯は空いていたので、発行には5分もかからなかったと思います。初期パスワードが書かれた用紙と案内のパンフレットもあわせてもらいました。 普通の図書館と違って国会図書館には、書棚が全くありません。かなり大きな館内ですが、デスクや閲覧スペース、そして端末ばかりです。発行された利用者カードをPC端末の横に置かれたリーダーの上に置くと、IDが表示され、初期パスワードを入力すると、[NDL ONLINE(国立国会図書館オンライン)](https://ndlonline.ndl.go.jp)にログインできます。そして読みたい本を検索し、「資料の請求」をおこないます。 国会図書館では、本を借りることはできず、この資料の請求をおこなうと、少し経つと受け取りカウンターよりその本を受取ることができ館内で閲覧することができます。しかし、[納本制度](https://ja.wikipedia.org/wiki/%E7%B4%8D%E6%9C%AC%E5%88%B6%E5%BA%A6)により、国内で出版されるあらゆる本・雑誌が所蔵されているので、ここで読めない本はないというのが凄い。 国会図書館は19:00までやっており、到着時17:30だから十分時間があるなと思っていたのですが、初期登録に時間がかかったのと、資料の請求は18;00 までということで、端末にログインしたときには請求できる時間はあと10分ほどしか残されていませんでした。とりあえず自分の本「Scratchで楽しく学ぶ アート&サイエンス」と「Raspberry Piではじめる どきどきプログラミング」を検索してみました。
Scratchで楽しく学ぶ アート&サイエンス
石原 淳也
日経BP社
売り上げランキング: 18,572

それで気づいたのですが、「どきプロ」の方はこどもの本に分類されており、こどもの本は国際こども図書館に所蔵されています。こちらは実は上野にあるのですね。「アート&サイエンス」の方は、大人の本に分類されており、こちらは国会図書館の本館に所蔵されていました。カートに入れて、「資料の請求」ボタンをクリックしたのは締切3分前くらいでした。

「ここで読めない本はない」と書きましたが、厳密にはこどもの本は上野に行かないと読めないなど、ほかにも分野によっては別のところに所蔵されているのかもしれません。NDL ONLINEは、実は図書館内に限らずどこからもアクセスできるので、心配なら事前に検索しておいて、所蔵されている場所を確認しておくといいのかもしれません。Scratch 関連の本だと、ほとんどが国際こども図書館所蔵ですが、昨年のもう一冊のおとなシリーズ「おとなも学びたいプログラミング Scratch入門」や「Scratchではじめよう! プログラミング入門」は国会図書館所蔵です。

10〜15分、しばし待つと、受取カウンターでリクエストした本を受け取ることができるようになります。資料が受け取れるようになったかどうかは、NDL ONLINEでステータスを確認することができ、スマホでも確認することができるので便利です。カメラは持ち込み禁止ですが、PCやスマホはOKですし、利用することもできます。撮影は禁止なので、館内の写真を撮りたかったのですが一枚もありません。

リクエストした自分の本を受け取り、「自分の本が国会図書館に所蔵されているぞ」という感慨にしばらくひたったあとは、新たに本をリクエストすることはもうできなかかったので、少しぶらぶらして、本を返却し帰途につきました。もう少し時間があれば、絶版になってしまった読みたかった本など閲覧したりといろいろと楽しめたと思います。

本好きな人には楽しめる場所なのではないでしょうか。ぜひ機会があれば、訪れてみて下さい。

現在他の国では常識で、近いうち日本でも起こるかもしれない未来を予測してみる

» セブンとローソン、成人誌販売中止へ 8月までに

だそうだ。

2002年か2003年頃、サンフランシスコに住んでいて、長男がまだ2歳頃に日本に遊びに帰ってきたときにコンビニに成人雑誌が売っていることにとても違和感を覚えた。カリフォルニアではありえないことだったからだ。公共サービスの整備のされかたや、街の清潔さとかは東京の方が上だなあとは思ったのだけれど、そこだけとても後進国に思えたものだ。それから15年経って、ようやく成人誌を公共の眼に触れるところにおかないという点では先進国レベルに追いついたと言える。

今、アメリカや他の先進国では当たり前で、まだ日本では採用されていない事柄を列挙してみると、これから日本で起こることを予測できるかもしれない。10年〜15年経ってから、「ほら、僕の未来予測あたっていたでしょ」と言えるように、いくつか挙げてみよう。

満員電車がなくなる

サンフランシスコの地下を走るBARTはめったには混まないのだけれど、2000年のおおみそか、新世紀を祝うための花火を観に行こうと市街に向かう列車に乗ろうといたときのこと。そこそこ混んではいるのだけど、東京の感覚ではまだまだいけるでしょ、という混雑具合において、列車に乗り込もうとしたところ、「もういっぱいだから乗らないで、次の電車を待ってね」というようなことをすでに乗っている乗客に言われた。なるほど、そういう感覚なのか、ととても新鮮だった。昨年、旅行した台北においても、すこし混んでいる地下鉄のホームに入ってきたら、入り口のところに並んでいた人たちは無理して乗ることはしなかった。おそらく、これが先進国の常識なんじゃないだろうか。赤の他人に触れる、なんてことは相当失礼なことであり、触れていなくても半径数十センチくらいのパーソナルスペース以内には入らないようにするのがマナーと考えられている。

そこそこ満員のエレベーターが来たら、人を押してまで入る人はいないだろう。そんな人は非常識だ。電車でも同じことになるのではないだろうか。

横断歩道で歩行者が立っていれば停車が徹底される

カリフォルニアで横断歩道に歩行者が横断待ちしていれば、常識的な運転者であれば必ず停車していた。日本でも教習車では、そうするように習うのだけれど、皆がやっているということで、卒業してしまえばほとんどの人がこのルールを守らない。カリフォルニアで徹底されていたのは、破ると厳罰が待っているからなのかは理由は良く知らないのだが、本当に良く停まってくれて感動したものだ。

自動運転になってそれが徹底されるのか、あるいはいたるところに監視カメラが置かれて、ルールを破ったときにすぐに摘発されるようになることによってかはわからないが、希望とともにそうなるのではないかな、と予想しておく。

緊急自動車が通行するときに、他の自動車は避けることが徹底される

横断歩道の問題と似ている。カリフォルニアでは、緊急車両のサイレンが聞こえたら、一般の乗用車は道の端にピタリと寄って停車するのが徹底されていた。またスクールバスが停車して、そのことを合図するライトが点滅しているときも同様だ。これは確か自動車免許の筆記試験の頻出問題だった。無視して、あるいは気づかず追い越そうものなら容赦なくスクールバスの運転者にナンバーをひかえられ、違反チケットを切られるという話だった。

緊急自動車の方は、もしその走行を邪魔しようものなら蹴散らすような勢いで、もの凄いスピードで走り去っていく。人命最優先という態度をこれでもかと見せつける。ひるがえって日本(東京)だと、サイレンが鳴っていても素知らぬ顔で走っている乗用車がたまにいて、緊急自動車もそういった車がいることを想定した遠慮がちなスピードで走っている。赤信号の交差点に進入するときには、「すみません、すみません」なんてスピーカーで断りながらノロノロと走っていく。自分が患者やその家族だったら、もっと急いで欲しいと思うものだ。

何を優先すべきかを考え、その優先事項を達成するためには、ほかのリスク(サイレンが鳴っていても停まらない自動車と衝突して事故してしまうかもしれないというリスク)は負うという考え方に少しずつ変わっていくのではないだろうか。

こうした日本以外の先進国では常識であることが、数年後は日本でも常識となっていくことは多い。現在、海外在住の人が予想する、近いうち日本でも起こるかもしれない未来をぜひ聞いてみたい。

「Scratchで楽しく学ぶアート&サイエンス」で紹介しているプロジェクトをScratch 3.0で動作確認し、スタジオにて公開しました

拙著「Scratchで楽しく学ぶ アート&サイエンス」で紹介しているプロジェクトが、Scratch 3.0でもちゃんと動くかどうかを検証しました。

Scratchで楽しく学ぶ アート&サイエンス
石原 淳也
日経BP社
売り上げランキング: 87,190

結論から言うと、書籍に載っている説明通りにプロジェクトを作って、問題なく動くことを確認しました。

ただいくつか3.0ならではの注意点があったので、それらをコメントとして追加して、書籍に載っているプロジェクトの完成例をScratchのスタジオとして公開しました。

» Scratchスタジオ - Scratchで楽しく学ぶアート&サイエンス(3.0対応)

各プロジェクトのリミックスは大歓迎、質問や、間違いの指摘はスタジオのコメント欄に残してくれても良いですし、Twitter ID: @jishiha でも受け付けています。

動作確認をしているときに気づいたScratch 2.0と3.0との違いとともにそれら注意点を紹介したいと思います。

塗りつぶしの色は、カラーパレットで指定できなくなった

コスチュームを塗りつぶすとき、Scratch 2.0では以下のようなカラーパレットで色を指定していた。

Scratch 3.0では代わりに色、鮮やかさ、明るさをスライダーで選択できるようになった。

細かく色を指定できるようにはなったのだが、色をあたり判定などに使うときにスプライトをまたがって同じ色を指定する、という場合にパラメーターの各値を正確に合わせる必要があるのでややとまどう。例えば赤色ならば、色:0、鮮やかさ:100、明るさ:100 のように各パラメーターの数値をそろえる必要がある。

色を正確に再現できるように、各プロジェクトで色の指定が必要な箇所では以下のようにコメントで説明を追加しておいた。

直線は、ビットマップに変換しないと塗りつぶせない

Scratch 3.0では、ビットマップに変換しないと直線や枠線を塗りつぶすことができない。これはScratch 2.0と挙動が異なる。直線や枠線自体の色を指定すれば、色を変えることはできるので、問題ないように思えるのだが、Scratchでは色を当たり判定に使うことが多いため、画面上にすでにある色をスポイトで吸って同じ色で塗りつぶしたいということがよくある。

たとえば、以下のコスチュームは直線部分をほかのコスチュームで使っているまったく同じ黄色に塗りつぶしたい、というケースでは少し困ってしまう。

三角関数の演算プロックに違和感

sin 60° や cos 120° を演算ブロックで表現するとき、Scratch 3.0は以下のように「60のsin」「120のcos」となるのが違和感を感じる。

Scratch 2.0では以下の通り読みやすい。

もとの英語での表現が「sin of 60」「cos of 120」と変わったことに日本語訳もひっぱられた形なのでいたしかたないように思えるが。。

数値しか受け付けないはずの入力欄に日本語が入力できてしまう

Scratch 3.0では、「○歩動かす」や「○度回す」など、数値しか受け付けないはずの入力欄に日本語が入力できてしまう。

最後の「○度に向ける」だけは、日本語の入力を受け付けず、しかも入力欄が赤色にハイライトされてミスタイプしたことが一目瞭然なので、可能ならこのUIに統一してほしい。

上記「10歩動かす」は、10が全角数字のためブロックは動作しない。日本語入力をオフにし忘れて数字を全角のまま入力してしまうというミスは良く起こるので、結構影響が大きい気がする。

Scratch 3.0のソースコードを管理しているGitHubのレポジトリのIssueに追加しておいた。

» Number fields should not accept non-number characters(ex. Japanese) · Issue #1857 · LLK/scratch-blocks

OpenなIssueはすでに200を超えていて、すぐに対応してもらえるのかはわからないのだが、もしこのIssueは影響が大きくてマズいと思われる方は、このIssueに+1のリアクションをおこなってほしい。もしかすると、賛同者が多いということが開発者側に伝わり優先度が上がるかもしれない。

以上、動作確認中に気づいたScratch 2.0と3.0との違いを紹介しました。2.0で作った自分のプロジェクトを3.0で動かすときの参考になればと思います。

MakerFaire Taipei で ML2Scratch を出展してきました

MakerFaire Taipei で ML2Scratch を出展してきました。今年の海外(アジア) MakerFaire めぐりはこれが最後です。

本エントリーを入れて、これで三部作となります。

» Maker Faire Singapore で ML2Scratch を出展してきました(Maker Faire編)

» Maker Faire Hong Kong に参加し、深センにも行ってきました - MakerFaire HongKong編

台北に到着した翌日が Media Day と School Day(メディア向けおよび学校の生徒向け)であると知らず、準備のための予備日だと思っていたので、一日中観光をしていました。

故宮博物院で、こちらお約束のお肉(肉形石)。iPhone のポートレートモードで撮ったらかなりお宝感がでています。白菜(翠玉白菜)の方はどこかに貸し出し中なのか、今回見ることはできませんでした。

MakerFaire Taipei の会場は「崋山1914 Creative Park」という倉庫だか工場の跡地を利用したお洒落な雰囲気の場所です。

国は違ってもブランドカラーの青が映えるゲートを見ると、また戻ってきた、という感じがします。

今回で3度目となるML2Scratchの展示です。ML2Scratch は、機械学習で画像を認識し、認識結果をScratch(厳密にはScratchX)に送ることで、簡単に機械学習をつかったアプリケーションをつくることができます。

デザインとUIが洗練されて説明しやすくなったML2Scratchに加えて、まだ未完成ながら Posenet + TensorFlow.js のサンプルと ScratchX をつなげたデモも用意しました。Posenet + TensorFlow.js は Javascript だけで目や鼻、耳の位置や腕や肩など体の各部の位置を認識できるので、Kinect などの特別なデバイスを使うことなく通常の Web カメラだけで体の動きを検出できます。

お隣のブースは今回一緒に参加することになった aida さんの機械学習を使って会話する unity-chan。aida さんは中国語が話せるので心強い限りです。今回の旅行で大変お世話になりました。

今回、中国語が少しでも話せたらいいなと思い、Hello Chineseというアプリを使ったりして、台湾に来る前の少しの期間、中国語を勉強してみたのですが、英語で言えば、This is a pen くらいしかわからないまだまだのレベルでまったく話すことも聞くこともできず惨敗でした。しかしながら、台湾の人はほとんどの人が英語を話せたので、デモの説明は全編英語でまったく問題ありませんでした。

香港、シンガポール、そして今回が三度目ということで、説明も慣れてきたこともあり、機械学習を手軽に使える面白さを多くの人にわかってもらえた感触がありました。

学校でプログラミングあるいは Scratch を教えている先生だという方が多く訪れてくださり、あくまで主観ではあるのですが、Scratch を拡張している ScratchX の説明や、機械学習に関する僕の説明に対する質問や反応を見る限り、日本の学校の先生よりもだいぶ理解が進んでいる印象を持ちました。

ML2Scratch に関する説明を印刷したチラシを50枚ほど用意していたのですが、1日目でなくなってしまい、現地のセブンイレブンで追加で50枚コピーしたのですが、それも2日目でほとんどなくなってしまって、これまでの3か国の中では一番反応が良かった気がします。

「こうすればよかったなあ」という反省点は、まあたくさんあるのですが、きりがないので挙げるとすると3つ。

1つは、いつも手抜きしがちなのですが、説明をちゃんと用意することでした。

これはとても良いお手本だなと思ったのが、日本から参加していた「VR どじょうすくい」。どじょうすくいをVRで体験できる、というアイデアは秀逸ですし、作品の完成度が高く、会場でも人気のブースとなっていましたが、掲げられている説明が適格でわかりやすく、次回のための見本にしたいと思いました。

2つ目は、MakerFaire に出るといつも思うことではあるのですが、もっと他の出展者の作品を見たかった。

ざっと見て回った感想ではあるのですが、香港とシンガポールよりもメカニカルな作品が多かった印象です。そういう点では MakerFaire Tokyo により近い感じです。

Scratch + Arduino という組み合わせをみかけることが多く、このテーマでの書籍が出版されているというのが印象的でした。

3つ目は、Twitter のハッシュタグを使い、もっとSNSを有効に使いたいな、ということでした。他の出展者とつながるきっかけになるし、ブログを書く準備にもなるしで一石二鳥となりそう。

次回出展するときには、この3つを改善したいと思いました。

日本お笑い数学協会が主催する「お笑いさんすうライブ」を観にいってきました

CoderDojo 安曇野の濱田さんに、面白いから観に行ってみたらいいよ、と教えてもらった、日本お笑い数学協会が主催するお笑いさんすうライブというイベントに行ってきました。

お笑い芸人でありながら数学の先生というタカタ先生と、数学のおにいさん横山氏のライブだったのですが、開始前からこどもたちのハートをがっちり掴んでいて、ライブ中、こどもたちも保護者の方も笑いが絶えず、非常に面白いものを観させてもらいました。

後半は大人向けの講演だったのですが、タカタ先生のコメントで、数学で凄い人はたくさんいるし、お笑い芸人ですごい人もたくさんいるけど、数学の先生でありながらお笑い芸人となると日本ではたった一人なんじゃないか、という話がとても響きました。

タカタ先生の YouTube のチャンネルはこちら↓

» お笑い数学教師♪タカタ先生

また、「笑う数学」という本も書いています。

笑う数学
笑う数学
posted with amazlet at 18.10.21
日本お笑い数学協会
KADOKAWA (2018-01-27)
売り上げランキング: 188,125

イベント中、おなじ誕生日の人が何人いるか?という誕生日パラドックスを実際に試してみるということで、大人こどもあわせて120人ほどの参加者の誕生日を確認していったら、同じ誕生日の人の組が10組近く出て、3人同じという組も一組できていました。

実際どのくらいの確率なんだろう?と思ってScratchで確認してみたところ、かなり高確率なのに驚きました。


[https://scratch.mit.edu/projects/254329331/]

ラズベリーパイ(Raspberry Pi) + ScratchX を使って micro:bit に天気情報を表示する

micro:bit に天気情報を表示する方法は検索するといくつか見つかるのだが、ラズベリーパイ(RSコンポーネンツのページなどから購入できる)、さらに ScratchX を使った方法はみつからなかったので調べてみた。

ラズベリーパイ上の ScratchX と micro:bit をつなげるには、

» micro:bit を Scratch から操作できる s2m が日本語に対応しました

で紹介した s2m などがあるが、今回は、ワイヤレスで接続することができる jaafreitas/scratch-microbit-extension: BBC micro:bit Scratch extension を使う。

ラズベリーパイでは Raspbian OS を使っているものとし、ターミナルを立ち上げ、

$ sudo apt install nodejs npm

を実行して、Node.js と npm をインストールする。

次に、scratch-microbit-extension のソースをダウンロードし、解凍する。

$ wget https://github.com/jaafreitas/scratch-microbit-extension/archive/master.zip
$ unzip master.zip

以下の通り実行して、extension を起動するまでの準備をおこなっておく。

$ cd scratch-microbit-extension-master
$ npm install

scratch-microbit-extension と micro:bit とが通信できるように、micro:bit 側には専用の hex ファイルをインストールする。

micro:bit に USB ケーブルをつなげ、ケーブルをラズベリーパイの USB ポートに挿す。micro:bit は /media/pi/MICROBIT にマウントされるので、以下のコマンドを実行して、firmware フォルダ以下の makecode-microbit-scratch-extension.hex ファイルを micro:bit にコピーする。

cp firmware/makecode-microbit-scratch-extension.hex /media/pi/MICROBIT/

コピーしたあと、micro:bit のリセットボタンを一度押しておくと、extension と接続しやすくなるようだ。

次に、ラズベリーパイ上で Chronium Web Browser を起動し、アドレス欄に

http://scratchx.org/?url=https://jaafreitas.github.io/scratch-microbit-extension/scratch_microbit.js&lang=en

を貼り付けて、ScratchX の extension を読み込む。

Extension を読み込んでよいのか許可を求めるダイアログが表示されるので、緑のボタンを押して許可すると、More Blocks カテゴリに、BBC micro:bit 用のブロックが追加される。

BBC micro:bit の横に赤丸が表示されており、まだ micro:bit との接続が確立されていないことを示している。

ターミナルに戻り、

$ sudo node index.js

を実行する。以下のキャプチャのように、ターミナル上に connected true と表示され、ScratchX 上では先ほどの BBC micro:bit の横の赤丸が緑色に変われば、接続がうまくいったことを示している。

接続がうまくいかないときには micro:bit のリセットボタンを押すとうまくいくことが多い。

ScratchX 上の「clear display」ブロックをクリックすると micro:bit の LED がまっさらになり、「display ?」のブロックをクリックすれば ? と LED 上に表示されることを確かめる。

micro:bit を USB ケーブルの代わりに電池ボックスなどで給電すれば、ScratchX 上から micro:bit をワイヤレスで操作できるようになった。

次に天気情報を取得するために、天気情報APIに接続する ScratchX エクステンションを読み込む。

» ScratchXを使って天気を取得するブロックを作成

で紹介されていた OpenWeatherMap API から天気情報を取得する ScratchX エクステンションを使わせてもらう。

上記スクリプトを ScratchX から読み込めるように Web サーバーに置く必要があるのだが、ローカルの Web サーバーでもよいので、Node.js の http-server を使う。

scratch-microbit-extension を起動しているターミナルとは別のターミナルを開き、

$ sudo npm install -g http-server

で http-server をインストールする。

適当な場所に myscript.js というファイルを用意し、先述したスクリプトの内容を貼り付ける。ファイルが置かれているディレクトリで、

$ http-server

を実行すれば、localhost:8080/myscript.js で天気情報取得エクステンションにアクセスできる。

ScratchX 上の More Blocks カテゴリを選び、Load Experimental Extension ボタンをクリックして、localhost:8080/myscript.js を Extension URL として入力すれば、以下のように天気情報を取得できるブロックが追加される。

「[ ]の天気を取得」ブロックの [ ] にアルファベットで地名を入力し、クリックすれば、その場所の天気の情報を取得できる。

以下のようなスクリプトを用意すれば、micro:bit の A ボタンを押せば、好きな場所の天気の情報が micro:bit の LED に表示される。

本日の調布の天気は雨、Rain と表示されるようになりました。

たとえば予報を取得するようにエクステンションを改造して、常に表示するようにした micro:bit を傘立ての近くに置いておけば役に立ちそうだ。(ScratchX とそのエクステンションの作り方については、スクラッチャーのためのScratchX入門 - その1 ScratchXとは?で解説している)

ScratchX のエクステンションはいくつも読み込むことができるので、組み合わせればいろいろなことができるし、ラズベリーパイならばどこにでも置いておくことができるので、様々な応用が考えられそうです。

Apple イベントで紹介された、バスケットボールのシュートを自動でトラッキングしてくれるアプリ Homecourt (ホームコート)に衝撃を受けた

先日の Apple イベントでは、iPhone XS や Apple Watch Series 4 の発表がおこなわれました。今回は上位機種へのアップグレードということで小さな進化という印象でしたが、これとは別に特に興味をひいたのは、iPhone XS のカメラの性能をデモするために紹介された Homecourt というアプリでした。

» Homecourt

このアプリ、バスケットボールのシュートを全自動でトラッキングしてくれて、シュートした各位置やその位置ごとの成功率を表示してくれるというもので、すでに公開されており App Store からダウンロードできます。カメラの性能がより良い XS で使うのが良いのかもしれませんが、iPhone X でも使うことができ、近所の公園で試したところ、あまりの素晴らしさにかなりの衝撃を受けたので、その様子を紹介しようと思います。

シュートのトラッキングを行うには、バスケットゴールとシュートを打つ人、そしてコート上ならば3ポイントシュートのラインが全部映る場所に iPhone のカメラを設置する必要があります。理想的には、ゴールの真ん前が良いようですが、試したのは近所の公園で他に遊んでいる人もいるので、僕は、ゴールのななめ前方、コートの外側に三脚を立てて、iPhone を三脚に取り付け立てました。

続いて、アプリ下側のタブバーから、Record を選び、Workout を選択します。

すると、ゴールとボードを含め、四角の枠の中に収めてくれ、という画面が出てくるので、指示通りカメラの向きを調整します。

次に、バスケットボールのコート上でなら、3ポイントシュートやフリースロー用のラインを検知するのかもしれませんが、公園のゴール前にはラインが引かれていなかったので、画面上に表示される仮想的な3ポイントシュートやフリースロー用のラインを指でドラッグし傾きや位置を適当に調整します。

事前の設定に必要なのはこれだけ。三脚さえあれば、iPhone の他には何の機器も必要ありません。

あとは存分にシュート練習をすれば良いだけです。

どこからシュートを打ったか、そしてもちろんゴールしたかどうかを自動でトラッキングしてくれて、シュート成功率などの分析結果をこのような形で表示してくれます。

こちらが詳細な分析結果です。

圧巻なのは、全シュートを自動的にシュート毎に区切ってくれて表示してくれる Shot-by-Shot の画面。

ゴールしたかどうかの結果(赤色のMakeがゴール、青色のMissがミス)とともにシュートごとのシーンを後から再生することができます。ちなみに、筆者はバスケットボールは全くの初心者です。おかしなフォームだとは思いますがご容赦ください。

2本目のショットはゴールをかすめており、パッと見「あれ入ったんじゃ?」と見間違えそうなのですが、ちゃんと機械学習による判定は Miss と判定しており、なかなかの精度だと思います。(これはカメラの性能によるのかもしれません)

Shot-by-Shot の画面では、スローモーションにできたり、プレーヤーにズームしてフォームをチェックできたりと、反省とこれからの改善に役立てることができるんじゃないかと思いました。

他にも今日のハイライトということで、連続してポイントできたシーンなどを自動的に切り取って表示してくれたりします。

さらに面白いのは、タブメニューから Feed を選ぶと、他の上手なプレーヤーの練習の様子も閲覧することができるところです。

こちら3ポイントシュートがかなりの確率で入っているおかたです。

Shot-by-Shot 画面で各シュートの様子も見ることができるので、上手な選手のフォームをチェックして参考にすることもできるのだと思います。

他にも Teams という機能では、仲間と一緒にチームを作ることができ、各々撮影した練習風景をチェックしたり、分析結果を共有して切磋琢磨することができるようです。

毎月300ショットまでは無料で利用でき、それ以上無制限で使いたければ月額の料金が発生するようです。(2018/9/18時点では月額880円)

バスケットボール超初心者の僕でもかなりワクワクするアプリなので、バスケットボールをやっている方にはとてもおすすめなんじゃないかと思いました。

» ‎HomeCourt - The Basketball App on the App Store

学習するデータが増えていけば精度はどんどん上がっていくのかもしれませんし、そのうちフォームなども、ここの部分をもう少し上げていい、といったように自動でアドバイスしてくれるようになるのかもしれません。

機械学習をとても上手く活用しているお手本のようなアプリだと思います。スポーツと機械学習はとても相性が良さそうで、大きな可能性を感じました。

学生時代にアーチェリーをやっていたのですが、当時、矢が当たった場所は自分でスコアカードに手書きで記録していました。そうした記録もこのようにカメラと機械学習をうまく活用すれば、自動で記録できるようになるのかもしれません。(作ってみたい :) )

機械学習を使ってどのようにコート、ゴール、プレイヤーを認識しているかなどの少し詳しい技術的な側面や、このアプリを開発した動機などを紹介している TED の動画があったので最後に紹介しておきます。

プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Scratchで楽しく学ぶ アート&サイエンスRaspberry Piではじめる どきどきプログラミングを書きました。

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ