2008年3月アーカイブ





誰も音頭とらないのかよwww


とても高専的だwww


高専カンファレンスについて一言言っておくか - yoko note(よこのーと)

くそーおれが首都圏にいてかつオトナだったら音頭取ってたのに><(しらじらしい


高専の人は各地元ではマイノリティになりがちだから、せめてWebとか情報系の界隈ではそうじゃないことを感じるために集まってみると面白いと思う。変態ばっかたくさんいるのはすごい楽しいはず。やるならなんとしても参加したいなー。




部活中のこと。話の流れで、今週中に「ひとり一作適当にゲーム作ろうぜ!」な流れになった。詳細はこの以下のid:yaakaitoによるエントリを参照(詳細というほどのあれではないけど、動機など)。


新入生へ向けて - yaakaito::Blog


おれはRuby/SDLを使うことにして、今日は自宅の環境にRuby/SDLをインストールして、テストコードを書いたところ。


変則ルールの不思議のダンジョンものを作ろうと思ったので、とりあえずマップセルじみたものを表示してみた。明日と明後日で一気に完成させてしまって、2作できたらいいなあなどと考えている。


学校のBSDには以前(こっそり)Ruby/SDLを入れたはずなので、以下のコードが動くことを確認して、開発をはじめることにしましょう>明日のおれ



require "sdl"

SDL.init( SDL::INIT_VIDEO)
screen = SDL.setVideoMode( 640, 480, 16, SDL::SWSURFACE)

map = Array.new( 12, [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0])

loop do
while event = SDL::Event2.poll
case event
when SDL::Event2::Quit
exit
end
end

# 画面の初期化
screen.fillRect( 0, 0, 640, 480, [ 128, 128, 128])

map.length.times do |i|
map[i].length.times do |j|
case map[i][j]
when 0
color = [ 0, 0, 0]
when 1
color = [ 255, 255, 255]
end
screen.fillRect( j * 40, i * 40, j * 40 + 40, i * 40 + 40, color)
end
end
screen.updateRect( 0, 0, 0, 0)
end



チームに関して思う10のこと - 大学生超奮闘記


id:lonlon2007が、ぼくがmixiでつぶやいたことを拾ってくれていた。いかんせんmixiで書いたことなので気を使って引用とかは自重してくれたみたいなのだけど、元ネタとか気になっちゃう人がいるかもしれないので公開しておきます。



 ふと自分の背後を振り返ると、立ち上げては潰れていったいくつもチームの残骸が堆積していることに気づく。


 昔からそうだった。絵を描くサークルであったり、バンド、アブストラクトゲームの同好会、ネット越しにゲームを共同製作しようとしたこともあったし、あるゲーム開発環境のユーザグループであったりもした。おれは集団というものに少なからず執着があって、「同好の志が集まって何かする」ということに魅力を感じるのか、子どもの頃からそういうことばかりやっていた。


 その中には結果を出せたチームとそうでなかったチームがある。


 作品が完成し、いくらかの収益を生んだチームもあり、小さなライブを成功させたチームもあった傍らで、ゲームエンジンを中途半端なところまで作った末にグラフィッカーを得られずに活動を頓挫させたチームもあった。いつの間にかほとんどのメンバーを失い、おれを含めて数人だけになり、新たに集まったメンバーで再興したものの、またすぐに活力が衰えてしまった――そんなチームもあった。


 再び新しいチームを得たおれは、また多くのメンバーを失い、小規模な活動を地道に続けていく中で気づいたことがある。


 チームは腐敗するんだ。


 厳密に言うなら、それは避けられないことではない。ある条件が成立したとき、チームは腐敗し、崩落する。


 その条件はただひとつ。孤独の存在だ。


 活動における負担が極度に集中しているメンバーがいると、その人を初めに「チームに貢献してるのはおれだけじゃね?」という気持ちが生まれる。これは「おれがチームに一番貢献している」とは別の心理だ。後者であれば、優越感や矜持を生み、クリエイティブな気持ちはチームにとってプラスのベクトルを向く。


 けど、前者はそうじゃない。それは「誰も自分の努力を見ていない」という気持ちを生む。わざわざ厄介なチーム活動を行う原動力は、お互いに尊敬し合える仲間を持てるということだから、この心理に至ると一気にチーム活動への興味が失われていく。


 お互いに刺激し合える環境を作り出す。


 それがチームを円滑に動かす最良の方法だ。SCTや技術係では、それを実践に移している。結果は新しいメンバーが来るまでわからないけど、たぶん成功するとおれは思ってる。


 それと、おれは(恋愛的な意味でなく)浮気性で、新しいもの好きというか新しい人好きだ。ほとんど初対面のような人との共同作業は面白い。 id:lonlon2007との出来事以来、ずっとそう思っていて、今いっしょに活動してる人が数人いるけど、やっぱり人は皆あまりにも個性的だ。


 みんなまったく別の思想を持っているから、おれもそれに感化され、感化し、新しい刺激から相手の魅力にもっと気づき、自分の魅力も磨かれていく。人との関わりは大切だ。関わる人がひとり増えれば、指数的に思想が豊かになっていく。そりゃ人脈が大切なのもうなずける。


 だから新鮮な気持ちでいつづけるために、ほとんど初対面の人との共同作業はやってみると面白いと思うし、チームでの活動にも活かしたい。



コピペしてから気づいたけど、これは誘導尋問ですね。きっとこの時間にこのエントリが公開されていることはid:lonlon2007的には計画どおりなのだと思います。




1000人スピーカプロジェクトでの基調講演を、昨日終えた。


ご存知の方もいらっしゃると思うけど、1000人スピーカプロジェクトとは、id:amachangさんの主催する「日本のIT業界から1000人のスピーカを輩出しよう!」という試み。そんな壮大な野望の、3/1000を自分たちが構成し、基調講演という大切な枠をあてて頂いたことはとてもありがたいことだ。



D


他のスピーカーたちと比べて、実力が及ばず、テクニカルな発表ができなかったのは少し悔しい。けど、1000人スピーカプロジェクトのテーマは、「今のあなたの言葉を聞きたい!」というもの。経験が足りていないのを含めて今の自分だし、そんなときだから語れる言葉もあるはず。次もまた1000speakersで発表、といったら少々贅沢だけど、別のカンファレンスもある。経験を積んだら、そういったものにもどんどん参加していけばいいんだ。1000speakersは、自分の「まだまだ具合」を再確認するのにも効果的。


それにたぶん、どれだけ成長して、技術がついて自信が生まれても、必ずどこかに未熟なところがあるはず。それを恥じる気持ちがあるなら、いつまでたっても恥ずかしがったまま。どこかのタイミングで「恥ずかしくてもそれが今の自分」と、言葉は悪いけど開き直ることが大切なんじゃないだろうか。


というわけで開き直った高専生の言葉でした。たどたどしいものではあるものの、もしかして誰かの心に響いたなら、それほどうれしいことはない。発表の機会をくれたid:amachangさん、gdgdな基調講演を(生)暖かく見守ってくださったみなさん、本当にありがとうございました。


ところで、1000speakers後の懇親会や、その二次会、三次会で、たくさんの方々と話し合うことができた。特に、id:nishiohirokazuさん、id:nyaxtさん、id:hyoshiokさん、id:viverさんらからは、今後の動きについてとても参考になるアドバイスをいただいた。感謝とワクワクの入り混じった気持ちです。ありがとうございました。


もし、ぼくらの発表を見た高校生プログラマの中に、「こんなんならおれのほうがすごい!」という方がいたら、ぜひ今後の1000speakersに参加してほしい。少し恥ずかしかったり、悔しかったり、失うものは確かにある。でも、そこで得るものは驚くほど大きい。絶対に損はしない。


1000speakers:4




遅ればせながらスライドを作って、旅の準備を終えた後、その朝はやってくる。


22日 11:30


東京駅着。


一時間半でドワンゴまで


同区内だからたぶん間に合うと思うので、


早めに着いて設営などを手伝いながらid:amachangさんやid:nyaxtさんと話すなどしたい。


22日 13:00


1000speakers開幕。


中途半端に低レベル(レイヤ的な意味でも程度的な意味でも)の話をして、


その場のみんなにDISられるなどする。


ショックのあまり他の人の発表をすべてメモってしまう。


22日 17:00


1000speakers無事終了。懇親会開始。


懇親会ではなるべく多くの人と喋ろうとするも、


最終的にはid:rosylillyとの漫才に落ち着く。


22日 19:00


飲み会が始まるので参加しつつ、色んな先達のお話を伺う。


Hackathonの準備をする。


何時かになって、サイボウズラボにてHackathonがはじまる。


id:amachangさんいわく「ぐだぐだする会」。


このとき「id:yaakaitoが参加したいと言ってた」と伝える。


23日 夜明けより


Hackathonの成果物があがっている。


早朝より、とある起業家の方との話し合い。9:00頃にid:lonlon2007退席。


23日 15:00頃


東京駅を発つ。


電車内で1000speakersまとめなどしつつ、


他の高校生ハッカーたちに「すごい楽しかったぜ!」とオススメする。


……つもりが、Hackathonの徹夜疲れで寝る。


23日 19:00頃


地元着。


日常生活に戻りながらも、


1000speakersで撒いた種は、


id:Tnzkの知らないところでその芽を伸ばしはじめている。


なお、標準語訛りはまだしばらく治らない。




404 Not Foundというブログを、id:yaakaitoと共同ではじめました。概要を引用しますー。



『ゲームプログラマのための数学入門』は、RPGやシューティングゲーム、その他のアブストラクトゲームなど、さまざまなゲームの理論や実装において使われる数学の知識を、「基礎まとめ」→「ゲームへの活用」と「逆引き」の3パターンで紹介するブログです。


(中略)



  • 中学生くらいの数学の知識

  • 簡単なプログラミングの知識

  • ゲームが好きな気持ち


404 Not Found

概要にも書きましたが、ぼくは数学がとても苦手なので、どちらかというといっしょに勉強していきましょうというスタンスです。


id:yaakaitoと共同なので、ぼくは中の人であると同時に一番更新を楽しみにしている読者でもあります:)


EPOCH@まつやまで知り合った友人の言葉を要約して紹介します。




  • 学生が数学に面白さを見出せないのは、「実際どう応用されるのか」が教えられないから

  • プログラミングだって普通はそう。自分も昔はまったく興味がなかった。

  • 先輩たちが面白いプログラムを作っているのを見て、一気に面白さを感じてハマった

  • 数学もそうなんじゃないかなー



そうそう!そーなんですよ。


学校の数学って、中学生くらいまでの内容ならどう実用されているのかわかる。足し算引き算、掛け算はもちろん、方程式の解き方とか、グラフの扱い方とか。この辺はときどき日常生活で使う場面がある。だから慣れえる。面白い。


でも、中学校も後半に差し掛かって確率の扱い方とか、証明とか、高校では微積分やベクトル、行列とかの概念になってくると、「何それおいしそうですね^^;」になる。証明なんか明らかに日常生活じゃ使わないし、積分なんて縦かける横の公式を使ったほうが、絶対速い。


だから普通高校生を、数学が得意な人と苦手な人に分けたら、それは「天才的に応用力のある人か数学の概念自体に興味を抱ける人」と「そうでない人」に分けたのと大体同じになる(あくまで大体だよー)。明らかに前者の占める割合は小さいから、世の高校生は数学が苦手になるわけだ。


プログラミング言語だって似たようなもんでしょ?


プログラミング言語のことをよく知ってる人は、「言語オタク」(否定的意味合いではなく)か「プログラマー」のどちらかには属している。言語オタクは当然言語のことを知らなきゃ意味がない。


じゃ、プログラマーはどうか。


プログラマーがプログラミング言語のことをよく知っているのは、普段からそれを使うからだ。言語オタクは言語研究が目的だからたくさんの言語に精通している。プログラマーはそうでもないけど、自分が普段使っている言語に関しては言語オタクより詳しいこともある。


それくらいに、「実際に使ってみること」ってのは重要なんだ。


だから数学も、実際に使ってみたら苦手なんてありえない。でも実際に使ってみることは、普通なかなか難しい。勉強の時間を作ってみて、問題集に数学の力を行使してみる、ってのがよくあるスタイルだ。これはそれなりに面白いけど、絶対に解けることがわかってるのはつまらない。もちろん反復練習は重要だけど。クリエイティブじゃない!って思っちゃう人って少なくないはずだ。


そこでゲーム。ゲームは数学の産物だ。ゲームを構成するありとあらゆるところに、数学的要素はその影を潜めている。だからゲームは数学を理解するために利用できる。特に、ぼくたちプログラマーにとっては。


プログラムは書けるけど数学は苦手だ!とかいう、ぼくみたいな人は結構いる。結構いるのをぼくは知ってるし、ということはぼくの知らないところにたくさんいると考えるのは自然だ。


そういう人にとって、ゲームと数学とをつなぐ架け橋を提供できたらいいな、と思う。


ぼくも苦手なひとりだからミスは多いと思う。そういうときは笑ったりしないで、どうか間違っていることを教えてください。答えを出すまで面倒を見なくてもいい。「間違ってるよー」と一言だけでもいい。ゲーム好きのみんなで数学をはじめましょー。




近いうちに必要になりそうなので、Z-80の仕様をまとめた。間違いとかアドバイスとか、お気軽に頂ければ幸いですー。


レジスタ


汎用のメインレジスタが8つ。A, F, B, C, D, E, H, L。


それぞれサブレジスタとして A', F', B'……が8つある。ただしサブレジスタには直接アクセスできず、メインレジスタと入れ替えて使う。ダブルバッファリングでの描画のように、表面と裏面があり、どちらがどちらというものではないと考えると認識がスムーズか。


また、A, Fレジスタは特殊なレジスタとして扱われる。


Aはアキュムレータで、演算時に補助的に使われる。PICでいうワーキングレジスタのようなものか。


Fはフラグレジスタと呼ばれ、各bitの電位でプロセッサの状態を表現する。bitへのマップは以下のとおり。



0bit

C - キャリーフラグ。演算結果がオーバーフローしたら1、しなければ0。インクリメントとデクリメントでは変化せず、論理演算時は常に0。

1bit

N - 減算フラグ。減算を行うと立つ。あまり使われないらしい。確かに用途がわからない。

2bit

P - パリティフラグ。シフト・ローテート時に、1になっているビットが偶数なら立つ。算術演算時にはオーバーフローしたら立つ。

3bit

使われない。

4bit

H - ハーフキャリーフラグ。下4bitで見たときに、キャリーフラグが立ちそうなときに立つ。

5bit

使われない。

6bit

Z - ゼロフラグ。演算結果が0なら立つ。

7bit

S - 符号フラグ。演算結果が正なら0、不なら1。

各レジスタは、BC, DE, HLという組み合わせで16bitレジスタとして扱うことが可能。これは便利そう。


Hフラグがよくわからない。いまいち理解できないので、ご存知の方はフォロー願います。


命令


Z-80組み込みの命令は57。ただし同じ命令でもオペコードによって動作が変わるという、演算子オーバーロード的な機能もある。これを区別すると90近い命令数になり、PICのときの30強と比べるとずいぶん多いと感じる。


命令の主な種別は以下。



  1. 8bitデータ移動命令

  2. 16bitデータ移動命令

  3. 交換・ブロック転送・検索命令

  4. 8bit算術・論理演算命令

  5. 汎用算術命令、CPU制御命令

  6. 16bit算術演算命令

  7. ローテイト・シフト命令

  8. ビット設定・判定命令

  9. ジャンプ命令

  10. サブルーチンコール・リターン命令

  11. 入出力命令


PICでは特定レジスタに設定した二進数値が入出力電位となったので、入出力に別途命令が割り当てられているのは意外。しっかり調べないとコケそうだ。


参考にさせていただいたページ




高専の長い春休みがはじまって、テスト期間ということで控えていたSCTの活動もさっそく再開している。今年は大きめの作品をふたつ公開しようと思っているので、ぎりぎり気味のスケジュールをこなすべく、花粉症に悶えながらアクセルを踏み込む毎日だ。


春休みは、単純に使える時間が多い。朝から日が暮れるまで(というとちょっとオーバーだけど)自由に活動できる。自由というのは、時間的なそれもさることながら、わざわざ春休みに学校に出てくる物好きがいないため、周りに遠慮することなく活動できるということも含む。


そういうわけで、これまでやってみたかったものの、周囲への迷惑などを考えて控えていた試みを実行に移している。以下のふたつ。



  • 英語でプレゼン

  • ホワイトボードを使って数学(っぽい)問題を解く


前者は、id:amachangがAsiajinカンファレンスで英語でのスピーチを敢行したことに感銘を受けてのこと。英語の発音とか聞き取りとか、そういう基本的なことも鍛えたいのに加えて、とっさの受け答えとかの力をつけたいと思う。


後者は、Life is beautiful: ビル・ゲイツの面接試験?私の場合を見て。数学の能力にはものすごく悲しいものがあるので、こちらも積み重ねていくことで少しでも向上でいれば。


その他、公開できるものがあればちょこちょこ公開していこうと思う。


このアーカイブについて

このページには、2008年3月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2008年2月です。

次のアーカイブは2008年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.32-ja