mieki256's diary



2013/12/04(水) [n年前の日記]

#1 [ruby] Rubyをアップデート

アップデートなのかアップグレードなのか分からないけど。

最近 Ruby を全然使ってないなと。ちょっと触ってみようかなと。しかしその前に、使ってる Ruby その他が古くなってたりしないかなと気になってきて。今まで Ruby 1.9.3 p429 を入れてたけれど、p484 が公開されてたので、この際最新版に、みたいな。

でも、どうやってアップデートしたらいいのやら。

Rubyのインストール方法はあちらこちらで丁寧に説明されてるけど。アップデート方法は、ググっても情報が出てこない。実は初心者泣かせな部分だったりしないのかなコレ。ていうか自分、何年間、初心者レベルのままなんだか。まあ、時々思い出したように触ってるレベルなので…。

ちなみに環境は Windows7 x64。 _RubyInstaller for Windows を使っていたり。

よく分からないけど、とりあえず、rubyinstaller-1.9.3-p484.exe を実行して上書きインストールをしてみたり。

一応、ruby -v で表示されるバージョンは最新版になったように見える。コレで問題は起きないのだろうか…。どうなんだろ…。

ついでに、Ruby 2.0.0 もインストールしてみたり。rubyinstaller-2.0.0-p353.exe をDLして実行。

DevKit も入れなきゃいけないけど、コレは Ruby 1.9.x 以下と 2.0.x 以上で、別のモノを入れないといけないらしい。
Ruby の複数バージョンの切り替えには、pik を使用。以下の記事が参考になりそう。

_Rubyアソシエーション: 複数のRuby環境の構築

#2 [ruby] Ruby 2.0.0 + Rubygems で色々インストールしていったけど色々問題が

環境は、Windows7 x64。

unable to convert って何だろ。 :

gem install 〜 で色々インストールしてみたけど。unable to convert なるメッセージがズラズラ出てきて。コレ、どうすればいいんだろう…。Windows環境だからこうなるのかな? *.so をどうこうする際に出ているようでもあり。
chcp 65001 でDOS窓をUTF-8にすると改善するという話も見かけたけど、試してみても効果無し。うーん。

ライブラリがまだ揃ってないみたい。 :

wxRuby や Ruby/SDL 等、Ruby 2.0用の .gem が無くて、どうしようかなと。

なんだか、Ruby も Python と同じ状況になってるような。あちらも、各ライブラリが Python 3.x に対応してくれない問題があって…。

Ruby の解説ページでは、「安定版は、2.0.0」「これから使うなら、2.0.0」という話になってるみたいだけど。ライブラリが追従してこないのではな…。自分はよく知らないんだけど、おそらく Rails なるソレさえ対応してれば他はイラネ、てな人が多いから、そういう話になっちゃうのかなと想像したり。

いや、考えてみたら、仮に現状では使い物にならないとしても、「安定版は2.0.0」と言っておかないと、各ライブラリの作者さんも対応しようという気にならないのか…。そのあたりの扇動(?)って、なんだか大変だなあ。

昔書いたスクリプトソースが、現行版ではライブラリが無いから動かない、とか、ちょっと悲しい…。でも、互換性ばかり気にして言語の改善が停滞しちゃったらソレもソレでアレだし。そのあたりの舵取りって、色々と難しそう。頭が下がります。

Ruby/SDLのインストール作業を試してみたけどやっぱりダメだった。 :

Ruby 2.0.0 上で gem install rubysdl-mswin32-1.9 を試してみたら、スルスル入ったように見えたので期待してしまったり。

途中で「install_rubysdl.bat を実行してdllをコピーせよ」と言ってくる。install_rubysdl.bat は、Ruby 2.0.0 インストールフォルダ\bin\ 以下にコピーされてるので、そのまま実行できるはず…。と思いきや、実行するとエラーが出て。

仕方ないので、Ruby 2.0.0インストールフォルダ\lib\ruby\gems\2.0.0\gems\rubysdl-mswin32-1.9-2.1.1.1\ をカレントフォルダにして、ruby install_rubysdl.rb を実行。dll が、あちこちにコピーされた。

これで Ruby/SDL が使えるようになったかなと思ったけれど、既存のスクリプトを実行しようとすると「モジュールが見つかりません」と怒られた。やっぱり、Ruby 1.9 用のソレを Ruby 2.0 に入れるなんて無茶でしたか…。

もしかして gem instal rubysdl で行けちゃったりしないかな? …ダメだった。エラーが出る。

結論。Ruby 2.0.0 上で、Ruby/SDL は使えません。 :

現行版の Ruby では Ruby/SDL は使えないみたいです。

Windows + Ruby 2.0.0 上で Ruby/SDL が動かないということは…。SDLを使ってるらしい、 _MyGame、Miyako、StarRuby等、Rubyで使える2Dゲームライブラリもほぼ全滅 じゃないかな…。 *1

つまり現時点では、Windows上で Ruby 2.0.0 を使って2Dゲームを作ろうとしたら DXRuby 一択、ですね。

しかし、DXRuby は DirectX を使うライブラリなので、Windows上でしか動かない。ということは、Mac や *NIX では、Ruby 2.0.0 を使って2Dゲームは作れない、ということに。

かと思いきや。Mac + Ruby 2.0.0 なら Ruby/SDL が動いてるみたいで。えー。なんでー。Windows だけ置いてけぼりかよ…。まあ、あっちは BSD文化圏、かつ、SDL か OpenGL しか頼れるモノがないから、対応せざるを得ないのかしら。

何にせよ、Ruby 2.0.0 は色々と厳しいなと思いました。当面、Ruby 1.9.3 を使おうかなと。

Ruby 2.0.0 は、初心者が使うバージョンではない、ということですかね…。「このライブラリ、なんだか面白そう」と興味を持った際、Ruby 2.0.0 だと無駄にハマるから、使わない方がヨサゲ。初心者なら、「これからは 2.0.0 がオススメ」なんて言葉に耳を傾けちゃいけない。勉強用には枯れてるバージョンを使いましょう。と、言ってしまっていいのかもしれないなと。

もしかして、こういう話を、DXRuby Advent Calendar とやらで書けばネタになったのだろうか…。でも、DXRuby とは微妙にずれた話かな…。

*1: StarRuby は独自にSDLを使ってる・Ruby/SDLのラッパーではなかったと思うけど。どのみち更新は止まってるし。

#3 [prog] NetBeans IDE 7.4 をインストールしたのだけれど

プラグインを更新したら、メニュー等が英語表記になってしまった…。どうすれば日本語化できるのだろう…。

Pythonに対応させるプラグインをインストールした際に、他のプラグインもごっそり更新してしまったのが原因っぽい。Python のソレだけをインストールした後で、Python 用のURLを無効にしておけば大丈夫っぽい。NetBeansの日本語環境用プラグインは、日本語環境用のURLを見て更新があるかどうか調べるようで、そこに Python のソレを追加しちゃったから、英語環境用のURLを見ちゃったのではないか、と想像。

一応インストール手順についてメモ。 :

環境は、Windows7 x64。

_Welcome to NetBeans から辿って、 _NetBeans IDE ダウンロード に。今回は「すべて」の版を選択。netbeans-7.4-windows.exe をDLした。

netbeans-7.4-windows.exe を実行すると、何をインストールして何をインストールしないかが選べる。「カスタマイズ」ボタンを押して…自分の場合は、「Java EE」「Java ME」「Java Card〜」「C/C++」は使いそうにないので、そこはチェックを外した。他は試用してみたくなるかもしれないから入れておく。

Ruby用のプラグインをインストール。 :

公式では既にサポートされてないけど、一応今もメンテナンス?されてるらしい。ありがたや。

以下のページで解説されてたので、参考にして作業。

_NetBeans 7.4にRuby on Railsプラグインをインストールする手順 - Rails 雑感 - Ruby on Rails with OIAX
_NetBeans 7.3にRuby on Railsプラグインをインストールする手順 - Rails 雑感 - Ruby on Rails with OIAX

_Ruby and Rails - NetBeans Plugin detail から、NetBeans 7.4 を選んで、Download。今回は 1385326848_archive.zip というファイルがDLできた。コレを解凍しておく。

NetBeans 7.4 上で、ツール → プラグイン → ダウンロード済み → プラグインの追加 → 先ほど解凍したファイル内の updates\ 以下の *.nbm と *.jar を全部追加、してインストール。NetBeans の再起動が求められるので再起動。

新規プロジェクトを作る際に「Ruby」という項目が選べるようになるはず。

使用するRubyは、ツール → Ruby Platforms で設定できる。標準では JRuby しか入ってないので、自分の環境に入っている ruby.exe を追加していく。

デバッガに、Fast Debugger (ruby-debug-ide) てのを選べるとナイスなのだけど…。Rub 1.8.7 は ruby-debug-ide が、Ruby 1.9.3 は ruby-debug-ide19 があるので、gem だか Rubygems だかでインストールできるのだけど。Ruby 2.0.0 は、あるのだかないのだか分からなくて。困った。まあ、 Ruby 1.9.3 を使い続ければいいのですけど…。

ちなみに、Ruby 1.9.3 で ruby-debug* をインストールする際は、一部の gem をローカルにDLして、ソレをインストールしないとハマる用で…。以下のページが参考になりそうです。

_Windows7でRails3 + NetBeans + デバッガー が動かない - 同じにやっても動かない
_Aptana StudioでRubyをデバッグ | もっとクールにプログラミング

Python用のプラグインをインストール。 :

Pythonプラグインも、現在の NetBeans では公式サポートから除外されてるらしいのですが。以下のページを参考にして作業。ありがたや。

_おべんきょーぶろぐ: Netbeans7.3でpythonの環境を整えてみる
_Python in NetBeans IDE 7.3 (Geertjan's Blog)

NetBeans 上で、ツール → プラグイン → 設定 → 追加、で、
http://deadlock.netbeans.org/hudson/job/nbms-and-javadoc/lastStableBuild/artifact/nbbuild/nbms/updates.xml.gz
を登録すると、使用可能なプラグインの中に python という項目が出てくるのでソレだけにチェックをしてインストール。必要とするプラグインも2つ3つ出てくるけど、ソレもインストール。

この作業をすると、更新可能なプラグインも大量にリストアップされるけど、それらをインストールすると NetBeans がおかしくなるので入れない。おかしくなるというか、英語版の NetBeans になってしまうみたいで。

Python用のプラグインだけインストールできたら、すぐに、上記のURLを無効にしておく。

新規プロジェクトを作る際に、python の項目が増えているはず。

デフォルトエンコーディングをUTF-8にしておいた。 :

_NetBeansの文字コードをUTF-8に設定する | 初心者に優しいWPカスタマイズ を参考に、 etc\netbeans.conf をエディタで開いて、netbeans_default_options に、-J-Dfile.encoding=UTF-8 を追加しておいた。

Google Chrome上にも拡張をインストール。 :

_"Web開発ツールを使いこなせ!"クリエイターの道具箱 (5) NetBeans 7.3を使ったWeb開発 | マイナビニュース という記事によると、NetBeans と Google Chrome を連携することができるらしくて。NetBeans Connector なる拡張を Google Chrome にインストールしておくといいらしい。もしかすると、Adobe Brackets みたいなことができるのかな…?

とりあえず、htmlファイルを保存するたびに Google chrome 上での表示が更新されることは確認できた。

NetBeans 上でのHTMLタグ入力も、イイ感じなのかもしれない。補完が効くし…。いや、操作の仕方はよく分からないんだけど。候補が出てきたらTABキーを押していけばいいのだろうか。何回か押さないといけないように見えるあたり、よく分かってなかったり。

#4 [dxruby][game] DXRubyでインチキ多関節を試してみる

DXRuby Advent Calendar という企画の話を聞いて、自分が書けそうなネタなんてあるのかなと悩んでしまったわけですが。Ruby や DXRuby については初心者なので書けないとしても、アクションゲームのソレなら書けるのかな…と思えてきたり。

とりあえず、DXRuby Advent Calendar 云々とは全然関係なく、そういうのをちょこちょこ書いて、その手の記事を書く練習をしてみようかなと。

ということで。ふと思いついたネタとして、インチキ多関節とかどうだろうと。見た目は多関節キャラっぽいけど、内部処理は多関節なの? なんか違うんじゃないの? でも、見た目がソレっぽいから別にコレでもいいか、みたいなソレ。

もちろん、使用言語・使用ライブラリは、Ruby + DXRuby を使います。

まず、根っこから先っぽまで、複数のスプライトを使って、一直線に繋ぐことを試してみましょうかね…。
# インチキ多関節その1
# 根元と先っぽを等間隔で繋いでみる

require 'dxruby'

img = Image.load("ufo.png")

Window.loop do
  break if Input.keyPush?(K_ESCAPE)

  # 根元
  bx = 0
  by = Window.height / 2

  # 先っぽ。マウスカーソル座標を取得
  tx = Input.mousePosX
  ty = Input.mousePosY

  nmax = 32    # 32個のスプライトで繋ぐ
  dw = tx - bx
  dh = ty - by
  nmax.times do |i|
    x = bx + (dw * i / nmax) - img.width / 2
    y = by + (dh * i / nmax) - img.height / 2
    Window.draw(x, y, img)
  end
end
一直線にただ繋いでみた


このままだと見た目がつまんないですよね。各関節?のy座標に、sin値を足して、少し形を変えてみましょうか。
# インチキ多関節その2
# 各関節のy座標に、sin値を足してみる

require 'dxruby'

img = Image.load("ufo.png")

Window.loop do
  break if Input.keyPush?(K_ESCAPE)

  # 根元
  bx = 0
  by = Window.height / 2

  # 先っぽ
  tx = Input.mousePosX
  ty = Input.mousePosY

  nmax = 32
  dw = tx - bx
  dh = ty - by
  deg = 0
  
  # sin値に掛ける値。sin値は -1.0〜1.0 の値なのでそのままだと小さ過ぎる
  h = 100
  
  nmax.times do |i|
    x = bx + (dw * i / nmax) - img.width / 2
    y = by + (dh * i / nmax) - img.height / 2
    y += h * Math.sin(deg * Math::PI / 180.0) # sin値を足してる
    Window.draw(x, y, img)
    deg += 30
  end
end
sin値をy座標に足してみた


全然動かないのもつまんないですわな…。根元に与えるsin値の角度をずらしてみましょう。1フレーム毎に、10度ずつ足してみることにします。
# インチキ多関節その3
# 根元に加えるsin値の角度を毎フレームずらしてみる

require 'dxruby'

img = Image.load("ufo.png")

# 根元に加えるsin値の角度
startdeg = 0

Window.loop do
  break if Input.keyPush?(K_ESCAPE)

  # 根元
  bx = 0
  by = Window.height / 2

  # 先っぽ
  tx = Input.mousePosX
  ty = Input.mousePosY

  nmax = 32
  dw = tx - bx
  dh = ty - by
  deg = startdeg
  h = 100
  nmax.times do |i|
    x = bx + (dw * i / nmax) - img.width / 2
    y = by + (dh * i / nmax) - img.height / 2
    y += h * Math.sin(deg * Math::PI / 180.0)
    Window.draw(x, y, img)
    deg += 15
  end

  startdeg += 10   # 根元の角度を毎フレーム増やす
end
根元のsin値の角度を毎フレーム変えてみる


イイ感じの動きになってきましたけど…根元がグングンと上下に動いちゃうのが気に入らない…。根元から、先っぽまで、少しずつsin値の幅を変化させていくことにしましょうか。
# インチキ多関節その4
# 各関節に加えるsin値の幅を変えてみる

require 'dxruby'

img = Image.load("ufo.png")
startdeg = 0

Window.loop do
  break if Input.keyPush?(K_ESCAPE)

  # 根元
  bx = 0
  by = Window.height / 2

  # 先っぽ
  tx = Input.mousePosX
  ty = Input.mousePosY

  nmax = 32
  dw = tx - bx
  dh = ty - by
  deg = startdeg
  h = 100
  nmax.times do |i|
    x = bx + (dw * i / nmax) - img.width / 2
    y = by + (dh * i / nmax) - img.height / 2
    hh = h * i / nmax  # 幅を少しずつ大きくしていく
    y += hh * Math.sin(deg * Math::PI / 180.0)
    Window.draw(x, y, img)
    deg += 15
  end

  startdeg += 10
end
根元は動かないようにしてみる


うむ。なんとなく、コイツをムチで倒してやりたい気分になってきたぞ。後はムチ男を作るだけ。なんちてぽっくん。

とまあ、こんな感じに、たったコレだけのスクリプトソースを書くだけで、サクサクと動きを試せてしまうところが、DXRuby のいいところじゃないかなと自分は思っているのでした。気軽に実験できるあたりが、実にイイ感じです。

ソースと画像は、ここに置いときますね。Public Domainってことで。

_inchiki_takansetsu.zip

明日も何か書いてみよう…。練習練習…。

以上、1 日分です。

過去ログ表示

Prev - 2013/12 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project