クリックゲームがもたらす影響

僕は小さい頃にゲームゲームばっかりやっていたゲーマーんだけど、僕が小さかった頃に今みたいなClickするだけのゲームしかなかったと考えると僕はゲームをやってたんだろうか?今出ているようなClickだけしていればいずれ強くなっていずれゲームをクリアできるっていうゲームに対して僕は小さい頃だと楽しさを感じることができたんだろうか?

僕が小さい頃にやっていたゲームは今の携帯ゲームに比べて数倍難しくて面白かった。マリオにしろドラクエにしろFFにしろそれぞれに固有の面白さがあった。マリオは今の釣りやらジャンプする奴やらの数倍難しいタイミングゲームだし、ドラクエ・FFは今のClickゲームを数倍難しくしたRPGだと思う。それを小さい頃にやって自分なりに考えてすこしずつ進んでいくことに喜びを感じていたし面白さを感じていた。そんな僕だからなのか今のClickだけで進んでいけるゲームに対してちっとも面白さを感じることができない。

じゃあ、もし僕が今幼少期を過ごしていたとしたら今のゲームをしなかったのかと言われると全く自信はない。今のゲームしかなかったのであれば、それはそれで楽しいって感じるんじゃないかとも思う。ビックリマンチョコについたシールを集めるのは面白かったし、カードダスで出てくるカードで単純なバトルをやるのも面白かった。あんな感じで今の子供達って携帯ゲームを楽しんでいたりするのかと妄想したりする。

僕は今のゲームたちが好きではない。クリックするだけで進んでいって射幸性を高めることで継続させる。純粋にゲームが面白いって所で勝負するんではなくて、やらないと損するとか他のユーザと絡ませることでゲームをせざるえない状況をユーザに与えることで継続させるゲームが多くてげんなりする。継続させる仕組みを考えて、継続させることができたら今度は課金させる仕組みを考える。それを面白いってユーザは感じることができるんだろうか?(*1)まぁ、もともとゲームを遊ぶのが無料っていう時点でどこかで課金してもらわないといけないのはしょうがなくて、無料でやれるって状況に感謝しないといけないんだけど、どうしてもその流れが好きになれない。レバーを引くとある一定間隔で餌がでる仕組みを猿に与えると猿はずっとレバーを引き続けるらしい。それと今の携帯ゲームが同じ気がしてならない。

小さい頃にゲームをやり過ぎると馬鹿になるって言われて僕は育ってきた。でもその話は実は結論は出ていなくて、本当かどうかわからないみたい。単調な行動をし過ぎると馬鹿になるってのは証明されているらしいけど、昔のゲームは今のゲームに比べて頭をつかう奴が多かったから結論がまだ出てないのかなーと思う。でも今のゲームは違う。30年後に調査をしたらゲームをしたら馬鹿になるって証明されてるかもしれない。

そろそろカードゲームバブルも終わるんだろうけど、その先の各社が作るゲームが気になる。今と同じような仕組みを使ってモチーフだけ変えて全く別のゲームができましたよーっていって大々的に出してくるのか、それともこれじゃいかんっていって本腰入れて面白いから続けるゲームを作ってくるのか。それによって30年後のゲームの評価とか今の子供たちの学力が決まってくるのかもしれない(*2)。

*1: 僕がやったことがあるゲームがそんなのしか無くて他に面白いものがあるのかもしれない

*2: って書いてみたけど、携帯ゲームをやってる人間の大半は子供じゃなくて大人なんじゃね?と思って調べてみたけど資料が出てこない

node.js + socket.ioの覚書

今触ってる奴の覚書

ServerとClientの通信

socket.io.jsを読み込んでio.connectで接続する。Server、Clientともにsocket.onでメッセージを受信して色々やる

// サーバ側
io.sockets.on('connection', function (socket) {
    // こんな感じでメッセージを受信
    // Clientの第1引数と同じで受信できる
    socket.on('user info', function(info) {
       // メッセージ受信後の処理
    });
});
// client側

// これで接続
socket = io.connect();

// これでメッセージ送信
// 第1引数がメッセージ名、第2引数が送信するデータ
socket.emit('user info', info);

これから記載していくことはServer側、Client側でSocketという名前の変数に値が入ってるものとして記載してる

通信中のclient idを取得する

サーバ側で取得する

    // これで通信中のIDが取得できる
    var id = socket.id

メッセージを送信してきたClientへメッセージを返答

socket.emit('message', info);

接続しているClient全体にメッセージを送信

io.sockets.emit('message', info);

個別にデータを送信

io.sockets.socket(socket.id).emit('message', info);

まとめ

WebSocketのリアルタイム通信は大体これぐらいあればいろいろできる。簡単にチャットソフトとかもすぐできる。io.emit()でClient側から来たデータをio.sockets.emit()で全Clientに流す。個別チャットをやりたかったらio.emit()で第2引数に個別の送信先のsocket.idを渡してもらえばそこ流すだけでいい。

あまりに簡単にかけすぎるからnode.jsとWebSocketに恋してしまいそう。ってか、Binaryデータもデータとして投げてこれるらしいんだが、それをそのままClientに流しちゃうとセキュリティ的に色々困ったことが起こりそうな気がする。まぁ、個人でやってる分にはそこまで考えないけど、企業でやるならそこらへんまで気を付けないといけないのかもねぇ。

何を信じて何を疑うべきか

福島の廃棄物問題が話題になってて思ったことをつらつらと。

http://media.yucasee.jp/posts/index/10685

http://www.yomiuri.co.jp/national/news/20120319-OYT1T00184.htm

福島のがれき受け入れっていうのは難しい問題なんだと思う。僕は福島の瓦礫問題は早く解決してほしいし、受け入れて問題がないのであればさっさと受け入れて早めに解決して欲しい。ただ、「問題がなければ」って言うのがすごく難しい問題なんだと思う。

放射能っていうのは眼に見えないし濃度が高くなければすぐに影響が出ることはないと言われている。すぐに影響がでないっていうのは影響がないって明言できないから言っている言葉なんだろうけど、この「すぐに」っていうのが曲者。「すぐ」影響がないならあとから影響が出るのかよって考えてしまう。放射能がどれくらいの濃度で影響があるのかっていうのがころころ変わるっていうのも曲者。今までダメだって言われていた濃度がじつは大丈夫でしたって言われても「ほんとかよ?」って思ってしまうのは人間として当然だと思う。

最初のリンクを読んでもらうとわかるんだけど、もし今福島の瓦礫を日本全国で処理したとして30年後に実はすごく影響がありましたって言われても遅い。影響があるものは封じ込めて影響の範囲を狭めるっていうのは鉄則だと思うしその判断は間違っていないと思う。でもその判断をどうやって下すのかっていうのがもめている論点で誰もなんか気持ち悪いから受け入れたくないって言ってるわけじゃない。

「福島の瓦礫を日本中で処理することで絆を見せつけましょう」ってそんな問題じゃない。絆を見せるんであれば別の方法もある。そんな短絡的なことを言われても論点がそもそも違って何いってんだって思ってしまう。ころころ変わる人の意見を信じれない。けど自分よりも知識がある人が言っていることであれば信じれる情報だとは頭でわかっている。何を信じて何を疑うべきかよくわからない。

Radiotubeをアップデートしました

Radiotubeをアップデートしました。コメントを何件か頂いたのでその修正です。

Radiotube

修正内容

  • 音楽再生中にプレイリストを開くと音楽再生が止まっていたが、止まらないように修正
  • アプリインストール先をSDカードに変更

対応できていない不具合

  • 音がならない場合があるらしい。音がならないとだけの書き込みなので何が原因かわからず。ストリーミングなのでダウンロードに時間がかかっている?

対応予定の修正

  • ネットワークの状態により音楽再生に時間がかかる場合があるので、ダウンロード中のダイアログを出す
  • プレイリストからプレイリストへ音楽の移動
  • 音楽再生中に新たな音楽を追加すると音が鳴らなくなるので修正。もう一度初回起動画面から再生すると音楽が流れ出すので大した問題で花いいので今のところ放置。

まとめ

なにかしら対応して欲しい機能があれば出来る限り対応します。不具合も記載があれば出来る限り直します。なにかあればコメント欄等にどうぞー。

iOS5系のSafariでtouchstartが動かない場合の対処

iOS5系のSafariでjQueryを使用してDOM構築時にtouchstartイベントにbindしてもtouchstartが検出されない。

以下のコードで試したところiOS4系やAndroidだと検出できるけど、iOS5系だと検出されなかった。

    $(function() {
        $('#content').append(
            $('<div>')
                .addClass('detail1')
                .on('touchstart', function(e) {
                    alert('detail1');
                })
        );

どうしたもんかと色々弄ってたら以下のコードで動いた

    $(function() {
        $('#content').append(
            $('<div>')
                .addClass('detail1')
                .on('touchstart', function(e) {
                    alert('detail1');
                })
        );
        $('#content').on('touchstart', function(e) {
        });
    });

親の要素に何でもいいからtouchstartイベントをbindしてあげるとなぜか動いた。他のtouchmoveとかtouchendとかも同様に動かないみたいで、その場合も親要素に空のイベントをbindしてあげると察知するようになるっぽい。

これはバグなのかなぁ・・・?

当たり前のレベル

人間にはその人の当たり前のレベルがあると思う。この当たり前のレベルが高ければ高いほど人間って素晴らしく生きていけるんだと思う。

例えばデブとガリがいたとする。デブは常々っ痩せたいと思っていてガリは常々太りたいと思っていたとする。この二人の食生活とか運動量とかを比べると明らかな違いがあったとしても二人から見れbそれが当たり前なのかもしれない。要はどこが基準となって当たり前っていうのを考えるかっていつお当たり前ってのはその日それぞれにそれぞれの高さで定義荒れているものだと思う

人間として高みを目指したければ当たり前のレベルを上げればいい。

運動することが当たり前になれば運動することは苦にならなくなるし、勉強することが当たり前になれば勉強することが苦にならなくなる。当たり前のレベルを上げることで勝手にその人の能力が上がるっていう話だ。

逆に言えば当たり前のレベルっていうのを考えればいろいろ幸せになれる、

何かのコンプレックスで悩んでいるんでればコンプレックスを当たり前だと思えばいい。別にコンプレックスはあって当然なんだ、それは当たり前なんだと思い込んでしまえばいい。当たり前のレベルが下がれば人は幸せを感じることが多くなるんじゃないかと思う。自己のレベルを上げたいのであれば当たり前のレベルを上げて、シア合わせになりたければ当たり前のレベルを下げればいい。相対的な評価を考えていろいろ思い悩むぐらいなら全てを捨てて当たり前だと思えばいい。

ちょっと考え方を変えるだけで人間はすぐに楽になれる。

はてなブログからWordPressへ移行した

はてなブックマークが第三者に行動履歴を送ってたとかですごく盛り上がってるけど、僕としてはそんなことはどうでもよくてはてなブログがとにかく機能が足りない。はてなダイアリーを使い続けても良かったんだけど、レンタルサーバ借りてるなら自分で作るべきだよなぁと一念発起してWordPressを入れてみた。んで、WordPressを導入する上でやったこと。

WordPressのインストールとテーマの設定

まぁ、普通に。これはどうでもいいところだから割愛。強いて言えば、テーマ探すのに結構手間取った。(*1)

スパム対策

Akismetが標準で入ってるけど、これってIDが必要。英語読んでID入れるのがめんどくさかったから別のを探してみた。Google先生に聞いてみると「Spam Free WordPress」の評判がいいみたいだから、こいつを入れてみた。ちょっと使ってみてダメだったら別のに変える。

はてな記法の追加

僕がもともとはてなを使っていたのははてな記法が便利だったから。WordPressに移行してもはてな記法を使いたいなーって思ってたらプラグインを作ってる人がいた。「WP HatenaNotation」っていうやつ。これ、すごく便利。作ってくれた人ありがとう!!!

コードの色付け

コードを書くことが多いから色付けして欲しい。Google先生に聞いてみると「SyntaxHighlighter Evolved」一択っぽい。これを導入すると以下みたいに色付けすることができる。

void main(void) {
    printf("はろー、わーるど");
}

んけど、普通に「SyntaxHighlighter Evolved」の記載方法を行うと「WP HatenaNotation」を入れてるからpタグが入ってしまう。なんで、「SyntaxHighlighter Evolved」の記載方法を使わずに「WP HatenaNotation」のスーパーPre記法を使って書く。そのままだと色付けしてくれないいのでFooterに以下を記載して無理やり色付けさせる。必要ないjavacriptも読み込んでしまうことになるけど、別に気にする必要もないかなー。

<script type='text/javascript' src='http://blog.choilabo.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shCore.js?ver=3.0.83c'></script>
<script type='text/javascript' src='http://blog.choilabo.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCpp.js?ver=3.0.83c'></script>
<script type='text/javascript' src='http://blog.choilabo.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCss.js?ver=3.0.83c'></script>
<script type='text/javascript' src='http://blog.choilabo.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJava.js?ver=3.0.83c'></script>
<script type='text/javascript' src='http://blog.choilabo.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJScript.js?ver=3.0.83c'></script>
<script type='text/javascript' src='http://blog.choilabo.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPhp.js?ver=3.0.83c'></script>
<script type='text/javascript' src='http://blog.choilabo.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushXml.js?ver=3.0.83c'></script>
<script type='text/javascript'>
	(function(){
		var corecss = document.createElement('link');
		var themecss = document.createElement('link');
		var corecssurl = "http://blog.choilabo.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css?ver=3.0.83c";
		if ( corecss.setAttribute ) {
				corecss.setAttribute( "rel", "stylesheet" );
				corecss.setAttribute( "type", "text/css" );
				corecss.setAttribute( "href", corecssurl );
		} else {
				corecss.rel = "stylesheet";
				corecss.href = corecssurl;
		}
		document.getElementsByTagName("head")[0].insertBefore( corecss, document.getElementById("syntaxhighlighteranchor") );
		var themecssurl = "http://blog.choilabo.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shThemeRDark.css?ver=3.0.83c";
		if ( themecss.setAttribute ) {
				themecss.setAttribute( "rel", "stylesheet" );
				themecss.setAttribute( "type", "text/css" );
				themecss.setAttribute( "href", themecssurl );
		} else {
				themecss.rel = "stylesheet";
				themecss.href = themecssurl;
		}
		//document.getElementById("syntaxhighlighteranchor").appendChild(themecss);
		document.getElementsByTagName("head")[0].insertBefore( themecss, document.getElementById("syntaxhighlighteranchor") );
	})();
	SyntaxHighlighter.config.strings.expandSource = 'ソースを表示';
	SyntaxHighlighter.config.strings.help = 'SyntaxHighlighterについて';
	SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n';
	SyntaxHighlighter.config.strings.noBrush = '指定のブラシが見つかりませんでした: ';
	SyntaxHighlighter.config.strings.brushNotHtmlScript = 'HTMLスクリプトのオプションのためにブラシが構成されませんでした: ';
	SyntaxHighlighter.defaults['auto-links'] = false;
	SyntaxHighlighter.defaults['pad-line-numbers'] = false;
	SyntaxHighlighter.defaults['toolbar'] = false;
	SyntaxHighlighter.defaults['wrap-lines'] = false;
	SyntaxHighlighter.all();
</script>

上記では一部しか色付けされないんだけど、必要になったら追加する。

まとめ

別にわざわざ移行する必要性はなかったんだけど、自分で色々いじくれるならこっちのほうが断然いいよね。僕がレンタルサーバを初めて借りた時には「WP HatenaNotation」がなかったから結局WordPressのブログは閉じてはてなダイアリーに戻ったんだけど、これがあるならわざわざはてなダイヤリーとかはてなブログとか使う必要性がないよね。

本当に「WP HatenaNotation」さまさまですね。

*1: シンプルなテーマって結構ない。。。