僕は発展途上技術者

地図バー x 調布Facebook交流会 ドローンナイト に参加してきました

毎月プレミアムフライデーに調布で行なわれる地図バーというイベント、今回は「ドローンナイト」ということで、調布市内でどうやってドローンを飛ばすかを考えたり、屋内で飛ばせる200g以下のトイドローンを実際に飛ばしてみる体験などをしました。

地図バーを毎月開催されている古橋さんは、災害時にドローンをいち早く飛ばし、災害対策用の地図を作成し人命救助などのサポートに役立てようという、民間のボランティアベースで、DRONEBIRDという活動をおこなっています。

活動内容を紹介する動画がなかなかいかしてます。ジェダイの次くらいにサンダーバードの隊員になりたかった僕は、もうさっそく隊員になりたいと思ってしまいました。

調布でドローンを飛ばせる人を増やしたいというのが会の趣旨だったようです。そして災害時に役立てるように普段からドローンの操縦を練習しておく必要がありますね、ということで、調布近辺でドローンを飛ばせるいくつかの場所の紹介がおこなわれました。

続いて、実際にドローンの操縦を皆で体験してみようということで、会場となっている沙ら+と同じビルのそこそこ広い空きスペースを利用し、飛行体験会がおこなわれました。ゲストとしていらっしゃったドローン芸人の谷+1。さんが様々なタイプのドローンを紹介してくださいました。天井が低かったため残念ながら実際には見られなかったのですが、ドローンで飛ばしたマシュマロをキャッチするというのが谷+1。さんの持ち芸です。

その後、イベントが終了した後もドローン話は盛り上がり、ドローンを活用した様々な事例の話が面白かった。ドローンを利用したスマホの密輸、アフリカルワンダで活躍する医療物資を高速で届ける救命ドローン「ジップライン」などなど。実際に操縦を体験した後なら、これがいかに神業なのかがわかる「オンナノコズ」というプロモーション動画が衝撃的でした。

さてさて、一夜あけて昨日Amazonでポチッた Parrot ドローン Mambo が届きました。

本日すでに三回目の充電中のため待機中…

ML2ScratchとScratch2MiPを使って、倒立2輪ロボットMiPをゼスチャーでコントロール

ML2ScratchとScratch2MiPを使って、MiP をゼスチャーでコントロールしてみました。

ML2ScratchはScratchXとTensoflow.js を使ったサンプルページをつなげる ScratchX のエクステンションです。Webカメラの画像から機械学習で学習した分類結果をScratchXに送ります。

詳しくは、1つ前の以下のエントリーを御覧ください。

» TensorFlow.jsとScratchXとをつなげて、機械学習を簡単に体験、利用できるML2Scratchを作ってみました

ScratchXは別のエクステンションScratch2MiPを使い、倒立2輪ロボットのMiPに対して、分類結果に従った命令を送っています。

» 自立して二輪で走るロボットWowWee MiPをScratchXからプログラミングできるようにしたScratch2MiP

ScratchXはこのように、2つ以上のエクステンションを読み込むことができるので、合わせ技でいろいろなことができるようになるのが面白いです。

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

TensorFlow.jsとScratchXとをつなげて、機械学習を簡単に体験、利用できるML2Scratchを作ってみました

機械学習を気軽に体験し、なおかつそれを利用してScratchの環境でプログラミングできるので、簡単に動くアプリケーションを作ることができるML2Scratchを作ってみました。

» ML2Scratch - GitHub

上記デモ動画では、ウェブカメラでグー、チョキ、パーの画像をいくつか取り込んで機械に学習させたあと、学習した結果からウェブカメラに映る手の形を判定し、ScratchX上のネコのキャラクターに「グー」「チョキ」「パー」と言わせるという簡単なプロジェクトを紹介しています。

機械学習には、膨大なトレーニングデータが必要と思われがちなのですが、Googleから発表されたばかりのTensorFlow.jsを利用することで、それぞれ20枚ほどの画像を用意しただけで十分な精度の判定を実現できるので驚きです。

「手の形を判定するんですよ」と指定することなく、ただひたすらに各分類ごとの画像を学習させるだけなので、たとえば、赤い色のものばかりを見せたあと、青い色のものばかりを見せて学習させることで色を判定したり、同じ人の顔を角度をいろいろ変えて学習させたあと、次に別の人の顔を学習させることで簡単に顔認識を実現することもできたりします。

指を上下左右それぞれの方向に向けた画像を学習させて、それをコントローラー代わりにしてキャラクターを動かすゲームを作ることもできます。

機械学習の数学的な知識などが必要となってくる実装部分はブラックボックスのまま、それをアプリケーションにどう応用するか、あるいはどう楽しむかを考えることができるフェーズに移ってきたのかな、ということを感じさせてくれます。

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

Pythonistaで合気道の審査技イメージトレーニングアプリを作ってみた

合気道には試合がない代わりに昇級・昇段審査というものがあります。技の名前を言われたら、それを演武するのですが、級・段が上がるに従い、その数が増えていきます。審査というものは、普段の生活ではなかなか味わえない緊張感を感じるもので、プチパニックに陥り頭が真っ白になってサッと体が動かないこともままあります。また、記憶の引き出しの金具も錆びついてきていて、なかなか滑りが悪くシュッと引き出すことができなくなってきています。

そこで、ランダムに技の名前を言う、というだけのイメージトレーニングアプリを作ろうと思い立ったのですが、たったそれだけの機能を作るためのiOSアプリを作るのは面倒だなと。。電車に乗っているときに聞けるように、iPhoneで使えるようにはしたいのです。

そこで、以前に購入してインストールはしていたのですが、積読ならぬ積アプリになっていたPythonista 3を使ってスクリプトを作れるのではないかと、実際に触ってみたのですが、これがびっくりするくらい強力でちょっと引くくらいでした。よくこれ、App Storeのレビューを通ったなと… 簡単に言ってしまうとPythonの開発環境で、Pythonでちょっとしたスクリプトが作れるくらいに思っていたのですが、iOSの様々なAPIにもアクセスでき、Objective Cとのブリッジ機能も提供しているので、もはや何でもできてしまうんじゃないかという強力ツールでした。

Pythonistaがどれだけ革命的かは、こちらに書かれています。

» [t:http://hitoriblog.com/?p=42145]

で、できたのがこちらの審査技イメトレアプリです。配列に入れた審査技をランダムに言ってくれます。全て漢字で書くとおかしな読み方をする箇所があったので、そういうところはひらがなで書いたり、うまく切って読んでくれるように、適当な場所に読点を打ったりしています。

僕はこれを聞いて、頭のなかで技の型を思い浮かべるのです。

配列の中身を変えれば、英単語の練習だとか、いろいろ応用できそうです。大したコードではないですが、一応、このエントリーの最後に公開しておきます。

そして、Pythonista、App Storeを通さず、自分用にちょっとしたアプリを作ることができて大変便利そうです。たとえば、位置情報を取得して、最寄り駅 + 「もうすぐ帰るよ」というLINEメッセージを送るだけのアプリだとか、いろいろと作ってみたいと思います。

【再掲】ドメイン紛争。英文での反論例

14年前(!!)のエントリーの再掲です。

オリジナルはこちら -> 3mon.com ドメイン紛争。英文での反論例

反論メールを掲載していたサイトをうっかり更新し忘れで失ってしまったので、Intenet Archive で掘り起こしてきました。

時代は変わり、個人でドメインを登録してウェブサービスを作ろうという人は減ったのかもしれません。またそのドメインを停止するようにと企業から連絡を受けることも少なくなったのかもしれませんが、もし同様に困っている方がいたら、そうした方の参考になればいいと思って再掲しました。

=== ここから再掲部分 ===

3mon.com はあるアメリカの会社から、その会社の会社名と紛らわしいということでドメインの使用を停止して欲しい、という連絡をドメイン登録の代行をお願いした会社経由で受けました。

しかし、この Web サイトはいっさいその会社と関係ありませんし、3mon.com というドメイン名を使ってその会社に対して何か悪さをしようという意図は全くありませんでした。 このため、連絡を受けたときはかなり困惑すると同時に、「このまま訴えられたりするんだろうか」なんてびびってしまいました。何せその会社はアメリカの会社といえども、誰でも一度は名前を耳にしたことがある会社。そんな大企業に一個人が立ち向かってもしょせん無駄だろう、とさっさとドメインを明け渡すのがいいかな、とも思いました。

しかし、ドメインに関わる仕事をしている知人経由で専門家の方のアドバイスを受けているうち、「そんな暴挙を許してはいけない。少なくとも反論くらいはするべきだ」という結論に達したので、以下のような反論のメールを送りました。

その後、その会社からの連絡はないままもうすぐ2ヶ月が過ぎようとしています。向こう側には分がないということであきらめてくれたのだろうと楽観視しております。

私と同じように、個人でドメインの登録をしたら、そのドメインを停止するようにと企業から連絡を受けて困っている方がいるかもしれない。そうした方の参考になるかもしれないと思ったので、反論のメールをここに掲載しました。

なお、断る必要もないかとは思いますが、念のため。この反論のメールを参考にして実際に反論した結果、トラブルに巻き込まれたとしても私は一切責任を負いません。自己責任でおこなってください。あるいは心配であれば弁護士など専門家に相談することをお勧めします。

xxx: 相手側担当者

yyy: ドメイン登録会社

zzz: ホスティングサービスの会社

mmm: ドメインの停止を求めてきた会社

Dear xxx,

I am writing you concerning the domain name "3mon.com" which I registered through yyy.
You should have received the message from yyy replying to the letter you sent them on July 16, 2004
regarding "the Registration and Use of "3mon.com" Ref. No. nnn". yyy notified me that they have not
received any response from you, so I am writing this message by myself to make sure my message is
conveyed to you.

I would like to continue to use "3mon.com".

I have no intention to confuse customers of mmm Company, and I believe I have not actually confused anyone.
The attached is the access log of "Search word" during this one week (zzz allow the users
to access the access log of only the last one week). Some of keywords are Japanese, so please have someone
translate them for you. You will find that no one has reached my web site by searching "mmm" or
any "mmm" product name.

The following one paragraph should be already mentioned in the reply message from yyy, but I will repeat it.

The name "3mon" came from one of the well-known Japanese saying "HAYAOKI WA SANMON (3mon) NO TOKU"
("Early riser gains three coins" or "The early bird catches the worm" in English) "mon" is the old
currency in Japan and "3mon" stands for "a little precious money."

I clearly say that "3mon" comes from that saying in the top page of my web site. If you have someone
who understands Japanese, please ask that person to translate the web site for you. Almost all Japanese know
this saying and I think no one will imagine that my web site is something to do with "mmm", an American company.

I get up early because I believe it gives much more productivity. I spend the morning for programming software or
for learning programming and I use my website to show my work, that is, some software tools and programming tips.
That's why I named my web site "3mon.com". Anyone who is interested in my work can retrieve them in free.
Recently I created a sub page (http://3mon.com/cgi-bin/movingsale.cgi) for selling some of my household goods
because we will move back to Japan, but this is absolutely nothing to do with "mmm" product.

I didn't register this domain for the purpose of selling. I have never tried to sell the domain name to other party,
and I will not do in the future.

By the above explanation, I hope I could persuade you to stop asking me to terminate the use of "3mon.com".
But if you still insist that I should stop using "3mon.com", please let me know and clearly explain why I should do so. 

Sincerely yours,

Junya Ishihara(webmaster@3mon.com)

ストアカで中国語の体験レッスン「ゼロからカンタン超速入門講座」を受けてみた

あらゆるスキルの個人教室、ワークショップを検索できるウェブサービス「ストアカ」でみつけた中国語の体験レッスン「ゼロからカンタン超速入門講座」を受けてみた。

ストアカを試してみたいなと思っていたのと、IT界隈では熱い深センを春頃には訪れたいなと思っているので中国語を勉強し始めたいなという目的を一気に2つ達成しようと思ってのことだ。

結論から書くと、何か新しいことを始めるときは大概最初の敷居が高いのを低めてくれるストアカも良かったし、忙しい社会人向けに非常に効率良く概要を教えてくれる講座の内容もとても良かった。

中国の方は合理的というのを聞いてはいたが、講師の陳氷雅さんの教える内容は、ポイントがコンパクトにまとまっていて非常に合理的。中国人の考え方から始まり、ここをおさえればとりあえず通じるという最低限のポイントをコンパクトに教えてくれるので、短い時間で使えるようになりたいというこちらの要望にぴたりとはまる。

あまり内容に触れすぎると営業妨害になるので、ひとつだけ印象深かったことを挙げる。中国語の母音の発音は日本語よりも強くはっきり発音するため、日本語のように口をあまり空けず「ァ」と発音してしまうと通じにくいとのこと。かなり意識して大きめに「ア」と発音するのだが、あまり慣れていないのであごが少し痛いくらい。この感覚は英語の発音と似ている。アメリカに住んでいた時に英語の発音を教えてくれる夜間の社会人向けの講座に参加したことがある。そこで、アクセントがついている母音をかなり意識してほかよりも強めに発音すれば通じやすい、ということを習ってからは、それまでと比べて格段に通じるようになった覚えがあるのだが、それと要領は同じ。

日本語を使うときとは顔の動かし方まで変わるほど大げさになるため、これが日本人にとってはどうにも恥ずかしい。いわゆる帰国子女っぽい、なんだかかぶれてる感がでてしまうのだが、これを恥ずかしがらずにクリアできるかどうかが言語習得の鍵だと思う。

とまあ、効率よく学べるコツを少し教えてはもらったが、この後はいかに継続してコツコツ勉強できるかどうかにかかっている。

アメリカのオンラインバンキングサービスに悪戦苦闘

アメリカに住んでいたときに使っていたWellsFargoの銀行口座のオンラインバンキングサービス、これまでずっと使えていたのに最近になってログインできなくなってしまった。ログインしようとすると、認証用のコードを送ろうとするのだが、どうも日本の携帯電話の番号には送れないよう。。

というわけで、カリフォルニアの夕方にあたる午前中にカスタマーサービスセンターに電話で問い合わせ、2時間にも及ぶ激闘の末にようやく勝利してログインできるようになった。

最初の担当者は「認証用のコード送れない、無理!(いやだから問い合わせていて、何とかしてもらいたいんだけど。。)」の一点張りなので、あきらめてかけ直す。

次の担当者、女性でやさしそう。。からは、「Debit Cardを郵送するので、受け取ったらその番号を認証代わりに使える」「じゃあ、送って」「別の番号を教えるから、そちらで郵送の手続きして」とたらい回し。

そして、ようやく最後の渋めの声の担当者、いきなり電話に出たので、もはやコールセンターの担当者ではない様子、にChecking Accountの口座番号やらSaving Accountの口座番号やらSocial Security Numberの番号を聞かれ、ようやくDebit Cardを送るというところまでたどりつく。で、試しにログインしてみたら、Debit Cardを郵送する手続きをする、ということがどうやらトリガーになっていたらしく、受け取るのを待たずしてロックが外れていて、無事ログインできるようになった。

ログインできたときは、ガッツポーズ、何とも言えない達成感を味わったけれど、無事またログインできるようになったという考えてみたら別に大したことのない成果。。高度にゲーミフィケーションされたアメリカ生活の洗礼を久々に体験した。

サーバー(Ubuntu)上でBlenderを動かし、objファイルをインポートしてレンダリングする

最近はUnityやらARKitやら、Blenderを触っていてだいぶ3D慣れしてきました。

objファイルをブラウザからアップロードし、そのファイルで定義された3Dオブジェクトのスクリーンショットを表示したいという要望があり、いろいろと方法を調べたところ、サーバー側でBlenderを動かしてobjファイルをインポートしてレンダリングすればできるということがわかりました。その手順を紹介します。

まずサーバーにBlenderをインストールします。2018/1/11時点で最新の2.79をインストールするため、最新のパッケージを含んでいるレポジトリをadd-apt-repositoryで追加してからapt-getでインストールします。

% sudo add-apt-repository ppa:thomas-schiex/blender
% sudo apt-get update
% sudo apt-get install blender

参考 http://ubuntuhandbook.org/index.php/2017/09/blender-2-79-released-install-it-in-ubuntu/

BlenderはGUIで操作する3DCGソフトなのですが、操作内容をPythonで書くことができ、コマンドラインから実行することができます。

以下が、「--」以降の第1引数で指定した.objファイルを読み込み、第2引数で指定した.pngファイルにレンダリングしたイメージを書き出します。この.pngファイルがスクリーンショットになります。

Blenderを起動するとデフォルトでライトとカメラ、立方体のサンプルのオブジェクトが表示されるので、以下の命令で立方体のサンプルを削除しています。

bpy.data.objects.remove(bpy.data.objects['Cube'])

以下のようにして、Blenderをコマンドラインで呼び出します。

% blender --python import_obj.py -- cone.obj cone.png

--pythonオプションの後に、pythonスクリプトimport_obj.pyを指定し、-- 以降、第1引数にcone.objを指定し、第2引数に書き出す画像ファイルcone.pngを指定しています。

cone.objは円錐の3Dオブジェクトの頂点データを持っています。

上記コマンドで書き出されるcone.pngは以下の通りです。

cone.png

上記import_obj.pyは一つの.objファイルを読み込むだけの非常にシンプルなスクリプトでした。複数の.objファイルを読み込んだり、マテリアルを適用したり、カメラの角度やライトの当て方を変えるPythonのコードを追加することで自在に3Dオブジェクトのキャプチャを取ることができます。

The meaning of "Champion" in CoderDojo

各CoderDojoの代表者をChampion(チャンピオン)と呼びますが、ボクシングのチャンピオンなどを連想して他のメンターよりも優れている、あるいは偉いイメージを与えてしまってかねてから違和感を感じていました。初期の頃は CoderDojo Founder(最初に作った人)などと呼び、Championという呼び名はありませんでした。そこで調べてみたところ、https://coderdojo.com/start-a-dojo/ で、Dojos are Championed by individuals のように動詞として使われているのを見つけ、「おや?」と思ったのです。動詞だと「〔人・主義などを〕擁護する、支持する」という意味があり、その場合の名詞としてのChampionには、強くサポートする人、守る人という別の意味になります。どうもこちらの意味で使われているんじゃないかと思い、以下疑問をかかげたところ、CoderDojo Foundation の Nuala さんより「そのとおりだ」という確認のコメントをもらいました。

英語のニュアンスがわれわれ日本人にはやや違って伝わっている例として共有したいと思います。

===

The one who set up local CoderDojo is called “Champion”. For Japanese people, “Champion” sounds like someone who is superior than others, a person who defeated many rivals, like a champion in boxing matches.

I am involved in CoderDojo community since 2012, and at that time the founder of Dojo was not called “Champion”. I don’t remember well, but I think it was called "coordinator" or it was just "the first mentor". When someone calls me “Champion”, I feel a little hesitancy.

Then, recently, I found that “Champion” is used as verb in “Start A Dojo” guide as follows.

Dojos are Championed by individuals all around the world who are passionate about giving young people the opportunity to learn to code. 

In this context, it seems that "champion" is used like "support" or "defend", and I found that the noun "champion" has another meaning like "supporter".

So, "Champion" has 2 meanings.

  1. someone who is superior than others, a person who defeated many rivals, like a champion in boxing matches.
  2. someone who strongly supports something.

It seems that CoderDojo Champion means number 2.

I want to know if my understanding is correct and how native speakers or people in other countries think about this. Please feel free to leave your comments.

小さなリスクを取ることのすすめ

日本ではいままでオオカミは悪とされてきて、ヒツジが善だった。つい20年くらい前までは転職しようとすると「1つの企業に定年まで勤めるのが人間としての道だ」みたいにいうジジイがいましたが、最近では田舎しかいないだろう。まだ牧畜が盛んだったときはヒツジも大事にされたわけですが、いまや化繊(ITとかロボットの人工物)がメインになって羊毛のニーズが激減したと考えれば分かる。これからはオオカミの意識を持たないと最後は屠殺処分が待っているわけです。

突然雇い止めされた派遣社員がその前にやっとくべきだったこと(永江一石)

本当にその通りだと思うのだが、でも、日本人の国民性なのか、長く治安が良く平和な社会で生きてきたからなのか、多くの人はリスクを取ることに慣れていないと思う。

僕も、今は独立してフリーランスで生きていくという、普通の人よりもだいぶリスクのあるライフスタイルを選んでいるが、性格的にはどちらかというとヒツジタイプだと思っている。

大学までは、決まったレールに乗ったままエスカレーター式に進学していく道を選んだ。学生時代は先生の言うことを素直にそのまま聞くタイプだったし、学校で定めたルールをちょっとでも破るなんてことは思いもしなかった。誰かに怒られたりするのが嫌だなあという思いから、アルバイトは家庭教師以外はほとんどやらなかった。

でも、そんな僕がどうしてリスク耐性を身につけることができたのか思い返してみると、1) 環境を変える 2) 小さなリスクを取り続ける の2つが重要だったんじゃないかと考えている。

環境を変えるでいえば、4年間アメリカに移住し働いたという経験が大きく、ボケっとしていたら生きていけいないアメリカ生活に順応していくには、感覚的には3割増しくらいでアグレッシブにオオカミ側に行動や性格を切り替えていたと思う。

小さなリスクについては、いくつかエピソードがある。僕らが学生の頃はスキーに行くのがはやっていて、僕も良く行っていたのだが、皆が行く広いゲレンデを滑るのに飽きて、深雪が残るコース外や林の中を滑るのを楽しんだりしていた。あるいは、社会人になり、勤務時間中は作業服に着替えるという職場だったのだが、どうせ着替えるのだからスーツを着ないで私服で出勤してみたり、インドネシアに旅行したときは、あえて安宿に泊まったりしてみたり。どれも本当に大したリスクではないのだが、小さなリスクを取り続けることで、いつしかリスクに慣れていったように思う。

環境を変える、は効果は大きいがなかなか誰にでもできる簡単なことではないかもしれない。

一方、小さなリスクを取り続ける、というのは意外と簡単にできて、すぐにでも始められるのではないだろうか。知らない人に話しかけてみる、ちょっと空気を読んでない発言をしてみる、普段読まない本を読んでみる、などなど。

プロフィール

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

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

オンラインコンテンツ: 大人のためのScratch

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

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ