Ruby勉強会@関西-10

滑り込みでプリンセスラインに間に合ってなんとか遅刻せずに到着。いつものように自分用のメモを書きます。
RubyでCを使おう by 西本さん

  • 丸投げシリーズ第3回。趣味。ウクレレもやってる。
  • Ruby標準の拡張ライブラリの説明。
  • RubyからCを呼出す意義は? 高速化、低リソース化、Native関連の昨日の利用(ハード、OS)。とか。
  • Rubyでは標準で可能。基本的にC、C++。それ以外でもややこしいが使えないことはない。SWIGもある。
  • 拡張ライブラリを作るためのポリシー。基本的にNativeで全て書くこと。グル(Matz)のお達し。導入が簡単でややこしくない。Rubyコードが入るとパフォーマンス低下。でも。Native依存の部分だけNativeで書いた方が柔軟じなんじゃ?
  • Javaの場合。nativeのクラスファイルが必要。Makefileも自分で。面倒。
  • Rubyの場合。mkmfでMakefileを作る。楽。
  • どっちが簡単? もちろんRuby!! Rubyには開発者の愛を感じる。
  • コンパイラ。UN*Xはgccがベスト。WindowsはVisualStudio/MinGW with MSYSがよさそう。
  • リソースの管理。確保したリソースは適切なタイミングで開放。メモリ確保は、ローカル変数や配列、オートポインタを使うことがお勧め。関数外にstaticで保持する場合は、GCされる時に開放するのがよさそう。明示的な開放用の関数。
  • コーディング。適切な型変換(Ruby<=>Cの型変換)。可読性をよく。
  • デバッグ。多くは、リソース管理に問題あり。VisualStudioやgdbなどのデバッグを使うことがお勧め。
  • Cソースサンプル。グローバル関数の定義。#include "ruby.h" VALUE foo(VALUE self, VALUE val){ return val; } void Init_foo(void) { rb_define_global_function("foo", foo, 1)} VALUERubyのオブジェクト。インスタンスメソッドの場合。rb_define_classとrb_define_method。クラスを作る必要がある。
  • 型変換。int ival = FIX2INT(val1); VALUE result = INT2FIX(iresult);
  • CからRubyを呼出す。ID to_sID = rb_intern("to_s"); VALUE result = rb_funcall(val, to_sID, 0);
  • ruby.h。定数。データタイプ。T_NIL: nil。T_OBJECT: Object。T_STRING: String。T_FIXNUM: Fixnum。Ruby定数。Qnil: nilオブジェクト。などなど。
  • 型変換、チェック。FIX2INT。StringValueCStr。Check_Type。型が違ってたら例外を投げてくれる。
  • 生成、実行。rb_str_new。rb_eval_string。rb_funcall。
  • 例外。rb_raise()。
  • 定義。rb_define_class。rb_define_method。
  • Makefileの生成。mkmfソースサンプル。require "mkmf" create_makefile("foo") コマンドラインから直接実行でも可。ruby -r mkmf -e 'create_makefile("foo")' こりゃ楽。
  • デモ。require 'benchmark'。if (TYPE(str)) != T_STRING){}。とりあえず音鳴らす。ローパスフィルタ。ハイパスフィルタ。
  • 質疑応答。プロファイルは-rprofileの方がいいかも。

「Miyako」の発表 by サイロス誠さん

  • ゲーム遍歴。ゲームブック遍歴。300冊ほど。復刊に協力。最近自作イラストも。
  • 開発ポリシー。(余計なことに)頭を使わない。
  • デモ。ノベルゲーム風。音も鳴ってる。なつかしー。昔のファミコンアドベンチャーゲームぽい。
  • 独自フィーチャ。Authorモジュール。Miyayoの名前は京都かからきてたのか。
  • 構成。Miyakoスクリプト/Miyako Extension/Miyako API/Ruby SDL。SpriteとEffect。残像、ラスタスクロールとか。Plane。画像を画面全体に敷き詰める。スクロールも可能。
  • Miyako Extension。MessageBox。ひともじずつ。ルパンのタイトルぽく。
  • 次リリースからしばらくバージョンアップとまりそう。ゲームをつくってみたい。るびまにも記事。もうすぐでるとか。

ライトニングトークRuby on Google SkechUP by 兼重さん

  • Google SkechUPって何? @Last社から販売されているお手軽建築パーズ作成ソフト。業務用だったので高い。Googleが買収。Google SkechUP公開へ。
  • Rubyとの関係。SkechUP5からPlugin APIとしてRubyインターフェースが実装された。@Last公式サイトにフォーラムがある。
  • デモ。簡単に3Dお絵描きができる。
  • コンソール。irbぽい。pluginフォルダにある.rbファイルにメソッドを書いでおけば楽に呼出せる。PureImage。テクスチャ作って貼り付け。
  • Rubyスクリプトでやった作業もUNDOできる。Officeもbegin undo?で囲めばできる?
  • Rubyで3Dモデルをエクスポートするpluginがあるらしい。
  • メニューに追加してRubyスクリプト呼出すこともできる。ツールバーもできる。

その他

  • よかったこと(Keep)、悪かったこと(Probles)、次回に向けての改善案(Try)を使って省みるのはいいな。僕も積極的に使っていこう。

16:00前に勉強会を抜けました。かずひこさんの初級レッスン、懇親会は残念ながらパス。