Zombie.jsでtwitterに投稿する

最近タワーディフェンスのゲームを色々調べていてPLANTS vs ZOMBIESやARMY vs ZOMBIEさらにはSAMURAI vs ZOMBIESまであることを知ったんですが、皆ゾンビ大好きですね!それはさておき、Zombie.jsが便利です。Zombie.jsはCUIで実行できるブラウザエミュレータで、フォームの入力やクリックなどひと通りのブラウジングをJavaScriptで操作できます。Cookieやローカルストレージにも対応しているため、ログインしてああしてこうして〜ということもできます。サンプルとしてtwitterに投稿するコードを書きました。

これはこのページでログインボタンを押したあと
f:id:blankblank:20120906233348p:plain
このページに移動してツイートボタンを押す状況を再現しています。
f:id:blankblank:20120906233438p:plain
※一応本家の方でもいけると思うんですが、JavaScript周りでエラーが出て上手くいかなかったのでjsを切ってMobile Webでやりました。


リンク
Insanely fast, headless full-stack testing using Node.js
クライアントのテストはzombie.jsでいいんじゃないか - mizchi log
okame-log – Javascriptテストフレームワーク「Zombie.js」

特濃ゲーム開発塾2012でenchant.jsを使ったゲーム開発について喋りました

岩手でゲームを作ろう的な旨のセミナーで喋りました。

僕は初日の担当で、とりあえずゲームを一本作れるようになりましょう、というのが目標。初めは変数がどうだコールバックがどうだというお話を考えていたのですが、どうもプログラミングを話で教えるのは根本的に無理な気がしてきたので、座学ゼロでオール実技にしました。
f:id:blankblank:20120807135536j:plain
各々が課題をこなしていくだけでは面白くないのでレース形式にしました。ルールはこんな感じです。

  • 参加者は二人一組のチーム
  • 用意された課題を順にこなしていく
  • 課題ができたらgithubにpushする
  • 正解するとポイントゲット

教室の前には各チームのポイントが表示されたスコアボードが表示されています。これはgithubへのpushを検知するnotifierにもなっていて、node.js + WebSocketで書いたサーバーをgithubのWebHookで叩いています。

f:id:blankblank:20120808094359p:plain
チームごとにenchant.jsのキャラが割り当てられていて、ラップトップにアイコンが貼ってあります。

f:id:blankblank:20120807130657j:plain f:id:blankblank:20120807130710j:plain
spaceチーム knightチーム

課題はこんな感じです

  • Stage 1
    • クマを表示させろ!
    • 泣いてるクマを表示させろ!
    • クリックされたら泣くクマを表示させろ!
    • クリックした場所に移動するクマを表示させろ!
    • ドラッグした場所に移動するクマを表示させろ!
    • 勝手に移動するシロクマを表示させろ!
    • 勝手に移動するシロクマ10体を表示させろ!
    • ドラッグした場所に移動するクマと勝手に移動するシロクマ10体を表示させろ!
  • Stage2
    • クマをクリックする"ゲーム"を作れ!
    • クマが10体のシロクマを避けるゲームを作れ!
    • クマが次々に流れてくるシロクマを避けるゲームを作れ!
    • 時間を表示させろ!
    • BGM, 効果音を鳴らせ!
  • Stage3
    • クマから弾を発射させろ!
    • 弾に当たったシロクマを消せ!
    • 敵も弾を撃ってくるようにしろ!
    • シューティングを作れ!
  • Stage M
    • もぐらたたきを作れ!
  • Stage B
  • Stage P
    • Pongを作れ!

enchant.jsはもちろんのこと、JavaScriptも触ったことが無い人がほとんどだったので座学ゼロは不安だったんですが、最終的にはどのチームもそれなりに進みました。チーム作業にしたのと、事前課題としてcode.9leapやっといて下さいっていうのが効いたと思います。レース形式も思いのほか盛り上がって安心でした。

講義の様子はFacebookページにもアップされるのでこちらもよろしくお願いします。

Mac(lion)でhomebrewを使ってsshでリモートサーバーをマウントする環境を整える

MacFUSEとかOSXFuseとか色々あるみたいですがhomebrew経由でインストールしたソフトだけで環境を作りたかったのでメモ。
まずsshfsを確認します。

➜  ~  brew info sshfs
sshfs 2.4.0
http://fuse.sourceforge.net/sshfs.html
Depends on: pkg-config, fuse4x, glib, automake, automake, libtool
Not installed
https://github.com/mxcl/homebrew/commits/master/Library/Formula/sshfs.rb

==> Caveats
Make sure to follow the directions given by `brew info fuse4x-kext`
before trying to use a FUSE-based filesystem.

先にfuse4xを設定しろと言われるので従います。

➜  ~  brew info fuse4x-kext
fuse4x-kext 0.9.0
http://fuse4x.org/
/usr/local/Cellar/fuse4x-kext/0.9.0 (5 files, 272K) *
https://github.com/mxcl/homebrew/commits/master/Library/Formula/fuse4x-kext.rb

==> Caveats
In order for FUSE-based filesystems to work, the fuse4x kernel extension
must be installed by the root user:

  sudo cp -rfX /usr/local/Cellar/fuse4x-kext/0.9.0/Library/Extensions/fuse4x.kext /Library/Extensions
  sudo chmod +s /Library/Extensions/fuse4x.kext/Support/load_fuse4x

If upgrading from a previous version of Fuse4x, the old kernel extension
will need to be unloaded before performing the steps listed above. First,
check that no FUSE-based filesystems are running:

  mount -t fuse4x

Unmount all FUSE filesystems and then unload the kernel extension:

  sudo kextunload -b org.fuse4x.kext.fuse4x

言われた通りに進めます。

brew install fuse4x-kext
sudo cp -rfX /usr/local/Cellar/fuse4x-kext/0.9.0/Library/Extensions/fuse4x.kext /Library/Extensions
sudo chmod +s /Library/Extensions/fuse4x.kext/Support/load_fuse4x

念のためこの段階で再起動しておきます。
最後にsshfsを入れます。

brew install sshfs

あとは普通にいけます。

mkdir mnt
sshfs username@host:path mnt

アンマウントはumount

umount mnt

モチベーション3.0

モチベーション3.0 持続する「やる気!」をいかに引き出すか

モチベーション3.0 持続する「やる気!」をいかに引き出すか


人のモチベーションを食欲や性欲などの生理的動機(1.0)アメとムチで制御される外発的動機(2.0)社会貢献や自己実現などの内発的動機(3.0)と分類して議論する話です。外発的動機より内発動機の方が良いですよ、ということは誰しも経験的にぼんやりと理解していると思いますが、この本の良いところはそれを証明するいくつもの実験が示されているところにあります。モチベーション3.0を導入すれば仕事がうまく行って家族や友人との関係が良好になって集中力も上がります、とまで言われるとやや進研ゼミが過ぎるように聞こえますが、参考になる点が多いのは確かでした。


本書では主に2.0や3.0について書かれていましたが、むしろ1.0つまり食欲や性欲に可能性があるように思いました。ので、次はこれを読みます。

性欲の科学 なぜ男は「素人」に興奮し、女は「男同士」に萌えるのか

性欲の科学 なぜ男は「素人」に興奮し、女は「男同士」に萌えるのか

enchant.jsを使って9分でゲームを作る動画

enchant.jsを使って9分でゲームを作る動画をアップしました。

9分でゲームを作る
コンソールを表示するのを忘れていたり、途中からファンの音がうるさかったり見直すと色々アレですが。
作ったゲーム(と見た目が同じもの)は9leapで公開されています。
http://9leap.net/games/1391