僕は発展途上技術者

Greasemonkey(グリースモンキー)で実感できるプログラミングの素晴らしさ




とツイートしたところ、反応をいくつかもらったので詳しく書いてみたいと思います。

Greasemonkey(グリースモンキー)は、ブラウザで開いたWebページを好きなようにカスタマイズできるツールです。Greasemonkeyだけではまったく役に立たなくて、これにJavascriptというプログラミング言語を使って書かれたスクリプト(小さなプログラム)とセットになって威力を発揮します。

userscripts.org などで探せば、他のひとがつくった便利なスクリプトをたくさん見つけることはできますが、自分専用のスクリプトを書くのが一番の醍醐味です。

普段使うページを自分用にカスタマイズすることによって劇的(?!)に便利になる例を挙げてみましょう。

電車を使って外出するとき、僕はいつも「駅探」を使ってどのくらいの時間がかかるかをチェックします。

便利なサイトですが、使ってて不満に思うことがありました。家から使うことがほとんどなので、乗車駅は最寄りの駅とほぼ決まっているにも関わらず、毎回入力しなければいけないのが面倒くさい。



ekitan_before

そこで、駅探用のGreasemonkeyスクリプトを書いて自分専用にカスタマイズしました。

駅探のページを開いたら最初から最寄り駅が入力された状態に、なおかつ下車駅にカーソルが移っている状態にし、すぐ入力できるようにしたのです。



ekitan_after

一回あたり1秒か2秒の節約かもしれないですが、これが毎日使っているサイトだと、積もり積もってだいぶ時間節約になるんじゃないかと思います。

駅探用のスクリプトは以下の通り、とてもシンプルです。






// ==UserScript== で囲まれた最初の部分は、スクリプトのタイトルや説明などの情報で、大事なプログラムの部分は最後のニ行だけです。

document.getElementById('sfname').value = '柴崎';

で乗車駅を入力した状態にし、

document.getElementById('stname').select();

で下車駅にカーソルがあたった状態にしています。

GreasemonkeyはもともとFirefoxの拡張機能で、Firefoxを使っていれば、ここからインストールできます。また、Greasemonkey用のスクリプトはそのままChromeにも読み込むことができて、こちらの場合は特に準備は必要ありません。

FirefoxでGreasemonkeyをインストールしたら、あるいはChromeを使っている場合は、以下のリンクをクリックして、上記の駅探用のサンプルスクリプトを読み込んで試してみることができます。


また、実際にスクリプトが動いている様子を動画に撮ってみましたのでよかったら見て下さい。





プログラムを書くことができれば、このようにちょっとした不便を改善することができるということがわかってもらえたでしょうか?

なかでもGreasemonkeyスクリプトは、それほどたくさんのコードを書かなくても、工夫次第で普段使っているサイトを劇的に便利にする可能性を持っています。

普段の生活で使っているサイトはもちろん、たとえば業務で使っている会社内専用のサイトで、要望を出してもなかなか聞き入れてもらえないような不便なところを自分専用に直してしまう、といったことができてしまいます。

Amazonのページに、その本が近くの図書館で借りられるかどうかを表示する


というツールを開発して公開していますが、これももともとは、図書館の検索ページが使いにくかったために自分専用に書いたGreasemonkeyスクリプトが始まりでした。

最初は自分専用でも、こうして改良していった上で公開され、いまでは多くの人に便利に使ってもらえるものが作れる、というところもプログラミングの素晴らしさじゃないかなと思っています。

Scratch Day Tokyo 2012 に参加してきてました

昨年に続き Scratch Day Tokyo に参加してきました。(昨年のレポートはこちら

Scratch に関わっている人にとっては年に一度の大イベント。

昨年はこども達含めどちらかと言うとユーザーとして参加した形でしたが、今回は、OtOMO の一員として、ワークショップのお手伝いや運営もお手伝いしながらの参加でした。

写真をまじえてレポートします。


↑会場は「多摩センター」駅前にひときわ高くそびえ立つベネッセの本社ビル。

↑ Scratch Day 始まりました。Scratch  が作られた MIT から送られてきたオープニングビデオが流れているところ。


↑ 1日目はワークショップとデモ主体で進められました。Otomo 主催の「キネクトとスクラッチをつなげて体をつかったゲーム作り」のワークショップ。


↑ 発表の時間。それぞれのチームがつくったゲームを順番に見てまわります。


↑ 別の部屋ではデモもおこなわれています。次男が一番夢中になったのはこれ。寒天でできた丸いパーツをつみあげていくとスクラッチ上でタワーが完成する東京造形大学の学生さん達の作品のひとつ。上から光を投射していて、その光が寒天に遮られることにより光センサーの値が変わることを利用した面白い仕組みです。


↑ 2日目はセミナーとワールドカフェ主体でおこなわれました。大ホールに会場を移しての開催です。

↑ 25年前ゲーマーだった僕、そして現ゲーマーの長男の心に一番刺さったのは、この対戦ゲーム。ラーニングセンター新浦安の中学生達がつくった作品のなかのひとつです。

Scratch Project

» Scratch | プロジェクト | zero fighter

↑ こちらはラーニングセンター新浦安の別の中学生の作品、zero fighter。細かい作りこみが半端なくて、スクラッチでここまでできるのかということを見せつけられました。ぜひ、画像をクリックしてスクラッチのサイト上で実際に遊んでみてほしいです。

上の子があと2年もすれば中学生になるということもあって贔屓目にみているのかもしれませんが、ラーニングセンター新浦安の中学生たち、それに造形大学の学生たちや大人を含めたほかの出展者たちも、自分たちの作品を実際にさわってもらいながら説明し、そして控えめに自慢する姿は見ていていいなあと感じました。

彼らがもっと称賛をうけるような場があるといいな、と思うと同時に、僕自身まだまだ足りていないのだけれども「それいいね」と思ったら、それを正直に伝える、具体的には直接伝えたり、Scratch のサイトでコメントを残したり、ブログや  Twitter や Facebook で紹介するということをやっていきたいと思いました。

例年は1日だけのところを、今年は2日間にわたっておこなわれ、2倍楽しい Scratch Day でしたが、運営側はその分大変だったと思います。関係者の方々、お疲れ様でした。

コンプガチャの仕組みを小5長男に教えてみた

コンプガチャの仕組みを小5長男に教えてみました。

参考にしたのは、


» コンプガチャの確率マジックを中学生にも分かるように説明するよ - てっく煮ブログ


一回10円でサイコロを振って、1から6まですべて揃えたら(つまりコンプ)100円のジュースがもらえるとして、お小遣い使ってそのゲームをやるか?と聞いてみました。

なんとなく6回じゃ無理そう、というのはわかるようですが、じゃあいったいどのくらいでコンプリートできそうかはよくわかりません。

確率や期待値の計算はまだ教えず、スクラッチ(スクラッチって何?というかたはこちら)を使って力技で解いてみたら?ということで自分でつくらせてみました。

大人からみるとだいぶ粗いつくりなのですが、せっかくなのでそのまま載せておきます。



スペースを押してリストをクリアしたあと、右上の緑の旗(スタート)を押してください。実際にスクラッチで1から6までの乱数を発生させ、コンプリートするまでの回数を数えます。

これを10回くりかえし、10回で合計サイコロを何回ふったかと、それを10で割った値、つまり何回でコンプリートできたかの平均をだしたのが左側の数字です。

理論値(14.7回)に近い数字がでてくると思います。

最初に掲げたゲームはどうやら自分に不利ということがわかったようです。

こどもたちにプログラミングを教える CoderDojo Tokyo #1 を開催しました

こどもたちにプログラミングを教えるCoderDojo Tokyoの第一回目を開催しました。

用意していたこどもたちの枠は満員となり、見学したい方もたくさんいらっしゃって、まずは良い感じでスタートを切れたんじゃないかと思っています。

HTML、Scratch、Squeakの3つのグループに分かれ、それぞれのグループで課題、作品づくりをおこない、最後に皆の前でプレゼンという形式でおこないました。

写真や実況中継のツイートは、FacebookのCoderDojo Tokyoページで紹介しているのでよかったらそちらを見てください。

CoderDojo Tokyo開催までの経緯

CoderDojo はアイルランドで起こったこどもたちにプログラミングを教えるコミュニティを作ろうというムーブメントで、今回ファウンダーの一人 James Whelton 氏がわざわざアイルランドから駆けつけてくださいました。

James 氏は若干19歳ですが、TEDxDublinでの彼のスピーチ「An Explosive Start」でも語っているように「Age is becoming less relevant(年齢なんか関係なくなってきている)」「Do what you love(自分が好きなことをやれ)」を実践し、起業家として、あるいはCoderDojo のファウンダーとして精力的に活動しています。


↑James氏のプレゼンに聞き入るこどもたちと保護者の方々

CoderDojo のことを知ったのは今から約2ヶ月前、作業場所として良く使わせていただいているコワーキングスペースの下北沢オープンソースカフェオーナーの河村さんに、面白いのがあるよと以下のA-Listersの記事を教えてもらいました。

» githubが子供向けコーディング道場を開催 « A-Listers

カフェの場所を提供するので一緒にアジア初のCoderDojoをやりませんか、と誘われたので、James氏にメールを送ってみたのです。

そうしたら、ちょうど同じくらいのタイミングで東洋美術学校の副校長をされている @daisukenakagome さんが東京でCodeDojoをやりたいとJames氏に連絡していたようで、だったら一緒にやったらいいんじゃないとJames氏より引きあわせてもらい、とんとん拍子で話が進みました。

#0と#0.5と銘打った運営側の準備、練習を兼ねたPre CoderDojoは下北沢オープンソースカフェで、#1の今回は東洋美術学校の素敵なカフェスペースを提供していただき開催にいたりました。

CoderDojo Tokyoの今後

#1が無事開催され、お祝いを兼ねJamesと食事してきたので、そのときにいろいろと運営に関する疑問点などをぶつけたところ、貴重なアドバイスが返って来ました。その他アイルランドでのCoderDojoの様子などもいろいろ聞いてみたので以下、箇条書きにしておきます。

繰り返しますが、相手は19歳の青年、「Age is becoming less relevant」とはいえ、いろいろと良く考えていて立派だなと感心してしまいます。

  • 毎回教えるためのカリキュラムを用意するのって大変だよね、に対しては、Kata(武道の型のアナロジー)というチュートリアル集のページを作ったので、ここに各Dojoのカリキュラムを集め、共有していきたいとのこと。素晴らしい。
  • こどもたちが何かわからないことに関して質問してきたとき、Googleでの検索方法など、その問題に対する答えをみつける方法を教えてあげる事が大事。「魚を与えるのではなく魚の釣り方を教えよ」という故事ですね。
  • たとえば Scratch -> HTML -> Javascript -> Python のように、GUIベースでとっつきやすい言語からタイピングを必要とした高度な言語に徐々にステップアップしていく流れをつくるのがおススメ。そのために、「君はそろそろこの言語は卒業だね、次にすすんでみたら」とこどもを促す必要がある。そのためにバッジやベルト(帯)の仕組みをうまく使っていきたい。
  • 各国のDojoはどのくらいのペースで開かれているのか?に関しては、毎週土曜日(週一)から隔週、月一などそれぞれのDojoによって違うとのこと。何人くらいのこどもが参加するのかに関しては、大きいところだと90人(!)、HTML/CSSコース、Javascriptコース、Pythonコースの3セッション(各30人)に分かれ、各コースに2〜3人くらいのメンターがつくとのことでした。
  • 一回目のセッションをやってみて、うまくいきそうなら二回目以降をやってカリキュラム化すればいい。駄目そうなら他をやればいいとのこと。このあたりは「Do what you love(自分が好きなことをやれ)」に通じているのでしょう。

などなど。

「そもそもなんで道場?」などいくつか聞き忘れちゃったので、続きは本日、下北沢オープンソースで行われる

» CoderDojo オトナの部


で聞きたいと思います。

今後、東京以外でも、また東京の中でもどんどんCoderDojoが作られるといいな、と思っています。

合気道を習っているのですが、僕が住む調布内でも10近い道場が各地にあり、また世界各国にもあります。師範の許可があれば別の道場にも出入りする許可が与えられるのですが、CoderDojoもおなじように、こどもたちが日本各地、そして世界各地の道場で仲間を見つけられると素敵なんじゃないかと思っています。

共感して、協力してくれる方がいたらどんどん連絡ください。

プロフィール

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

Raspberry Piではじめる どきどきプログラミングを書きました。

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

Twitter @jishiha

最近のエントリー

アーカイブ