quick-bookmark

emacs で、ちょっと場所を覚えておいて、他の場所を見てから、
戻ってきたいときがある。

そんな時、このelispが使える。

emacsにはもともとレジスタというものがあり、
そこに様々な情報を格納出来る。

例えば、カーソルの位置やバッファの名前、ファイル名だ。

レジスタの名前は英数字で決めることが出来る。

しかし、だ。
レジスタへの位置の記録は、以下のようなキーバインドだ。

C-x r SPC r

これでは、長くてやってられない。
そもそも覚えるのはひとつでいいのだ。
ちょっと覚えておきたいだけなのだから。

そこで、以下のコードだ。

;; quick bookmark
(defun set-quick-bookmark()
  "set quick bookmark"
  (interactive)
  (progn (point-to-register ?t)
         (message "栞を入れました。" )))
(defun go-quick-bookmark()
  "go quick bookmark"
  (interactive)
  (progn (jump-to-register ?t)
         (message "栞まで飛びます。")))

(global-set-key (kbd "C-,") 'set-quick-bookmark)
(global-set-key (kbd "C-." ) 'go-quick-bookmark)
(define-key php-mode-map (kbd "C-,") 'set-quick-bookmark)
(define-key js2-mode-map (kbd "C-,") 'set-quick-bookmark)

これを実行すると、C-, でその場所を記憶し、C-. でその場所まで戻る。

これが慣れると本当に使える。

毎日名言をミニバッファに。

Emacsの起動時に、名言をミニバッファに表示させてみる。

;; メッセージをランダムに選択する
(defun random-call-message()
  (interactive)
  (let* *1
	(len (length random-messages)))
    (car (nthcdr (random len) random-messages ))))

; emacs start upと同時に走るhook
(add-hook 'emacs-startup-hook
	  (lambda ()
	    (message (random-call-message))
	    t
	    ))

これをdot.emacsに設定すると、設定した名言を起動時に表示してくれる。

え、これがなんの役に立つのか?

「無駄とも思える努力の積み重ねが、「美しさ」を維持する」
のですよ(爆笑

*1:random-messages '( "希望さえあればどんな所にでも たどりつけると決心している。" "あきらめたらそこで試合終了だよ" "立って歩け 前へ進め あんたには立派な足がついてるじゃないか" "全身に何百の武器を仕込んでも 腹にくくった”一本の槍”にゃ適わねぇこともある・・・・" "諦めたら、そこで試合終了だよ" "泥にまみれて尚、前へと進むものであれ"

スクエニが語るプロジェクトを失敗させないプロジェクト管理

全文はこちら

読み物としては本当に面白かったです。
でも、2chで言われているように、

FF13を見ろ


「出来ない」=「捨てよう」
「出来ない」=「最悪なくてもゲームが成立するように」

RPGにとって街はなくてもいい要素じゃないだろw
ゲームが好きでない連中が金儲けのためにゲームを作ると、結局こうなる。

今モバゲーもGREEもそうなってきている。

本当に面白いか?と問うた時、正直面白くないのだ。
ストーリーもまともなものなどひとつもないから、プレイの価値も薄いゲームばかり。

そして分析屋が言うのだ。
「みろ、全ては分析なのだ。データドリブンだ。」

そのデータドリブンを徹底しているというアプリが、自分のゲームのコミニティすら読んでいなかったりするのだ。

早いとこ、DeNAGREEの鼻をあかす第三勢力が生まれてほしいな。

9leapつまらない

★9leap
http://9leap.net/

ワンアイデア、ワンゲームを実践する非常にたくさんのゲームが集結する。
enchant.jsという非常に美しいjavascriptライブラリで作られている。


なるほど。
確かに前時代的。ファミコン的。

でも、正直な話、5分で飽きた。
みなさん本当にすごいと思う。
どこを見てもenchant.jsと9leapを賞賛する話題しかない。
「9leap つまらない」と言っている人はいないのだ。
これはいったいどういうことだ

9leapは、enchant.jsは本当にそんなにすばらしいか?
そこを意見したい。


ゲーム性。確かに高い。
でも、もうしわけないが、所詮クソゲー
まともに面白いものも、いくつかある。
それでも、ずっと遊びたいとは思えない。
だって本当に刹那的だから。

どうみても開発者、技術者達の自己満足に見える。

「おれ、こんな短時間でこんなことできたんだぜ。」

まぁ、クソゲープラットフォームっていうのがコンセプトみたいですから、
確かにあっている。

しかし、これを全地球的に全力で売り出すと言っているUEIすげえと思う。
どうやって洗脳するつもりかしら。

世界でもっともクソゲーに使われているライブラリかしら。


例え、ARがJavascriptで出来ようとも、実際、ARで作られたゲームって面白いか?
実際の空間にくだらないイラストのモンスター出てきて、何か面白いのか?

いま、この時代に、インベーダーゲームで世界を変えられるのか?
という疑問が本当に消えない。


----と、

Google先生で検索しても、9leapとenchant.jsをべた褒めなので、
ちょっと対立意見描いてみました。

でもいうだけじゃいやだから、
javascriptiphoneを見据えたゲームプラットフォームを何本か作っています。

クオリティ重視。
重課金必要なし。
iphoneのみ対応。(smartphoneのみ対応させれば十分だと思う)

ライブラリで出すつもりでしたが、それじゃ自己満なので、
ちゃんとゲームを作成してみています。

ADV、RPG、育成系、カード系。

モバゲー、GREEで出来るようなゲームは、全て、
Javascriptで、iphone上で出来る。
もっと面白く、出来る。

目標、年内。

    • P.S.

断っておくが、enchant.jsは素晴らしいプロダクトだと思う。
ソースも美しいと思う。やれば、ほとんどのゲームを再現できると思う。
でも、やった人がいない。

非クソゲーを目指して

「これまではFlash Lite1.1でクソゲーを作ってきた。
これからはJavascriptクソゲーをつくる時代。」

とは某有名プレゼンでの一幕。

そしてゲームを直感的につくるライブラリが、たくさんある。
簡単に作れるといっても、それらはあくまで、「プログラミング」を必要とする。
そこで、プログラミングを使用しないレベル(文章のレベル)でゲームを作れるようにしてみた。
sunflower.jsを作って、その上で動作し、簡単な文章でノベルゲームを作成できるようになった。

が、しかし。

いろいろ調べてみると、そういうサイトはたくさんあるのだ。
そして案の定、そのどれも、本当の「クソゲー」の宝庫である。
正直時間のムダともいうほどのクソゲーの宝庫だ。
これはノベルゲームについても言える。
正直時間のムダともいうほど中身なしのノベルゲームが比較的多い。

簡単につくれるようになったのに、これはどういうことだろう。

これはどうやら、

プログラムをせずに、ゲームをつくれる = とにかく労力なしでゲームをつくれる

と勘違いされている結果のように思える。

正確には、

「あまり労力なしにプログラミングを簡略化できる」だけであって、
イラスト、イメージ、レベルデザイン、シナリオ、と、やらなければならないゲーム要素は、
まだまだあるのだ。

本物のクソゲーは、ここらあたりを全く考えていない。

それでいいんだという意見もある。
Javascriptで作るブラウザゲーはあくまで簡単に表現者になるためのスタート地点で、
その先にはもっと深い世界があるので、そこへのスタート地点になればいいという考え方だ。

しかし、Javascriptは単にクソゲーを量産するだけでなく、ちゃんとしたゲームを作れるはずである。

とりあえず、自分で作ったシステムを使って、ちゃんと遊べるゲームをつくろうと思う。
iphoneで動作するレベルで、かつ面白く動作するものが目標だ。

iphoneで動作するという時点で、いろいろなことに制限が出るのだが。

そして次に、非クソゲーを目指して、プログラミング以外の部分も補完するプラットフォームをつくろうと思う。

目標は今月中にプロトタイプ。

インデントの状態を一発で切り替えるelisp

プログラミングにおいて、その職場、及びプログラムのコーディング規約に従うのは当然の話である。

昨今では、インデントにはスペース4つが当然になりつつある。
(もちろんそうでない場合も多々あるが、特にPHPでは、顕著だ。
それに習い、自分のプログラムにおいても、スペース4つで対応している。

しかし、時たま、職場や預かったプログラムで、インデントにタブを要求される場合がある。
indent-tabs-modeという変数を切りかることによって、スペースとタブを切り替えるのだが、
正直この作業を頻繁にやりたくない。

また、インデントにタブとスペースが混ざるソースなど醜悪この上ない。

ので、関数一発でスペース←→インデントができる関数を作ったので、晒しておく。

(defun toggle-indent()
  (interactive)
  (let ( ( tabs-mode indent-tabs-mode ) )
    (if tabs-mode 
		(progn (setq indent-tabs-mode nil) 
			   (progn (save-excursion 
						(goto-char (point-min)) (replace-string "	"  "    " )))
			   (message "インデントはスペースになりました。" ) )
      ( progn (setq indent-tabs-mode t ) 
			  (progn (save-excursion
					   (goto-char (point-min)) (replace-string "    "  "	" ) 
					   (message "インデントはタブになりました。")))))))

M-x toggle-indent
を呼べば、そのバッファ中にある全てのスペース4つがタブになったり、タブがスペース4つになったりする。

とりあえずこれで解決。

プログラマはビジネスマンではない

よく、求人情報誌に、

「ただのプログラマではなく、ビジネスマンとして。。。」

と書かれているところがある。

この一文は危険だ。


まず、この一文には職業差別をひしひしと感じる。
ただの」?

プログラマ→SE→ビジネスマン

という価値基準だ。

自分でWEBサイトの一文字すら変えられない(変える努力すらしない)無勉強マンどもが、
「おまえらただのプログラマから、ビジネスマンになりやがれ」
とかしゃべっているのだ。

プログラマはビジネスマンではない。
プログラムは誰が書いても同じではない。

ビジネスマンが一番だとする会社は、たいてい職業の価値すらきちんと図れない人がトップをやってる。
そういう社風があるから、もっとも重要たる求人情報に、そのような言葉が出るのだ。

さらに、こういう人たちはビジネスマンの意味すら履き違えている気がする。
人を意に沿うように動かすためのツールとして、「ビジネスマン」と連呼する。

本当のビジネスマン、というか仕事の出来る人達は、職業を差別しない。
特に、自分の思想を叶える技術を持つ人々なら尚更のこと、軽視しない。

プログラマだけではビジネスは成り立たない。
それは真である。
しかし、技術なしに城は立たない。

そういうことを理解しない人がいる社風。
それが現れているのが、この一文なのだ。