第18回Ruby/Rails勉強会に参加しています

思いの外遠かったです。学園都市線 & 駅降りてからがこんなにかかるとは。駅からウダーの方と一緒に行きました。No Ruby No Lifeのバッグのおかげです。

Rubyのプログラミング作法 by 中田さん

  • 流しのプログラマ
  • 作法って? 保守性が高い。実行効率がいい。よりも。美しく見えること。Rubyっぽく見えること。
  • 無作法は? 他の言語に見えちゃうコード。Rubyには苦手な書き方。僕の書くプログラムは、Hで始まる言語っぽいので他人事じゃない気もします。。。
  • Rubyの特徴。
  • 無作法っぽい(1)。プログラマにやさしくない。同じような処理、同じような構造なのに同じようなコードを繰り返し書かせるなど。close処理。ブロックを活用。
  • 無作法っぽい(2)。相手のクラスによって場合分け。C++Javaではoverloadingで。Rubyではduck typing。
  • 無作法っぽい(3)。クラスのためのクラス。どこかのデザインパターンの教科書をまるごろコピーしたようなコード。デザインパターン自体が対象言語の特性に依存している。→デザインパターンを使うなという意味ではない。C++とかJavaとかが元だから。。。Rubyの場合は、同じようなクラスやメソッドがない? 特異メソッドでもいい。
  • 無作法っぽい(4)。byte単位やbit単位の処理。多くの場合はもっと効率的な方法があるはず。ふつうは正規表現。検索の場合は、Hashとか。StringScanner。
  • 無作法の極み。同じようなコードがいっぱい。グローバル変数・関数がいっぱい。などなど。0から作るか?
  • まとめ。
  • 道具を知る。eval。最後の武器。ここぞというところでは使う。
  • 中庸。やりすぎるな。Rubyの秘孔をつく場合も。
  • 質問コーナー。
  • byte単位、bit単位の処理の秘訣。対象のデータの種類次第。テキストだったら正規表現。バイナリだったらpack/unpack。んー、byte単位とかbit単位の処理をしなければいけないのって画像とか動画みたいなのか多いからそもそもRubyで書くのはしんどいって気もします。。。(でもCygwin以外のWindowsで拡張ライブラリ作るのもしんどいんですよね。)
  • 関数型プログラミングについては? 1.9に言語仕様がフィードバックされてきてる。
  • リテラルの挙動を変えたい(ArrayをSetで上書きしたい)。parse.yをいじってルールを変える。Setのノードを作ってやる。1.8だったらeval.c。1.9だったらvm.c(だったかな?)。Rubyレベルではできないはず。

MyGameとゲームプログラミング by だんさん

  • ゲームメーカー。興味の対象はLL。ブログ。http://dgames.jp/dan/
  • MyGame。Rubyのゲーム開発用ライブラリ。
  • るびまのデザイン。ルビま!、ぱるまのデザイン。るびまの初心者向け記事。RubyKaigi2006の名札とか。
  • Rubyではじめるゲームプログラミング、7月に出版。
  • ゲームのデモ。
  • MyGameとは。Rubyで動作するシンプルなライブラリ。バックエンドはRuby/SDL
  • コンセプト。単純で小さく。簡単。初心者向け。
  • 特徴。驚くほど短く書ける。柔軟。オブジェクト指向
  • 初心者向け。そもそも入門書を書くために開発した。
  • 視覚的なフィードバック。
  • インストール手順。
  • MyGameを使ってみよう。
  • require 'mygame/boot'。エディタはViviだ。ウィンドウができる。いわゆるおまじない。
  • 画像を描画するプログラム。Image.render 'sample.png' ってことはワンライナーで画像が表示できそう。座標指定もできる。
  • 次に覚えるのは。メインループ。画像オブジェクトの使い方。キー入力の検出。
  • メインループの使い方。main_loop do image.render end 無限ループ。ESCキーを押すとプログラムが終了。1. スクリーンのクリア。2. 画像の描画。3. ウェイト。4. スクリーンの更新。ループの周期は60分の1秒。TVで遊ぶゲームでは普通。30fpsとか20fpsとか。
  • 画像オブジェクトの使い方。2通りの方法。クラスメソッドで描画。画像オブジェクトを作って描画。画像オブジェクトのメリット。描画が高速(初期化操作が1回で済む)。などなど。回転、半透明もできる。
  • キー入力。key_pressed?(Key::RIGHT) new_key_pressed?はキーが押された瞬間だけtrueが返る。
  • 質問コーナー。
  • Miyako、RPGツクールとの違いは? MyGameは覚えることが少ない。MyGameは機能いっぱいのフレームワークはあんまり用意していない(例外: シーン管理)。
  • キー入力のイベント処理はどこでやっているか? Wiiリコモンを使いたい。Ruby/SDLレベルで処理している。Wiiリモコンを直接はきびしいのでは。

nginxの話 by Stoyan Zhekovさん

  • Deploymentの話。
  • 最近は、Mogrel。犬の種類? HTTP server and library by Zed Shaw。Merb、Ramaze。
  • NginX(エヌジンエックス)。HTTP server and IMAP/POP3/SMTP proxy。20% of russian sites。
  • One man project。Do you read/speak russian? No CGI support。
  • Wny NginX。No memory leaks in th proxy。
  • Good performance。async。kqueueとか。
  • kill -HUP。kill-USR2。
  • 。。。さっぱりついていけませんでした(やっぱり)。
  • 質問コーナー。
  • nginxはとにかく落ちない。

Internationalization in Ruby on Rails by 氏久さん

  • i35s。
  • ウダー。
  • Ruby-GetText-Package。
  • rake updatepo。pot fileを作る。po filesを翻訳する。rake makemo。
  • デモ。エラーメッセージがすでに日本語。
  • Bad Know How。_('foo')
  • gettextは全て左手で入力。大変。
  • P.S. OnLisp読書会。Language Dev Camp 9月下旬。http://stack.nayutaya.jp/ この本も積んでます。

案内とか