僕は発展途上技術者

moves-api-demo: counts how many days in a month you went to the place you specify, using Moves API

I work as a software engineer contractor. I need to count how many days in a month I work for my client to charge the fees.

I use a very nice iOS app, Moves. It runs in background, and it records almost every place I go without losing much battery life. So, I thought that I can use that data to count how many times I visit the client place and consider it as working days.

I created a sample app that counts how many days in a month you went to the place you specify, using Moves API. This is based on the sample app that Moves provides. I prepared Heroku button for that app, so you can easily set up the same app on Heroku if you have an account.

champierre/moves-api-demo: A sample app that demostrates how to connect to Moves.

Open the app in Safari on the iOS device where you have Moves installed on it, and after getting authorized by Moves, you can get how many days you visited the place you specified in the previous month.



「フェルドマン博士の日本経済最新講義」感想

ちきりんのブログで強くオススメされていたので読んだ。気になったトピックを挙げてみる。

フェルドマン博士の 日本経済最新講義
ロバート・アラン フェルドマン
文藝春秋
売り上げランキング: 635


  • 日本の農業はもともとが効率が悪いため、生産性をあげていけば、グローバルで戦っていく競争力は十分ある。 → カリフォルニアに住んでいたとき、farmers market(日本の朝市みたいなもの)に行くことがあった。他の大味なものと比べてここの店のフルーツはおいしいなと思ってみてみると、店というか生産者の名前に Tanaka とかって日本の名前がついていたりすることがあった。きっと二世、三世の人達が育てているのだが、日本人の遺伝子が、きっちり丁寧においしく野菜や果物を育てるのだろうかと思ったことがあったので納得。

  • 医療、社会保障費に予算を回しすぎ。教育費や新エネルギーの開発含めた研究開発費にもっと振り分けないとダメ。 → 要は、高齢者に払い過ぎているお金を、若い人や未来にもっと投資すべきという話だと思う。でもそのためには高齢者が多い地方有利に働いてしまうなどの現行の選挙制度を改革する必要があると説いている。具体的には、1) 1票の格差を解決するために、選挙区の人口に応じて議決権を振り分ける、つまり人口が多い選挙区を代表している議員にはより多くの議決権を与える 2) 投票を権利から義務に変えて、選挙に行かなければ罰金。これによって若い人に強制的に投票してもらう、という解決策を提言しているのが斬新。いろいろな問題の根本には「選挙制度」があり、まずそれを解決すれば他の問題も自ずと解決できるという考え方は、政治献金の仕組みがアメリカの問題の元凶という主張で大統領選にも出馬表明してるローレンス・レッシグ氏(クリエイティブコモンズの生みの親)の考えに通じるものがあり、問題の元凶を解決して他も一気に解決するというエンジニア的な考え方に近くて面白い。

  • 石油に代わる新エネルギーとしては、太陽エネルギーが有望。原子力は事故が起こってしまったときのコストが莫大で筋が悪い。また、電気をなるべく効率良く使う省エネの考え方はまだまだ推し進められる。→ アルミサッシの代わりに寒冷地では一般的な断熱性に優れた樹脂サッシに変える、蛍光灯の代わりに発光効率が高いLEDの電灯に変える、など省エネに関しては身近なところでできそうなことがありそう。調べてみると蛍光灯とLEDでまだそれほど違わないという話もあるようだが、LEDの発光効率は年々良くなっているようなので自宅のリビングの照明あたりから替えてみようかと思っている。


他にも、英語教育では感受性が高い中学高校時代のうちに留学したり一、二か月でもいいので中長期外国に滞在する経験が大事、などが気になった。

終始、変化や実践を必要とするが、日本の未来を明るい方向へ変えることができるという考えが一貫しているのが好感が持てる。

読んでなるほどーと思って終わりにするのでなく、小さくても具体的な行動に移すことを心掛けたい。

(今、モバイル環境から情報発信ってできるの?ってことに興味があり、このエントリーは通勤電車や風呂場から iPhone 使って書いてみたのだが、いやーやっぱりまだまだつらい。特に他から情報持ってくるときのコピペとか。とはいえ Siri を使えばテキスト入力はそこそこ行けるなどもあるが、奥さんに「風呂場でブツブツ言ってて気持ち悪い」と言われるなどまだまだ障害は多い。)

color-log: Colorizes the output of the standard library debug logger.

Note: I asked Tokyo iOS Meetup organizer and my nice English sensei Matt-san(@gillygize) for review and he made some suggestions. Thank you so much.

Suppose I want to output some a debug message on in Rails log.

I do like I can do it like this:

class WelcomeController < ApplicationController
def index
logger.debug "Test"
end
end


, but it is always hard to find that debug message in the log messages.

To make it easy easier to find it, I always do like this.:

logger.debug "*" * 80
logger.debug "Test"


I know it is a dirty solution and it is super MENDOKUSAI("bothering" "bothersome" in Japanese), so I created a tiny gem that it colorizes the output of logger.debug as below:



To install it, just add the following line in your Gemfile and do "bundle install". That's it!

gem 'color-log', git: 'https://gist.github.com/champierre/692b739c4fe875820f7e', group: :development


I personally like this simple gem, and also like that I can publish a gem from Gists. It is very handy.

The source code is available at https://gist.github.com/champierre/692b739c4fe875820f7e.

Rails 5 を Heroku で動かす

とある Web サイトの移行を考えています。

2008年に作っていて、Rails のバージョンは 2.x とかなり古いので、この際一気に Rails 5 にしようと思っています。

移行先は Heroku にするつもりなので、準備として、Heroku で Rails 5 を動かすチュートリアルを追ってみました。

内容はほぼ、

Getting Started with Rails 5.x on Heroku

そのままです。

$ brew update && brew upgrade ruby-build
$ rbenv install 2.3.0
$ rbenv rehash
$ gem install rails --pre --no-ri --no-rdoc
$ rbenv rehash


で ruby 2.3.0 と rails 5 beta を用意します。

$ rails new myapp --database=postgresql

でサンプルアプリ作成。

Gemfile を編集、

gem 'rails', '>= 5.0.0.beta1', '< 5.1'



gem 'rails', github: "rails/rails"

に変更。

gem 'sqlite3'



gem 'pg'

に変更。

$ bundle install
$ bin/rake db:create
$ bin/rails g controller welcome


app/views/welcome/index.html.erb を追加。

<h2>Hello World</h2>
<p>
The time is now: <%= Time.now %>
</p>

config/routes.rb を編集。

root 'welcome#index'

を追加。

$ bin/rails server

を実行し、http://localhost:3000 にアクセスして確認。

再び Gemfile を開き、最後に

gem 'rails_12factor', group: :production

を追加。

$ bundle install --without production

Gemfile を開き、最後に

ruby "2.3.0"

を追加。

$ git init
$ git add .
$ git commit -m "init"
$ heroku create
$ git push heroku master


でとりあえず heroku で動きます。

確認するには、

$ heroku open

です。

Webrick でなく、Puma で動かすため、Procfile を追加。

web: bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}

.env を作成し、ローカルでも確認できるようにします。

$ echo "RACK_ENV=development" >>.env
$ echo "PORT=3000" >> .env
$ echo ".env" >> .gitignore
$ git add .gitignore
$ git commit -m "add .env to .gitignore"


$ gem install foreman

を実行して、ローカルでも動かせるようにしておきます。

最後に、

$ git add .
$ git commit -m "use puma via procfile"
$ git push heroku master


でデプロイ。

$ heroku ps

で、heroku 上で puma で動いていることを確認します。

2016年の数値目標をたてました

数値目標じゃない目標は目標ではない、ということで、2つたてました。

1) 体重を10パーセント増やす

2) ブログをひと月3エントリーは書く

です。

ちょっとよろよろしてはいますが、昨年は風邪さえも一度もひくことない全くの健康体で、他の数値はまったく問題ないにも関わらず、健康診断のときには体重が少ないという点だけが毎回要注意事項として指摘されているので、今年は逆ダイエット、少ない体重を10パーセント増やすのが第一の目標です。ダイエットで頑張っている人や女性陣から非難されそうですが、こちらも同じくらい悩んでいるのです。すでにお正月休みで半分くらい達成していい感じのスタートを切れたと思ったのですが、減らないように維持するのが結構大変だったりします。

今年のテーマとして、「慣れを捨てる」「初心に返ってリセットする」ということを考えています。2006年にフリーランスになり今年がちょうど10年目。自分でもそれなりに頑張っているとは思うのですが、どうしても慣れというものがでてきて、力を少し抜いてもそれなりの成果を出せるというか、良くいえばそれが経験なのでしょうが、悪くいえば手の抜き方がわかってしまって要領よくこなせるようになってきてしまっていると感じることがあります。

そこでフリーランスになったばかりの頃の気持ちを呼び起こしたいと思い、それにはその頃の習慣をもう一度取り戻せばいいんじゃないかと。Facebook や Twitter の短文 SNS で気が済んでしまうというのがあり、ブログをほとんど書かなくなってしまっているのですが、以前はもっと頻繁に書いて発信することを心がけていたので、その習慣を取り戻そうと思っています。まずはリハビリということでひと月3エントリーを書くことにします。また、とりあえず Facebook から距離をある程度おくことでブログを書く意欲も増すだろうということで Facebook のアプリを iPhone から削除しました。

Scratch からミニドローンをコントロールできる Scratch2Airborne をつくりました

Scratch Advent Calendar 2015 の 12/24 の記事として書きます。日付変わってしまってちょっと遅れてしまいました、ごめんなさい。

題名そのままですが、Scratch からミニドローンの Parrot Airborne シリーズのをコントロールできる Scratch2Airborne をつくりました。検証はしていませんが、たぶん共通のインターフェースである Rolling Spider シリーズも動くんじゃないかと思います。

注意(2015/12/27 追記) ミニドローンといえども、プロペラ部分など大変危険です。ワークショップなどでこどもと操作する場合には、長袖シャツ、保護メガネ、手袋を着用するなど、安全管理に十分ご注意ください。家の観葉植物をかすった際、写真のように、葉っぱがスパっと切られてしまいました。



ちなみに僕が買って動かしてみたのは黄色いボディの Parrot Aiborne Cargo Travis です。この記事を読んで欲しくなった方は以下のリンクから買っていただけるとうれしいです :)



いつものように Scratch のリモートセンサープロトコルの仕組みを利用し、Scratch から送られてきた命令を変換してドローンに渡します。(リモートセンサープロトコルについて詳しく知りたい方はこちら → Scratch(スクラッチ)を外部のプログラムなどとつなぐ「遠隔センサー接続」を解説する(その5))

今回、ドローンに命令を送るライブラリとして、node.js のnode-rolling-spiderを使うことにしたので、Scratch2Airborne は node.js のプログラムです。

ソースコードはこちら↓

» Scratch2Airborne | GitHub

node.js が利用できる環境を準備し、上記ソースをダウンロードしたあと、必要なライブラリを以下のようにインストールします。

$ npm i noble
$ npm i rolling-spider


ミニドローンが起動されているのを確認した上で、

$ node find.js

これは、Bluetooth 接続でミニドローンにアクセスできる ID である uuid を確認するためのプログラムです。

この ID をひかえた上で、別の scratch2airborne.js の以下の該当部分にコピペします。



スクラッチの遠隔センサ接続を有効にした上で(やり方はこちら)、scratch2airborne を以下のように実行します。

$ node scratch2airborne.js

SESSION START というメッセージが表示されたら、接続成功です。

スクラッチの「送る」ブロックを使って、命令をドローンに送ります。

スクラッチのプロジェクトはこんな感じです ↓



送ることができる命令は以下の通りです。


  • takeoff: 離陸

  • land: 着陸

  • forward: 前進

  • backward: 後退

  • hover: ホバリング(その場で静止する)

  • right: 右に約90度旋回

  • left: 左に約90度旋回

  • flip: 前方宙返り

  • backflip: 後方宙返り

  • up: 上昇

  • down: 下降



こんな感じで飛びますという動画を撮りました。こちらです ↓





今後は、スクラッチを経由して、Leap Motion や Kinect でドローンを動かしてみることに挑戦していきたいと思います。



Hour of Code@Microsoft に行ってきました

Hour of Code@Microsoft に行ってきた、って話を書こうとしたのだけど、


イギリス、アメリカでの事例の話があって、アメリカだと、ビル・ゲイツやザッカーバーグみたいにコード書けて社会的にも影響力のある人がいるけど、日本にはそういうのがいないよね、とか、学校で「プログラミングやります」って云ったら「うちの子をプログラマーにするつもりはない」って保護者から云われた話とか、そういう意味ではまだまだこれからだね、って感じだわ。
音楽や図工だって、別に芸術家を育てようとしてる訳じゃないだろ。それを通してその先にあるものを感じて欲しいからやってるんだと思うんだけど、親からして、まだそういう状態じゃないってことだから、5年、10年かかる話かもしれない。


とか


Hour of Code自体は、これでプログラミングやりました、みたいになるのはどうなのよ、っていうのは周知のことだけど、小学校の低学年辺りへの導入としてはやる方も教える方も気楽に始められていいんじゃない。


» Hour of codeやってきた | とりあえずやってみる

とかほとんど言いたいことは、↑この記事 で先に言われちゃいました。にしても、@Peak パパは的確だし、文章がうまい。

Hour of Code については、数日前にスクラッチの生みの親 Mitchel Resnick 氏の下記の発言から、パズル形式のプログラミング教育に対する苛立ち、と読み取っていたことで余計な先入観を持ってしまっていたみたい。


We are strong proponents of children learning to code, but we have concerns about the motivations and methods underlying many of these new learn-to-code initiatives.


» A Different Approach to Coding — Bright — Medium

行く前から、心がザワザワしていたのだけれど、次男と実際に目にして体験してきた後、ようやく心が落ちついてきました。ちょうど昨日まで参加していた(残念ながらこちら優先して最終日は行けなかったのだけど)RubyKaigi の基調講演で Matz がネガティブな感情は伝染る、という話をしていたのだけれど、ちょうどそんな感じだったのかもしれない。

メインファシリテーター始め、スタッフの方々には直接伝えることができなかったのだけれど、帰り道次男にもし伝えるとしたら何て言う?と聞いたところ、「(スクラッチ歴、プログラミング歴はそこそこあるので)Hour of Code の教材自体は簡単過ぎて物足りなかったけれど、マインクラフトの世界観がうまく取り入れられていて楽しい。続きのもう少し上級向けのコースがあると良い」とのことだった。

面白いなと思ったのは、最短で何ブロックできますと表示されて、一度クリアしてもよりよい書き方を求められるところも面白いとコメントしていた点だ。これは動けば書き方には特にこだわらないとなりがちなスクラッチをやっているときにはない視点で、リファクタリングの考えにつながりそうな要素だ。

イベント中にはなんだかんだで時間がなくできなかったので、僕はあとからマインクラフト版 Hour of Code を全14ステージやってみたのだけれど、レッドストーンを取れとかってゴールが設定されておりマインクラフトの知識前提なのね、と感じた。ブロックを使わないで放置しておいたままにしておくと警告が出て実行できないというところが、トライアンドエラーを妨げているような気がして、少し気になったところだ。

僕もいいなと思った、アイスブレイクの自分がロボットになったつもりで、紙に書いた命令を実行する、ってやつは楽しかったようだ。コンピューターなしで情報科学を教えるアンプラグドコンピューターサイエンスというらしい。面白そうなので、関連書としてその場で以下の本を買っておいた。

コンピュータを使わない情報教育アンプラグドコンピュータサイエンス

マイクロソフトが作った、あるいは開発中の製品の紹介が最後にあり、以下の Hololens の紹介を見た次男はスゲーって興奮していたのだけれど、



その後に流れた1993年の AT&T のコマーシャルと、アラン・ケイ氏の「未来を予測する最良の方法は、それを発明してしまうことだ」 (The best way to predict the future is to invent it.) という引用の合わせ技で、僕は鳥肌立ってしまった。



ブレることなく淡々とやるべきことをやり、少しずつでも自分の変えたい方向に未来を変えましょうね、ってことだね。

東京にいながらにしてインターナショナルな環境でプログラマー(Rubyist)として働くというお話

今年も RubyKaigi の日がやってきた。

RubyKaigi が終わると、だいたい決まって皆、「あー、もっと英語ができたらなあ」とか言うのがお決まりだ。初めて Ruby 会議に参加したのはもう7年前になるのだけど、その頃から比べると、海外からの参加者がたくさん増え、セッションもほぼ半分は英語でのものになった。そんな中、僕も含めてだが、自分の英語の未熟さを改めて痛感する機会なのではないだろうか。

そんな人たちにオススメの方法を紹介したい。それは「インターナショナルなメンバーで構成される開発チームの会社で働く」ことだ。いま、コントラクターとして開発のお手伝いをさせてもらっている MediWeb での経験を実例に書いてみる。

9月から MediWeb でお世話になっており、Gold Sponsor 枠で RubyKaigi に参加させてもらったのでそのお礼という意味もあるが、あくまで個人の見解で、この働き方がエンジニアにとっては結構いいんじゃないかと思っているので、勝手に個人のブログで紹介しています。

英語に慣れることができる

まず、僕のバックグラウンドを紹介しておくと、2000年 - 2004年の4年間、サンフランシスコに本社を置くソフトウェアの会社で国際化やローカライズをおこなう QA のエンジニアとして働いていた。なので、一応英語でエンジニアとして仕事をすることは経験している。とはいえ、同僚はネイティブではなくロシアやウクライナ出身のソフトウェアエンジニアばかりだったので、一番聞き取りやすいのはロシア語なまりの英語という感じだった。普通の人よりは、そりゃあだいぶしゃべれるとは思うが、自分的には4年間住んでいたわりには、うーんあまりうまくなってはいないなあ、という自己評価だった。

さらに10年以上のブランクでだいぶ僕の英語力は落ちていたのだが、MediWeb で働き始めて3ヶ月経ち、だいぶ元に戻ってきたかなあと実感している。

3Beesというクリニック向けに予約管理や順番管理の機能を提供するクラウドサービスを Rails で開発しているのだが、本番環境にデプロイするコードは必ずペアプログラミングで書くということが徹底している。開発チームの出身は、フランス・ウクライナ・ポーランド・アメリカ・カナダなど国際色豊かで、そのメンバーと変わるがわるペアを組む。なかには日本語ペラペラの方もいるとは言え、ほぼコミュニケーションは英語、さらにランチも開発メンバーと一緒に行けば英語しばりなので、毎日英語のフリーレッスンを受けているのと同じだ。他にもソースコードのコメント、PRのコメントなど、デフォルト言語は英語だ。

正直最初の2週間とか知恵熱出そうだったが今はもうだいぶ慣れてきた。お金払ってフィリピン留学などして英語を勉強する人がいる中、お金もらっている上に英語も勉強できるなんて、なんともお得な環境だと思う。

今までにない笑いのセンスとかが新鮮、色々な価値観に触れることができる

開発はスクラムの手法にのっとって行なわれ、1週間が1スプリントなため、毎週金曜日にレビューをおこない計画をおこなったあとに、ときにはオフィスで軽くビールを1杯2杯飲んで祝ったりする。

ビールが入れば酔拳よろしく、僕もだいぶ話せるようになり、そんななかである時、フランス語の R の発音は日本人には難しい、みたいな話をしたら紹介された動画がこちら↓

いやあ、これだいぶツボに入って笑ったんだが、こうした笑いの感覚が日本人とはちょっと違っていて面白い。ほかにも北欧の国のどこかのコメディ番組でしかけるドッキリとかも見せてもらい新鮮だったり、CSS で手こずっているときには、Slack で「これ見ろ!」とか言ってこんな Gif 画像が送られてきたり。。こういうのを何と言えばいいのか、上品というかなんかウィットに富んでいる感じだ。

View post on imgur.com

なかには、え?まったくわからんよ、というものもあったりはするが、それも含めて楽しめることができる人には良いんじゃないかなと思っている。

日本的ブラックさが皆無

性格的に結構遠慮がちで、意外と気をつかってしまう。ちょっときついこと言われると気にしちゃったり、「あの人、僕のことどう思っているのかなあ?」とついつい気にしてしまう性格なのだが、そんな僕がアメリカで働いていたときは、正直相手がどう思っているのかとかまったく察しがつかないため、そうした気遣いがほぼ不要で、人間関係で悩むことなく、楽だったことを覚えている。

インターナショナルな開発チームだと、それとかなり似た感覚で仕事ができ、僕にとっては懐かしく心地よい。

新卒で入った会社はそれなりに日本的で、「飲みにいくぞ」と言われたら必ず行かないといけないみたいな上司部下、先輩後輩の間柄というのがあり、大学で一応体育会系の、例えばビール瓶はラベルを上に向けて注ぐといったしきたりを経験してきた僕にとっては、それはそれで楽しくもあり苦ではなかったのだが、継続的に心おだやかでいられるには、欧米式のいい意味でドライな関係というほうが向いている。たぶん多くのソフトウェアエンジニアと共通する価値観じゃないかと思う。

それぞれ自分の時間を大切にするという価値観を持っており、むしろ定時で帰ることがよしとされる。睡眠不足や働き過ぎ、体調崩して、普段のパフォーマンスが出ないのならプロフェッショナルではない、とみなされるようだ。

プロフェッショナルであるという感覚、チームで開発しているという意識が強い

コードは必ずペアプロでおこなう、Pull Request は必ずペアに入っていない別の人にレビューしてもらうなど、開発をすすめていく上でのルールをきっちり守るという雰囲気がある。アメリカで働いていたときにも良く思っていたことだが、決めたルールには皆ちゃんと従うんだなあという印象を持っていた。その理由ははっきりしないのだが、アメリカでもそしてインターナショナルなチームでも言えることであるが、価値観の違う様々なバックグラウンドを持つ人同士で仕事をするには、明文化されたルールだけが唯一の共通のよりどころになるため、よりきっちり守るのだろうかと思っている。

日本的感覚だと、「なにも杓子定規にきっちりしなくても」とか、「融通利かせようよ、こういうときは例外ね」とか言って、なあなあになってどんどん例外が増えていき、破綻し始めるということがある。一方、少しずつルールを最適化していきながら、それにはきっちり従うということを続けていくと、うまく回り始めた時に、特にソフトウェア開発ではとても効率的に物事が進むようになる。

一方で、いい意味でドライということと一見矛盾するかもしれないが、スプリントが終わったときの軽い打ち上げや、障害対応でランチとれなかった時には皆でピザを注文してオフィスで食べるなど、チームで開発しているなあと感じることも多い。

誕生日のときに覚えのない Pull Request がアサインされていて、開いてみたらこんな感じの内容で↓ 粋な感じだ。

まとめ

ソフトウェアエンジニアとして働くなら、海外の会社が環境的に良いと思うのだけれど、たとえばアメリカで働くとなると生活のこととか、こどもがいたら教育のこととかそれなりに大変だ。加えて、サンフランシスコはまだだいぶましだとは思うのだけれど、メシがあまりよろしくない。

「インターナショナルなメンバーで構成される開発チームの会社」でならこれまで挙げた外国で働いたときには得られるメリットを享受しつつ、東京ならおいしいところはたくさんあるし、治安が最高の日本という環境で生活できる。

Ruby/Rails で開発をおこなっているインターナショナルな会社は、探せば存在するので、これまで紹介した環境にあいそうだなあと思う人は、そうした会社で働くことにチャレンジしてみてはどうだろうか。

MediWeb もそうした会社のひとつで、RubyKaigi ではチームのメンバーがウロウロしているはず。僕も参加するので、もし興味があったら @jishiha にメンションをくれれば、どんな感じで働いているのか紹介しますし、開発チームの人にもつなげます。

あるいは本気に正式にコンタクトしたいという方は、こちらへ↓

» 医療クラウドのメディ・ウェブ | 採用情報

BASE ショップの運営をエンジニア力を発揮し、Greasemonkey などで全自動化する

BASE でショップを作って物を売るという初めての経験をしていて、これが結構楽しい。



始めは購入者の情報を別のオーダー用ページにコピペとかしていたが、Greasemonkey などを駆使して全自動で転記できるようにしていたりで、エンジニア力の発揮し甲斐がある。



ちなみに販売しているのは iPhone がロボットになる Romo とそれを Scratch からコントロールできるようにする Scratch2Romo の導入マニュアル。導入マニュアル自体も販売しているが、つくる社ショップから Romo を購入してもらえば、導入マニュアルは無料でプレゼントとお得です。



» つくる社ショップ



Greasemonkey スクリプトを Chrome で動かすために Tampermonkey を使っていて、BASE の管理画面にアクセスすると、専用の Greasemonkey スクリプトが「購入者情報取り込み」と「マニュアル送信」というボタンを表示してくれる。





「購入者情報取り込み」ボタンを押すと、管理画面に表示されている購入者情報のうち、氏名や住所、メールアドレスなどを取り込むことができる。





また、「マニュアル送信」ボタンを押すと、購入者情報から取得したメールアドレスを宛先にして、販売しているマニュアルのダウンロードリンクを送る定型文のメールを宛名を入れた状態で Gmail の画面を開けるようにしている。





購入者情報を取り込んだ状態で、今度は Romo の送付を手配するための専用のオーダーページにアクセスすると、お届け先が自動で入力されるのでとっても楽ちん。





BASE では開発者向けAPIを提供しており、そちらを使った方が筋がいいのかもしれないのだが、Greasemonkey でいまのところ事足りているし、手軽に自動化できて気に入っている。



差し障りない形で BASE の購入者情報を取得できるサンプルの Greasemonkey スクリプトを用意したので公開しておきます。



» base_order_info_retriever_sample.user.js



BASE で物販を運営していて、こんな感じで自動化したいというショップの方がいらっしゃったら、スクリプトを再利用できるかもしれないので、お問い合わせ先までご相談ください。

脳波で Scratch をコントロール - Mind2Scratch

MindWave Mobile という脳波センサーがついたワイヤレスヘッドセットを使って脳波データを取り出し、Scratch 1.4(教育用プログラミング環境)に送って、だれでも脳波データを使ったプログラムを作れるようにしてみました。





MindWave Mobile で計測できる脳波データはいくつかあるのですが、このうち比較的コントロールしやすい Attention と Mediation を使っています。Attention は集中したときに値が高くなります。一点をみつめて「上がれ、上がれ」などと念じると高くなります。Mediation はリラックスしたときに値が大きくなります。目をつぶってリラックスすれば上がりやすいです。



Attention があがると黄色いネコが上に上がり、Mediation があがれば青いネコが上がるようにしています。



両方の値とも 0 - 100 の間で MindWave Mobile で計測することができ、Bluetooth 接続した iPhone で動かしている自作アプリ Mind2Scratch(仮) に送ります。NeuroSky の SDK を組み込んだ Mind2Scratch で脳波データを取得します。



取得した脳波データを、Scratch のリモートセンサ接続(詳細はこちら → Scratch(スクラッチ)を外部のプログラムなどとつなぐ「遠隔センサー接続」を解説する)を利用して、Scratch に送ります。



Scratch で動かしているプログラムはこんな感じ↓ これは黄色いネコのプログラムです。





MindWave Mobile のような一般の人でも気軽に手に入れることができる脳波センサーの存在は、福祉用具や医療機器の設計やコンサルティングをおこなわれている 株式会社モノ・ウェルビーイング の榊原さんに教えていただきました。



榊原さんは、手足を自由に動かすことができない障害を持っているような方でも、脳波を使って意思表示することができるのではないかということを考えられており、それならそういうアプリをスクラッチを使って作ってみましょう、ということで実験してみました。



実際に自分の脳波を計測しながら練習を繰り返していると、比較的簡単に集中・リラックスを切り替えることができるようになってくるので、これでいろんなものを自由にコントロールできるかも、と思えてきてワクワクします。



今後は Scratch2Romo ともつなげてみたりして、念力(?!)で Romo を動かすとかもやってみたい。



MindWave Mobile と一緒に、榊原さんからお借りした本を読んで勉強中です。



(MindWave Mobile と Scratch をつなげる Mind2Scratch はまだ絶賛開発中です。体裁を整えたら App Store からダウンロードできるようにします)



 






プロフィール

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

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

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

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

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ