僕は発展途上技術者

[rails] delayed_job を使ってメールを送るときは deliver メソッドをつけない

年齢に勝てずもの忘れが激しい。ついこの前はまっていた箇所を忘れて、再度はまってしまった。

なので、忘れないようにブログに書いておく。

delayed_job を使ってメールを送るときには、


UserMailer.delay.comment_created_notification.deliver


でなく


UserMailer.delay.comment_created_notification


のように deliver メソッドをつけない。

結構忘れがちで、今回もはまってしまったのは、開発環境で delayed_job を起動するのが面倒で、デバッグのために一時的に delayed_job をはさまず送りたいというときに、


UserMailer.delay.comment_created_notification





UserMailer.comment_created_notification


と書き換え、deliver を付け忘れたまま、「あれ?あれ?メールが送られないぞ」と悩むパターン。

正しくは、


UserMailer.comment_created_notification.deliver


でないと送られない。

参考: [https://github.com/collectiveidea/delayed_job#rails-3-mailers](https://github.com/collectiveidea/delayed_job#rails-3-mailers)

ウェブサービス開発者がリアルイベントをやる際に準備したこととやったあとの反省点

先週金曜日、運営している「まちクエスト」のリアルイベント「まちクエスト・カフェ」をおこないました。

イベントの詳細は、

» [リアルイベント「まちクエスト」カフェをおこないました](http://blog.machique.st/post/70691446043)

を見ていただくとして、ここでは「まちクエスト・カフェ」のために準備したことや反省点を書きます。これからリアルイベントやオフ会を開きたいと考えているウェブサービスの運営者の参考に少しでもなれば、と思います。

まずは準備したこと。

- 場所は下北沢OSSカフェをお借りしました。OSSカフェは通常は金曜日お休みなのですが、一日店長やるなら、サービスの名前を冠して「◯◯カフェ」という形で営業させてもらえます。Square のレジの使い方やラテの入れ方などは当日開店前に教えてもらいます。飲食のバイトをやったことがなかった僕はもしかしたらこの一日店長の役割が一番緊張したかも。。



↑ラテ、なかなかうまくできました

- お店の外にだしておくのぼりを用意しました。雨・雹と降ってきてしまい今回は途中で店の中にひっこめてしまいましたが、これからのイベントでも使えるものなので、あるといいかと思います。お値段もそんなにかからず今回は [makumaku](http://www.makumaku.jp/EachMain) というところにお願いしましたが、印刷代自体は1000円かかりませんでした。ポールは近所のホームセンターで買ってきました。かつぐと桃太郎になったみたいです。



↑標準サイズの 180cm x 45cm。結構でかい。

- 告知は Facebook がメイン。CoffeeMeeting にもイベントを立てました。

- OSSカフェのまわりにいくつかクエストを作り、それらをまわってコンプリートしていく形式のクエストラリーを用意しておきました。同じ下北沢駅でも反対側にそこそこ歩く場所にもクエストを作ったのですが、それをラリーに含めてしまうと、かなりの距離を歩くことになってしまうのでやめました。自分で実際に歩いて作ったのでそのあたりの距離感がつかめて良かったと思います。

» 「下北沢まち歩き」のクエストラリー

はイベントが終了してもこれからも楽しめるので、下北沢に遊びに来るようなことがあれば、あるいはOSSカフェに来る際に、良かったらやってみてください。

- 「まちクエスト」のトップページの一番上段に最新のクエストラリーを表示するようにしました。通常は最新のクエストラリー一覧は一番最下段にあるのですが、それだと目立たないので。といっても、これはイベント最中に気づき、急いでカフェで修正してデプロイしました。

さて、次に反省点です。

- 雹が降ってくるほどの天気のせいにしたいところですが、でももう少し初めて「まちクエスト」を体験しに来ていただく人を増やしたかった。どのくらい来るのかが読めなかったので告知を Facebook メインにしていたのですが、それだけだと不十分だったんだと思います。次回はイベント系のサービス使って幅広く告知したい。

- [追記] 参加者から指摘をうけました。確かに、と思ったので追記します。事前に参加者のプロフィール(自分のサイト、興味のあること、ユーザ名など)をイベントページに記入してもらっていたほうが、誰がどんなことをしているのかがわかって良かった。あるいは、LT大会の前に軽く自己紹介タイムを設ければよかった。

- 役割分担をきちんとすべきでした。飲み物を用意してサーブする一日店長、LT大会の司会、動画の配信、写真の撮影、イベントの模様を Twitter と Facebook に実況、とこれだけでも5つも役割があったのに、事前に把握しておらず分担しませんでした。幸い、事前にお願いしていないにも関わらず、OSSカフェの河村さんが動画配信を、@fuji3zpgさんが写真撮影を、そして沖縄にいながらも配信されている動画をみながら、@ogaworks が実況ツイートと togetter にまとめてくれたため([『まちクエスト・カフェ』まとめ](http://togetter.com/li/605236))に、終わってみたら全部ちゃんとできてはいたのですが、いつもこんなに気が利く方々に恵まれるとは限りません。有能な方の反射神経頼みはいかんなと思いました。

- 初めて「まちクエスト」をやる方のために、サービスの内容を A4 一枚とかにまとめたものを用意し、プリントしておくべきでした。実際に複数の方に聞かれ、「すみません、ありません」と答えざるえませんでした。今から用意します。

これらを踏まえて次回に活かしたいと思います。

もし「第2回 まちクエスト・カフェ」に場所を提供してもいいよ、という方がいらっしゃいましたらこちらまでご連絡ください。

SpheroのイケてるPV動画7連発

Sphero Advent Calendar 2013 の5日目のエントリーです。連日の連投で疲れてきたので、Sphero のハック関連からちょっと離れます。



上の Sphero の PV を観て、思わず衝動買いしてしまったのですが、Sphero のサイトにあがっているほかの動画もなかなか面白いので紹介していきます。



Sphero を買うと、ジャンプ台2つがついてくるので、動画のように Sphero をジャンプさせて遊ぶことができます。でもこの動画のようにうまくコントロールできるようには、結構練習が必要。

\#TricksWithBalls のハッシュタグで Sphero のトリックプレーを撮った動画を Twitter や Instagram に投稿すると、毎週、その週一番のトリックプレーの投稿者に Sphero があたる、というのもなかなかプロモーション的にうまいです。



Apple 限定モデル。スケルトン仕様で超カッコイイです。普通のやつを買ってから、このモデルの存在を知りました。これ知ってたら、絶対こっち買ってた。

動画は感動的。ちょっとうるっとしました。こどもに Sphero を買ってあげたら、将来トニー・スタークばりの天才エンジニアになるのかもしれません。。



Sphero 対応アプリの The Rolling Dead の紹介動画ですが、The Walking Dead 観たことがあればニヤリとするでしょう。



あのオバマさんも Sphero を操作した!という動画。「Excuse me, give me some space to drive my ball.」(ちょっと失礼、僕のボールが動くんでそこあけてくれない?)とオバマさんに言わせた Sphero、すごい!



超大型 Sphero PeaceKeeper、笑えます。動画の公開日は、2013/04/01 です。巨大ネコと戯れるシーンとか良く撮ったなあ。



最後、おまけ。Sphero の公式動画でなく、AppBank からの紹介動画。楽しそうです。

どうでしょう?

Sphero 欲しくなりました?欲しくなった方はぜひこちらから :-) ↓

【日本正規代理店品】 Orbotix Sphero 2.0 white S003AS(JP)
Orbotix (2013-09-26)
売り上げランキング: 1,089


そのほかの Sphero 関連エントリーはこちらです↓

» ロボティックボール Sphero 2.0 が楽しすぎる

» Sphero を Scratch(スクラッチ)から動かせるようにしたのでこどもでもプログラミングできるよ

» スクラッチからSpheroをブログラミングできるScratch2Spheroを改良しました

スクラッチからSpheroをブログラミングできるScratch2Spheroを改良しました

昨日に引き続き Sphero Advent Calendar 2013 の4日目のエントリーです。

スクラッチからSpheroをブログラミングできるScratch2Spheroを改良しました。

» https://github.com/champierre/scratch2sphero

Scratch2Sphero が何か?については、

» Sphero を Scratch(スクラッチ)から動かせるようにしたのでこどもでもプログラミングできるよ

を参照してください。

Scratch2Sphero を使うことにより、スクラッチから forward/backward/right/left の4つの命令を送って Sphero を動かせるようにしたわけだが、この方法は LOGO の流れを組むスクラッチらしからぬ方法。

LOGO に関する Wikipedia の記述に詳しいが、自分が主体となって前方に動いたり、△度回転するという考え方のほうがこどもにとってはわかりやすい。

スクラッチのネコを動かす、「◯歩動く」「△度回す」にならい、move と turn の2つの命令で動かせるようにしました。◯歩の部分は steps という変数(10, 20, 30... のように 10 刻み)で、△度の部分は degrees という変数(0から359)で指定します。

たとえば四角形を描くように Sphero を動かすには「10歩すすんで90度回る、10歩すすんで90度回る、10歩すすんで90度回る、10歩すすんで90度回る」でいけるので、以下のようなスクリプトになります。



では、三角形を描くように動かすにはどうすればいいでしょうか?これ大人は結構ひっかかる。何も知らない子どものほうが難なくできる問題なのです。

答えが気になる方は、Sphero を実際に動かしてみるか、持ってない方はスクラッチのネコに描かせて確かめてみましょう。

【日本正規代理店品】 Orbotix Sphero 2.0 white S003AS(JP)
Orbotix (2013-09-26)
売り上げランキング: 1,089

Sphero を Scratch(スクラッチ)から動かせるようにしたのでこどもでもプログラミングできるよ

このエントリーは Sphero Advent Calendar 2013 の3日目のエントリーです。

【日本正規代理店品】 Orbotix Sphero 2.0 white S003AS(JP)
Orbotix (2013-09-26)
売り上げランキング: 1,089


» ロボティックボール Sphero 2.0 が楽しすぎる

で予告したように、Sphero を Scratch(スクラッチ)から動かす方法を紹介したいと思います。

スクラッチは MIT が開発した教育用プログラミング言語で、ブロックを並べることで、こどもやプログラミング経験がない大人でも楽しくプログラミングできます。こども用と侮るなかれ、マリオやテトリス、頑張ればドラクエライクなゲームだって作ることができます。

スクラッチの Remote Sensor Protocol という仕組みを使うことで TCP ポートを経由して外部との接続が可能なことを利用して、Sphero とつなげるプログラムを書いてみました。

ちょうど、前日の Sphero Advent Calendar の2日目のエントリー、

» Sphero gem で Sphero を操作してみる

で紹介されている Ruby の Sphero gem を使います。

動かした環境は MacOSX 10.8.5 です。スクラッチは 1.4 を使います。

まず hybridgroup-serialport gem と sphero gem をインストールします。


% gem install hybridgroup-serialport
% gem install sphero


あるいは


% sudo gem install hybridgroup-serialport
% sudo gem install sphero


次に、コンピューターと Sphero を Bluetooth で接続します。これは通常の Bluetooth ペアリング設定です。Bluetooth 設定アシスタントより Sphero に接続しましょう。

このあたりは、Sphero gem で Sphero を操作してみるのエントリーに詳しく載っています。

次にスクラッチと Sphero とをつなぐ

» scratch2sphero


をインストールします。


git clone git@github.com:champierre/scratch2sphero.git


インストールできたら、scratch2sphero を起動する前にスクラッチを起動しておきます。Scratch 1.4 をインストールしていない場合は、Scratch 1.4 のダウンロードページより MacOS X 版をダウンロードおよびインストールします。

スクラッチを起動したら、「調べる」カテゴリーを選び、「スライダーセンサーの値」ブロックの上で右クリックして、「遠隔センサー接続を有効にする」を選んで「遠隔センサ接続」を有効にしておきます。



いよいよ scratch2sphero を起動します。


% ruby scratch2sphero.rb


このとき


serialport.rb:22:in `create': Resource busy


というエラーが出るかもしれませんが、あきらめず何度かやり直してみます。

Sphero が点滅から青く光るようになれば接続成功です。

スクラッチの画面で、「制御」カテゴリーから『「◯◯」を送る』ブロックを選び、真ん中のスクリプトエリアにドラッグして置きます。



scratch2sphero と接続したことによって backward/forward/left/right のメッセージを送ることができるようになっているので、どれかを選び、ブロックをクリックしてメッセージを送ってみましょう。Sphero を動かすことができます。

このメッセージが TCP ポートの 42001 番を経由して Scratch2Sphero に渡され、Scratch2Sphero が sphero gem を使って Sphero を動かしています。

また、スクラッチで変数「speed」(0 から 255 まで)と「initial_heading」(0 から 359 まで)に値をセットすることで、それぞれ、Sphero のスピードと Sphero の forward を受け取った時に進むデフォルトの方向を変えることができます。各変数は「変数」カテゴリーで「新しい変数を作る」をクリックすることで作ることができます。

これらを組み合わせ、たとえば Sphero をジグザグに進ませるプログラムはこんな感じで書けます。



こどもでも Sphero をプログラミングできるようになる、ということが大げさでない証拠に、小6息子が Sphero を動かしている模様を動画で撮りました。



Sphero についてもっと知りたい場合は、こちらを参考に。

» ロボティックボール Sphero 2.0 が楽しすぎる

» ころころ可愛い♡なのに高性能!Orbotix Sphero 2.0 が面白い #sphero #gosphero

Sphero Advent Calendar 2013は明日以降まだ埋まっていないところをみると、日本ではまだあまり注目されていないんでしょうか?

以下の Amazon リンクから買えるので、ぜひ Sphero 2.0 を手に入れて Advent Calendar にブログ記事を書きましょう :-)

【日本正規代理店品】 Orbotix Sphero 2.0 white S003AS(JP)
Orbotix (2013-09-26)
売り上げランキング: 1,089

ロボティックボール Sphero 2.0 が楽しすぎる

PV を見て思わず Amazon で衝動買いしてしまったロボティックボール Sphero 2.0 が楽しすぎる。

【日本正規代理店品】 Orbotix Sphero 2.0 white S003AS(JP)
Orbotix (2013-09-26)
売り上げランキング: 1,089


こちらがその PV です↓



Amazon で購入したら翌日には届きました。

ブルーのカバーも合わせて購入↓


こういうガジェットにありがちな英語の説明書一枚にテキトーな包装でくることを予想していたら、思いのほかちゃんとした立派な箱でびっくりしました。しかもちゃんと日本語化されている。説明書もちゃんと数ヶ国語に翻訳されている。充電器のコンセントに差す部分も、だいたいどこの国にも対応できるよう4パターンくらい用意されたアダプタをつける方式で、すでにいろんな国で販売されている様子が伺える。

こどももいるし、結構荒っぽい使い方をしたいと思ったのであわせてブルーのカバーも買ったのだが、自由に変えられる本体の色がわかりにくいので、あとになって透明なカバーにすれば良かったと後悔。

bluetooth 経由で iPhone や Android 専用のアプリからコントロールできる。うちは iPhone だが、セットアップは難なくできて、すぐに動かせるようになりました。

さっそく自宅近くの公園で遊ばせていたら、ワラワラこどもたちが寄ってきて、「これどこで買ったの?」「いくらするの?」の質問責め。本体は頑丈なので心配ないのだが、コントローラーとなる僕の iPhone 5S をこどもたちに貸していたら、もう興奮し過ぎてこどもたち同士の取り合いになりそうだったのでヒヤヒヤ。Sphero のコントローラー用には、耐衝撃カバーがついた古い iPhone を使ったほうが良さそうだと思いました。

PV にあるように完全防水で水の上でも走るので、風呂でも遊ばせることができる。どこか公園の池などで遊んでみたいのだが、電池切れ or 故障で動かなくなったときに、最悪取りに行けるような池というとそうなくて、まだ手頃な池がみつかっていない。

付属のジャンプ台でジャンプさせるのが、これまた楽しくて、iPhone 5S のスローモーションカメラで撮影しながら、息子たちと延々遊んでいます。





さらに、開発者にとってうれしいのは、API が公開されているため、いろいろとハックできるところ。さっそく Scratch でコントロールできるようにしてみました。



簡単に Sphero の動きをプログラミングできるので、自動操縦が思いのまま。

コントローラーのプログラムのscratch2spheroをgithubに公開し、詳細はSphero Advent Calendar 2013に登録した次のエントリーで紹介する予定です。

いやあ、こどもも大人もこれだけ楽しめるおもちゃはなかなかないです。いい買い物をしました。

【日本正規代理店品】 Orbotix Sphero 2.0 white S003AS(JP)
Orbotix (2013-09-26)
売り上げランキング: 1,089

iOS7 に対応したマンホールマップ 1.0.3 をリリースしました

マンホーラー(マンホール好きな方々をそう呼ぶそうです)必携のアプリ、「iOS版マンホールマップ」を iOS7 に対応させました。




» マンホールマップ - iTunes - Apple

1.0.2 までのバージョンだと iOS7 では起動してすぐクラッシュしてしまうので、本日より AppStore でダウンロードできる 1.0.3 へのアップグレードをお願いします。

前のバージョンからすでにそうだったのですが、マンホールマップは今は、@s5ot さん(ブログ: s5ot.send(:blog))が開発してくださっています。

@s5ot さんはRubyMotion で作ったマンホールマップをメンテしてくれる方を募集しますという無茶な募集にすぐさま応募してくださり、募集した翌日にはお願いすることを決めました。

地図画面はサクサク動くようになり、住所を入力して検索すればその場所に移動できる「住所検索」もできるようになって使い勝手が格段に良くなりました。素晴らしいです。

また、1.0.2 よりアプリからもマンホール写真を投稿できるようになっているので、いままで閲覧専用で使っていた方も、お気に入りのマンホールを見つけたらその場で投稿するのにお使いください。

「勉強しかできないバカにならない方法」- フジテレビ「全力教室」の茂木健一郎氏の回をみての感想

フジテレビ「全力教室」の茂木健一郎氏の回を観た。


「勉強しかできないバカにならない方法」というテーマの元に、現役東大生たちを相手に授業を行う。授業前のインタビューで、「一発、やってやりたい。彼らが持っているプライドを申し訳ないけれど、ズタズタに壊したい!」


» 講師に、茂木健一郎が登場!現役東大生たちを相手に、熱血授業を展開!『全力教室』

テレビで久々に心動かされた内容でした。

僕自身、筑波大学附属駒場 -> 東大 という絵に描いたような偏差値教育を体験してきて、「勉強しかできないバカ」というのは非常によく分かるところ。

「勉強しかできないバカ」というのは、ペーパーテストで判定可能な決まりきった問題を解決する処理能力はめっぽう強いが、それに比してテストでは優劣を判定できない想像力だとか創造する力が著しく低い、ということを指していると思っている。

入社した会社はそこそこ大きく、新人研修は約一年間おこなわれ、たとえば英語研修ならばTOEICで評価される。「択一式の答えの正解の部分がボーッと光るように見える」などと冗談を言っていたくらい、ペーパーテストは得意中の得意。業務が始まっても、新人の頃というのは決まりきった仕事しかしないので、そつなくこなせていたと思う。

でも偏差値教育の効果が発揮されたのはここまで。

その後、アメリカに本社を持つソフトウェア会社の日本支社に転職、そのソフトウェアの会社のアメリカ本社に転籍、ITベンチャーに転職、独立、と僕の人生が進んでいき、解き方が決まっていない問題ばかりの世界になっていくと、自分なんてほんと大したことないなと、すごい奴なんてゴロゴロいる、という感覚を持つようになった。

自分が通ってきた道に反して、来年中学生になる長男には中学受験はさせず近くの公立中学校に通わせる。旅人算や時計算、ニュートン算なんかよりも、Scratch(MITが開発した教育用プログラミング言語) をやったり、合気道やサッカー、キャンプしたり、ボルダリングをやったりというほうが大事だと思っているからなのだが、これがなかなか勇気が必要だったりする。まわりのこどもたちは塾に通っていたり、あるいは僕の親からは心配される。

「こどもたちは将来ますます解き方がわからない問題ばかりに直面する。それゆえに中学受験から始まる偏差値教育には問題がある」という強い信念を持ち続ける必要があるのだが、まさにその部分を「全力教室」の茂木健一郎氏が力強く擁護してくれたように思う。

「Googleが日本のIT教育支援、5000台のRaspberry Piを提供へ」に対してもやっと感じていること

いま Raspberry Pi が熱い。


「これが、日本が変わる第一歩になる」(Google会長 Eric Schmidt氏)---Googleは2013年10月29日、日本のコンピューターサイエンス教育を支援するプロジェクト「コンピュータに親しもう」を開始すると発表した。ワンボードコンピュータ「Raspberry Pi」(関連ページ:ITproまとめ - Raspberry Pi)を5000台提供、NPO法人CANVASと協力し、1年で2万5000人以上の児童・生徒の参加を目指す。


» Googleが日本のIT教育支援、5000台のRaspberry Piを提供へ、Schmidt会長も“授業”より

これ自体はとてもいいニュースなんだが、何かこうもやっとしたものをずっと感じているのでそれを書いてみたい。

Raspberry Pi 標準の OS の Raspbian に始めから入っている Scratch とセットで語られているので、よくわかっていない人には「簡単に始められる」という印象を与えてしまいがち。しかし「簡単にできますよ」とはどこにも書かれていないし、実際簡単ではない。

Scratch は簡単(小学生低学年でもできるという意味での簡単ということです)というのはまあ一度でも触ったり、それを使いこなすこどもを見たことがあれば同意できると思う。でも Raspberry Pi は、しばらく実際に触ってみたが、僕でもてこずる。

なにせ購入してすぐ起動してみたが、ディスプレイに画面を映すことができず3ヶ月くらいは放置していたほど。

仮に熱心な親がこどものためにと思って Raspberry Pi を買ったとして、Scratch でもなんでもいいが起動できるところまで到達できるかは微妙。ただ、そこで親が投げ出したあと、「これ、好きにしなさい」とこどもに丸投げしたあとがチャンスといえばチャンス。

そこから自力で、環境を整え Raspberry Pi を自在に操ることができるようになったこどももきっと現れるはずで、その子はもうそのままスーパープログラマーへ一直線。Google でもどこでもやっていけるくらいになるだろう。

以下を読めばシュミット氏はそのあたりわかっていそう。100人に1人かあるいは1000人に1人かはわからないけれど、何人かはGoogleに入れる級のエンジニアに育てばいい、とも読める。


追記

その場にいた阿部先生からの指摘を受けました。シュミット氏もそんなに乖離していたわけではないとのことですが、この発言自体は日本法人の広報部長のものだそうです。なおシュミット氏の見解についてはこちらが参考になる -> https://plus.google.com/u/0/+EricSchmidt/posts/J4KT3Wy6gmy





じゃあそうでない人には意味がないかというと全くそういうわけじゃなくて、結局いつも最後はこういう結論になっちゃうんだけど、ちょっと楽しそうだなと興味を持ったらやったらいいんじゃないかと思う。実際楽しいし。

僕が小中学生のときには50万近くもしたから自分のパソコンなんて買おうとも思わなかった。でも Raspberry Pi は 30 ドルぽっちなんだから。

Mac OS X Mavericks にアップデートしたら bcrypt-ruby gem がインストールできなくなったときの対処法

brypt-ruby に限らずだと思うのだが、Mavericks にアップデートし、bundle install で


Installing bcrypt-ruby (3.1.1)

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.


というエラーがでたときの対処法。

» error: failed to build gem native extension when installing rails on mac mountian lion os

によれば gcc-4.2 が /usr/bin にないからだ、とのこと。


# brew update
# brew install apple-gcc42
# sudo ln -s /usr/local/bin/gcc-4.2 /usr/bin/gcc-4.2


をおこなってから再度 bundle install でうまくいった。

Mavericks は無料になったけれど、OS のアップデートをすると、たいがい2、3日はそれまで動いていたものの修復に追われるので、人件費考えると依然高い。



プロフィール

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

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

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

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

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ