Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2011-06-26

#railshachathon ふりかえり

来週のYokohama.rbの懇親会でふりかえりをやるという提案もあったけど、帰りの電車でさくっとふりかえった。 ただし一部の具合の悪くなった人たちは不参加。

keep

  • mと@watarumの参加
  • 運営
    • 段取り
  • minamiの人たちと交流できた
  • ファウンダー同士の交流。hubだから
  • 日本酒がうまかった
  • 山喜
    • 回線
    • 畳の匂いが良かった
    • 一階はいろいろキレイ
    • 海近
  • プロジェクタがあった
  • 品評会の場所が調度良かった
  • 13時入りは時間が確保できた

problem

  • 募集を分けたのは?
  • 連絡がゆきとどかなかった?
  • 成果物の実用性が?
  • 電源タップ
  • たぶん部外者が #railshackathon で不謹慎なツイートをしてた

try

  • 次をやりたい
  • 新しい人たちを呼びたい
  • 第何回が参加のハードルを高くしてる
  • 毎回が第1回
  • 初めてでも楽しめます、と書く
  • 時間を長く
  • みんな一緒の部屋で
  • ひとりチームをやってみたい
  • 足りないとかない決算の方法を考える
2011-06-19

bundlerでgemを作ってみる

昨日のYokohama.rbで#railshackathonに向けたアイデアソンでいろいろ話してたら 新しいブログシステムのメージが具体化してきた。

実装はbilbo以上に小さくできそうな気がしているので、もうアイデアをメモするよりもメモがわりにプロジェクトを立ち上げてしまっていいかなと。

で、どうせだから今回はgem化してみよう。

以前@jugyoに教えてもらったjewelerを使ってみようかなと思ったけど、gem作成においてより後発のbundlerを使ってみることにする(thx @takkanm @nagachika)。

雛形の作成

gem install bundler

新しいgem化するプロジェクト名をpipinとすると、

bundle gem pipin

これでpipin gemの雛形ができる。

=>
      create  pipin/Gemfile
      create  pipin/Rakefile
      create  pipin/.gitignore
      create  pipin/pipin.gemspec
      create  pipin/lib/pipin.rb
      create  pipin/lib/pipin/version.rb

Hello Pipin

ひな形として作成されたlib/pipin.rbに"Hello Pipin!"の表示を追加する。

module Pipin
  # Your code goes here...
  puts 'Hello Pipin!'
end

それとpipin.gemspecのTODO(2箇所)を書き換えてbuildする(TODOという文字列が残っているとbuildできない)。

rake build
=> pipin 0.0.1 built to pkg/pipin-0.0.1.gem

gemファイルが作れた模様。

gem install

次のようにbuildで作成されたpkg/*.gemファイルを直接指定したらインストールできた。

gem install pkg/pipin-0.0.1.gem

実行してみる。

ruby -r pipin -e ''
=> Hello Pipin!

うまくいった!

RubyGems.orgで公開

pipin.gemspecの s.authorsとs.emailをRubyGems.orgに作成したアカウントに合わせてbuildした上で、

gem push pkg/pipin-0.0.1.gem

でOK。

githubへ

githubのDashboardのNew Repositryでリポジトリを作成し、そのあと表示される以下のヘルプの手順でOK。

Existing Git Repo?
  cd existing_git_repo
  git remote add origin git@github.com:dan5/pipin.git
  git push -u origin master
2011-06-10

oink雑談

今回は全然メモとれなかった。 あるプロジェクトのドラフト見せてもらって、あとはずっとデザイン哲学についての話しをしていた。

  • 千駄ヶ谷のコーヒーはハウスブレンドだった
2011-06-07

MacにCoffeeScriptをインストール

手順

  1. nvmをインストール ... nvmはnode.jsのrvm
  2. nvmでnode.jsをインストール
  3. npmでcoffee-scriptをインストール
  4. 環境設定(未解決)
  5. Hello World

nvmとnode.jsのインストール

gitはインストール済み。

git clone git://github.com/creationix/nvm.git ~/.nvm
. ~/.nvm/nvm.sh
setopt no_nomatch
nvm sync
nvm install v0.4.8

最後のnvm installでnode.jsの0.4.8をインストールしている。

以下は上記にたどりつくまでの試行錯誤のログ。

git clone git://github.com/creationix/nvm.git ~/.nvm
. ~/.nvm/nvm.sh
nvm sync
nvm install latest

としたら、installのところで以下のようなメッセージが出てうまくいかない。

nvm_version:27: no matches found: v*.*.*
nvm:40: no matches found: -#
nvm: install N/A failed!

zshのときは以下を実行するといいらしい。

setopt no_nomatch

ここで改めてもう一度、

nvm sync

うまく行った模様。 さっきまで出ていた以下のようなメッセージが消えた。

nvm_version:27: no matches found: v*.*[02468].*
nvm_version:27: no matches found: v*.*.*

改めて、

nvm install latest

を実行。がしかし、

nvm: install N/A failed!

と言われて止まってしまう。

nvm ls で最新版を調べて、

nvm install v0.4.8

としたら無事インストールできた。

CoffeeScriptのインストール

npm install coffee-script

環境設定

まだこの作業は未完了。

ログイン後、以下でnvmが使えるようになる。

. ~/.nvm/nvm.sh

さらにuseコマンドでバージョン指定。

nvm use v0.4.8

これでnodeが使えるようになる。

coffeeコマンドは以下にある。

.npm/coffee-script/1.1.1/package/bin

毎回直接呼ぶのは面倒なわけだけど、 どうしたものやら(未解決)。

とりあえず毎回以下を実行してしのぐことにする。

. ~/.nvm/nvm.sh
nvm use v0.4.8
alias coffee='~/.npm/coffee-script/1.1.1/package/bin/coffee'

Hello World

以下の内容でhello.coffeeを作成する。

hello = ->
    console.log("Hello World!")

hello()

以下で実行。

coffee hello.coffee

jsファイルを生成する場合は-cを使う。

coffee -c hello.coffee
node coffee.js
2011-06-05

[アイデア]いま改めて静的なブログシステムを採用してはどうか

新しいblog環境案について考える。

ふりかえり

いまのblog環境の不満点。

  • 重い
    • SinatraをCGIで動かしているから
  • システムを全然メンテできてない
  • 大量の写真を気軽に扱いたい

いいところとしては、

  • 記事の投稿が楽。
    • ローカルのdraft.txtに記事を書いて(複数エントリも書ける)、make updateするだけ

かな。いいところは他にもあるんだろうけど特には思い浮かばない。

静的か動的か

さて。

まず最大の不満点は重いことなのだけど、これはCGIで無理やり動かすから遅いわけで、ふつうにサーバー起動させれば負荷はほぼゼロにできる。しかし、今使っているさくらのプランではサーバー起動が禁止されているし、ブログのために新たなサーバー環境を用意するのもどうかなと思っている。

そもそもなんでblogを動的なシステムにしてるんだろうか。静的なシステムじゃだめだろうか。

静的なシステムでも、新しい記事をアップするたびに毎回ブログ全体を構築し直せば、今と同じUIを実現できるはず。動的でなければ成り立たない仕組みは今は使ってない。全体を再構築しなければならない理由は、「前の5件」で順々にページをめくる機能があるからだ。これはカテゴリ表示のときも同じ。

いっそのこと記事単体のhtmlとそのファイル名のリストをサーバー側に置いて、あとはブラウザ側のJavaScriptでUIを構築すればいいじゃんって考えたんだけど、そうするとJavaScriptが不十分な環境だと記事がひとつも読めなかったり、SEO的に問題がでそう…。

もろもろ含めて見えてくるのは、基本静的で一部JavaScriptを使って動的に見せるというラインかな。JavaScriptが動作しない環境では人間にとって便利な一部のUIがなくなる感じ。この場合CGIや動的な仕組みは一切なし。ただしrssの生成等にcronを使う。

静的なhtmlベースでの運用は、なんといっても安心感がある。運用コストも低い。

システムのメンテを楽にしたい

Sinatraにしてもそれなりに進化の速度が早いので、便利な半面、最新版追従の作業がしばしば発生する。

これも静的にしたい理由のひとつで、静的なhtmlの生成の方がシンプルで外部ライブラリへの依存度も減る。動的にhtmlを生成しないのであれば、haml等のテンプレートエンジンだけあればいい。

tumblrとか使ってみたら?

外部のblogサービスを使う手についても考えるんだけど、なかなか踏み切れない。

さがしあたってのネックは写真。新しいシステムでは、たくさんの写真を手軽に扱いたいのだけど、既存サービスの上に乗せようとすると容量その他で制約がでてきそう。

トラックバックやコメント機能

今のシステムでは最初からトラックバックを捨てている。今後もいらない。

コメント機能がほしいかは微妙なんだけど、メンテが面倒なのでない方がいいかな。返事を書くの苦手だし。 関連ツイートとかブックマークコメントを表示するブラウザ動作の機能ならあってもいいかもしれない。

2011-06-03

oink雑談

ほぼ週に一度、株式会社oinkgamesの事務所でテーマを決めずに雑談をしている。 今日で4回目かな。

以下てきとーな議事ログ。

  • オレ遅刻
    • 手土産に3本のコーラ
    • 世界で売れるのはお茶じゃなくてコーラ
    • アメリカのお茶は甘い。炭酸入り
    • 「oinkはコーラじゃないですよ」
  • iPadの対戦ゲームでみんなで遊ぶ
    • 音と絵が合ってない?
    • 面白いけど売れてないんだろうなー
  • iPadウォーリーのゲーム
    • 対戦の画面の向きがダメ
  • iPad牽引ビームのゲーム
    • 慣れてくると面白そう
  • iPhoneアプリを売る
    • 面白いけどぜんぜん売れてなさそう
    • 日本のサイトは有名なゲームを紹介するけど、海外のサイトは「オレこんなのみつけたぜ」的なノリ
  • 子供用アプリを紹介するブログがない
    • ひどいアプリ。アイテム課金になっててエサとかを勝手に買えちゃう?
    • いや、15分とか過ぎれば認証がかかる
    • 設定自体によっては?
    • 海外の子供向けアプリはえげつない。のがある
    • 子供向けアプリに広告とか課金ボタンが出てほしくない

以下、iPadの話題かな。

  • よくできた子供向けアプリ
  • 今日の残念アプリ
    • 同期していない。可能性はある
    • はしに次のページボタンがあるといいのに
  • もりかわさんのアプリ
    • 間がいい
    • とてもよくできてる
  • 子供向けじゃないけど子どもが何時間でも遊べそうなアプリ
  • バランスを取るゲーム
    • ここできくちさん(でざいな)登場
    • 最長のハマり
    • 鳥がなあ。鳥がきついよ
    • 雪だるまが溶けてる!
    • こうなってきたら最後がみたい
    • おっさんでた!