僕は発展途上技術者

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もおなじように、こどもたちが日本各地、そして世界各地の道場で仲間を見つけられると素敵なんじゃないかと思っています。

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

うちの子にプログラミングを教えたい、でもどこからはじめればいいの?に答える

うちの子にプログラミングを教えたい、でもどこからはじめればいいの?という質問をもらったので答えます。

まず第一歩として、一人一台、買い与えるでもいいし、親のおさがりでもいいからパソコン、それもノートパソコン、を与えるのが大事だと思っています。

親のパソコンを貸すではダメで、それだと、これは触っちゃダメとか、新しくソフトはインストールしちゃダメねとか、いろいろ制限を設けてしまいます。好奇心のおもむくままにいろいろやってみたいというこどもにとって、そうした制限はうざったいはず、すぐに使うのをやめてしまうでしょう。

一度与えたあとは、もう好きなように使っていいよと宣言するのが大事。壁紙やスクリーンセーバーを自分仕様に変えたり、僕がIT系の勉強会に参加したときなどにもらってくる会社やWebサービスのロゴのステッカーをあげると、喜んでペタペタ貼っている。そうすることでこれは自分のものなんだと思わせるのが大切です。

この考え方はOLPCの自己所有原則に通じるとのこと。(@abee2 さんのツイートより)


じゃあ何歳から買ってあげたらいいの?という話になります。(@bluerabbit777jp さんの質問より)


こどもがプログラミングを始めるときスクラッチが断然おススメという話は、それだけで長くなってしまうので、また別の機会に書くとして、たとえばそのスクラッチの対象年齢はこちらを参照すると8歳からとなっています。

こどもたちが参加し、僕もお手伝いさせてもらっているこどもプログラミングサークル'スクラッチ'のワークショップでも基本3年生からとなっています。

対象年齢なんか意味がない、と思い、下の子には6歳から与えてみましたが、最近この8-9歳からという点にはやはり意味があるんだなと思えてきました。長男はいま10歳ですが、ほっておいても自分でプログラミングをします。次男は7歳ですが、ほっておくとスクラッチのサイトでみつけてきたゲームをひたすらやってしまいます。

おそらく8-9歳あたりから、こいつの仕組みはどうなっているんだろう?もっと知りたい、という思いが強くなってくるんだと思います。まだそれほど多くはないですが、何回かワークショップで手伝ってきて、他の子達も見てきた経験からの印象です。なので、あまり早いうちから与えるのもどうなのかな?と思います。

今日はここまで。質問やコメントがあれば、Twitterで@jishihaあてにお願いします。そうしていただいた質問などにも答える形で続きを書いていこうと思います。

Macでcom.akamai.single-user-clientを含んだログがでているときの対処方法

朝MacBook Airに向かって仕事を始めようとしたところ、コンソールが立ち上がっていて、

com.akamai.single-user-client

を含んだ以下のようなログが表示されていた。

akamai

↑クリックすると大きくなります

» Uninstall Akamai Download Manager and com.akamai.client.plist

» Akamai Download Manager の削除 - 宇宙線実験の覚え書き

あたりを参考にすると、Adobeのソフトウェアをダウンロードするときに一緒にインストールさせられるAkamai Download Managerが勝手に起動し10秒ごとにエラーを起こしているとのこと。

以下の通り実行してAkamai Download Managerを削除しました。


$ /Applications/Akamai/AdminTool uninstall -force
$ rm ~/Library/LaunchAgents/com.akamai.client.plist

Mac Time Machine のバックアップ頻度を変更する

Time Machine は、頻繁に差分バックアップを取ってくれて安心感があるのだが、バックアップが始まるとマシンが遅くなって鬱陶しいときがある。

"Time Machine"環境設定を開く... からは変更できないので、今まであきらめていたのだが、調べてみたら方法がありました。


# sudo vi /System/Library/LaunchDaemons/com.apple.backup-auto.plist

で com.apple.backup-auto.plist を開き、

        <key>StartInterval</key>
        <integer>3600</integer>

の部分を変更します。

1日2回ぐらいでいいので、思い切って43200(12 時間ごと)に変更しました。

iBooks Author を使って教科書「6歳からのScratchプログラミング」をつくってみた

iBooks Author がでましたね。


さっそく、App Store よりダウンロードして僕も教科書をつくってみました。



↑つくってみたのは「6歳からのScratchプログラミング」

以下のリンクをiPad でタップすると開くことができます。


誰でも教科書をつくれる = 誰でも先生になれる = あらゆることが手軽に学べる、時代の到来です。

ワクワクしてきました。


若い人へのアドバイス - いいから一回海外に行ってきなさい

中高の同窓会があり、今は大学で学生を教える立場にいる同級生から聞いた話。卒業旅行で海外に行く学生は以前より少なくなっていて、海外志向も薄くなっているとのこと。

じゃあ仮に今から150年後に生まれたとして10万円で安全に月に旅行できると聞いたらあなたは行くでしょうか?おそらくほとんどの人が、「そりゃあ行くに決まってる」と答えると思います。

今から約150年前、幕末にたとえばアメリカやヨーロッパに行くということは、死罪を覚悟で、それこそ財産を投げ打つほどの決心が必要なことだったはずです。今の月旅行と同じくらいの難易度だったんじゃないでしょうか。

NHK大河ドラマの「龍馬伝」で、福山雅治演じる坂本龍馬が、いつか家族を連れて船で世界一周旅行をしたいという夢を語る場面が非常に印象的でした。彼は結局その夢を果たすことなく暗殺されてしまいます。150年経った今、彼が熱く語っていた夢は、世界一周とは言わないまでも、たとえばアジアのどこかの国に一週間行って帰ってくるくらいだったらほんの10〜20万円でかなえてしまうのです。アメリカだったら20〜30万円くらいでしょうか。

なのに、なんで行かないのか不思議でなりません。

旅行でも留学でも移住でもなんでもいいから、どんどん行けばいいと思います。

こういう話をすると、「いやいや、若い人がこぞって海外に行ってしまい、そして優秀な人たちが帰ってこなくなっちゃったら、日本の空洞化が起こってしまうでしょう」なんて言う人がいます。そんなことは今の100倍くらい若い人が海外に流れてから心配しましょう、と言いたい。

僕は今は会社組織に所属していないので、自分より若い部下、後輩にアドバイス・教育したりすることがありません。でもIT業界にいると、周りは僕より若い人が多いです。若い人へのアドバイスなんておこがましいのですが、でもちょっと長く生きてきて、またアメリカで生活したこともある僕がアドバイスできるとしたら、

いいから一回海外に行ってきなさい

と言いたいです。

そして、僕と同じく、子供を持つ親の方には、家族で海外旅行をしておくことをおすすめします。塾や習い事にお金をかけるんだったら、そのお金を旅行費用にまわすほうが、よっぽど効果の高い投資だと思います。



ニュッとおすすめの関連記事を紹介してくれるSimple ReachをLokkaで作ったブログに導入してみた

最近よくみるニュッとおすすめの関連記事を紹介してくれるSimple Reachが気になっていたので、Lokkaで作ったこのブログに導入してみました。




Make: Tokyo Meeting 07 に親子で参加してきました - 僕は発展途上技術者

↑ こんな感じで、記事の終わり頃になるとニュッとでてきます 

Simple Reachを導入するためのLokka用プラグインも作ってみたので、Lokkaを使っている方、よろしかったらどうぞ。 

プロフィール

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

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

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

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

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ